﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Mastering Uniswap V3: Advanced Strategies for Exchange Pool Liquidity (Part 1)</title>
  <id>~/topic/25630/mastering-uniswap-v3-advanced-strategies-for-exchange-pool-liquidity-(part-1)/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-09T13:16:31Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=25630" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/79894/</id>
    <title type="text">NonfungiblePositionManager Contract in Uniswap V3 When we add liquidity to the Uniswap V3 liquidity ...</title>
    <published>2024-03-26T09:17:00Z</published>
    <updated>2024-03-26T09:17:00Z</updated>
    <author>
      <name>FMZQuant</name>
      <uri>https://stocksharp.com/users/185759/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;b&gt;NonfungiblePositionManager Contract in Uniswap V3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;When we add liquidity to the Uniswap V3 liquidity pool (trading pair pool), the NonfungiblePositionManager contract returns a minted NFT to us as proof of the liquidity addition.&lt;br /&gt;&lt;br /&gt;The first step is to use the router contract to get the address of the corresponding NonfungiblePositionManager contract, and then use the balanceOf method of the NonfungiblePositionManager contract to get the number of position NFTs for the specified wallet address.&lt;br /&gt;&lt;br /&gt;Then use the tokenOfOwnerByIndex method to get the tokenId of these position NFTs, with these tokenId, you can use the positions method to continue to query the specific details of these positions.&lt;br /&gt;&lt;br /&gt;The following test code:&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;// Uniswap ABI&lt;br /&gt;const ABI_UniswapV3Router = `[{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;_factoryV2&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;factoryV3&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;_positionManager&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;_WETH9&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;nonpayable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;constructor&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;WETH9&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;approveMax&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;approveMaxMinusOne&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;approveZeroThenMax&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;approveZeroThenMaxMinusOne&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;data&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;callPositionManager&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;result&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;paths&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes[]&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint128[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amounts&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128[]&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;maximumTickDivergence&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;secondsAgo&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;checkOracleSlippage&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;path&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;maximumTickDivergence&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;secondsAgo&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;checkOracleSlippage&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;components&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;path&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountIn&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountOutMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;internalType&amp;quot;:&amp;quot;struct IV3SwapRouter.ExactInputParams&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;params&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;tuple&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;exactInput&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountOut&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;components&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenIn&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenOut&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;fee&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountIn&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountOutMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint160&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;sqrtPriceLimitX96&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint160&amp;quot;}],&amp;quot;internalType&amp;quot;:&amp;quot;struct IV3SwapRouter.ExactInputSingleParams&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;params&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;tuple&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;exactInputSingle&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountOut&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;components&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;path&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountOut&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountInMaximum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;internalType&amp;quot;:&amp;quot;struct IV3SwapRouter.ExactOutputParams&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;params&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;tuple&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;exactOutput&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountIn&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;components&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenIn&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenOut&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;fee&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountOut&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountInMaximum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint160&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;sqrtPriceLimitX96&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint160&amp;quot;}],&amp;quot;internalType&amp;quot;:&amp;quot;struct IV3SwapRouter.ExactOutputSingleParams&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;params&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;tuple&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;exactOutputSingle&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountIn&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;factory&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;factoryV2&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;getApprovalType&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;enum IApproveAndCall.ApprovalType&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint8&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;nonpayable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;components&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0Min&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1Min&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;internalType&amp;quot;:&amp;quot;struct IApproveAndCall.IncreaseLiquidityParams&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;params&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;tuple&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;increaseLiquidity&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;result&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;components&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;fee&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;int24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tickLower&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;int24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tickUpper&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0Min&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1Min&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;internalType&amp;quot;:&amp;quot;struct IApproveAndCall.MintParams&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;params&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;tuple&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;mint&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;result&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;previousBlockhash&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;data&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes[]&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;multicall&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes[]&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;deadline&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;data&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes[]&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;multicall&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes[]&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;data&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes[]&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;multicall&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;results&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes[]&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;positionManager&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;value&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;pull&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;refundETH&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;value&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;deadline&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint8&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;v&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint8&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;r&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;selfPermit&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;nonce&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;expiry&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint8&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;v&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint8&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;r&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;selfPermitAllowed&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;nonce&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;expiry&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint8&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;v&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint8&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;r&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;selfPermitAllowedIfNecessary&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;value&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;deadline&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint8&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;v&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint8&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;r&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;selfPermitIfNecessary&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountIn&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountOutMin&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;path&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address[]&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;to&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;swapExactTokensForTokens&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountOut&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountOut&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountInMax&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;path&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address[]&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;to&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;swapTokensForExactTokens&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountIn&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;sweepToken&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;sweepToken&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;feeBips&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;feeRecipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;sweepTokenWithFee&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;feeBips&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;feeRecipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;sweepTokenWithFee&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;int256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0Delta&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;int256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1Delta&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;_data&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;uniswapV3SwapCallback&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;nonpayable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;unwrapWETH9&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;unwrapWETH9&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;feeBips&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;feeRecipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;unwrapWETH9WithFee&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;feeBips&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;feeRecipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;unwrapWETH9WithFee&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;value&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;wrapETH&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;receive&amp;quot;}]`&lt;br /&gt;const ABI_NonfungiblePositionManager = `[{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;_factory&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;_WETH9&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;_tokenDescriptor_&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;nonpayable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;constructor&amp;quot;},{&amp;quot;anonymous&amp;quot;:false,&amp;quot;inputs&amp;quot;:[{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;owner&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;approved&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;Approval&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;event&amp;quot;},{&amp;quot;anonymous&amp;quot;:false,&amp;quot;inputs&amp;quot;:[{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;owner&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;operator&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;indexed&amp;quot;:false,&amp;quot;internalType&amp;quot;:&amp;quot;bool&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;approved&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bool&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;ApprovalForAll&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;event&amp;quot;},{&amp;quot;anonymous&amp;quot;:false,&amp;quot;inputs&amp;quot;:[{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;indexed&amp;quot;:false,&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;indexed&amp;quot;:false,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;indexed&amp;quot;:false,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;Collect&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;event&amp;quot;},{&amp;quot;anonymous&amp;quot;:false,&amp;quot;inputs&amp;quot;:[{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;indexed&amp;quot;:false,&amp;quot;internalType&amp;quot;:&amp;quot;uint128&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;liquidity&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128&amp;quot;},{&amp;quot;indexed&amp;quot;:false,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;indexed&amp;quot;:false,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;DecreaseLiquidity&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;event&amp;quot;},{&amp;quot;anonymous&amp;quot;:false,&amp;quot;inputs&amp;quot;:[{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;indexed&amp;quot;:false,&amp;quot;internalType&amp;quot;:&amp;quot;uint128&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;liquidity&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128&amp;quot;},{&amp;quot;indexed&amp;quot;:false,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;indexed&amp;quot;:false,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;IncreaseLiquidity&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;event&amp;quot;},{&amp;quot;anonymous&amp;quot;:false,&amp;quot;inputs&amp;quot;:[{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;from&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;to&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;indexed&amp;quot;:true,&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;Transfer&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;event&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;DOMAIN_SEPARATOR&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;PERMIT_TYPEHASH&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;WETH9&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;to&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;approve&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;nonpayable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;owner&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;balanceOf&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;baseURI&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;string&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;pure&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;burn&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;components&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint128&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0Max&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint128&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1Max&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128&amp;quot;}],&amp;quot;internalType&amp;quot;:&amp;quot;struct INonfungiblePositionManager.CollectParams&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;params&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;tuple&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;collect&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;fee&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint160&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;sqrtPriceX96&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint160&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;createAndInitializePoolIfNecessary&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;pool&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;components&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint128&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;liquidity&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0Min&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1Min&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;deadline&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;internalType&amp;quot;:&amp;quot;struct INonfungiblePositionManager.DecreaseLiquidityParams&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;params&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;tuple&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;decreaseLiquidity&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;factory&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;getApproved&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;components&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0Desired&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1Desired&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0Min&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1Min&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;deadline&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;internalType&amp;quot;:&amp;quot;struct INonfungiblePositionManager.IncreaseLiquidityParams&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;params&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;tuple&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;increaseLiquidity&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint128&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;liquidity&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;owner&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;operator&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;isApprovedForAll&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bool&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bool&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;components&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;fee&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;int24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tickLower&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;int24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tickUpper&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0Desired&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1Desired&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0Min&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1Min&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;deadline&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;internalType&amp;quot;:&amp;quot;struct INonfungiblePositionManager.MintParams&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;params&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;tuple&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;mint&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint128&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;liquidity&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;data&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes[]&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;multicall&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes[]&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;results&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes[]&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;name&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;string&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;ownerOf&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;spender&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;deadline&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint8&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;v&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint8&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;r&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;permit&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;positions&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint96&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;nonce&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint96&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;operator&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;fee&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;int24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tickLower&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;int24&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tickUpper&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;int24&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint128&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;liquidity&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;feeGrowthInside0LastX128&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;feeGrowthInside1LastX128&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint128&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokensOwed0&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint128&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokensOwed1&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint128&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;refundETH&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;from&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;to&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;safeTransferFrom&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;nonpayable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;from&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;to&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;_data&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;safeTransferFrom&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;nonpayable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;value&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;deadline&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint8&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;v&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint8&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;r&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;selfPermit&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;nonce&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;expiry&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint8&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;v&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint8&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;r&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;selfPermitAllowed&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;nonce&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;expiry&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint8&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;v&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint8&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;r&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;selfPermitAllowedIfNecessary&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;value&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;deadline&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint8&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;v&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint8&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;r&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes32&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;s&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes32&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;selfPermitIfNecessary&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;operator&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bool&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;approved&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bool&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;setApprovalForAll&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;nonpayable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bytes4&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;interfaceId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes4&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;supportsInterface&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;bool&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bool&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;token&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;sweepToken&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;symbol&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;string&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;index&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;tokenByIndex&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;owner&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;index&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;tokenOfOwnerByIndex&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;tokenURI&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;string&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;string&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[],&amp;quot;name&amp;quot;:&amp;quot;totalSupply&amp;quot;,&amp;quot;outputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;stateMutability&amp;quot;:&amp;quot;view&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;from&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;to&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;tokenId&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;transferFrom&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;nonpayable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount0Owed&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amount1Owed&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;bytes&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;data&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;bytes&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;uniswapV3MintCallback&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;nonpayable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;inputs&amp;quot;:[{&amp;quot;internalType&amp;quot;:&amp;quot;uint256&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amountMinimum&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;uint256&amp;quot;},{&amp;quot;internalType&amp;quot;:&amp;quot;address&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;recipient&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;address&amp;quot;}],&amp;quot;name&amp;quot;:&amp;quot;unwrapWETH9&amp;quot;,&amp;quot;outputs&amp;quot;:[],&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;function&amp;quot;},{&amp;quot;stateMutability&amp;quot;:&amp;quot;payable&amp;quot;,&amp;quot;type&amp;quot;:&amp;quot;receive&amp;quot;}]`&lt;br /&gt;const ABI_Pool = &amp;#39;[{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;constructor\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;owner\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickLower\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickUpper\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;Burn\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;owner\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;recipient\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickLower\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickUpper\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;Collect\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;sender\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;recipient\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;CollectProtocol\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;sender\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;recipient\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;paid0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;paid1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;Flash\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint16\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;observationCardinalityNextOld\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint16\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint16\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;observationCardinalityNextNew\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint16\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;IncreaseObservationCardinalityNext\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint160\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;sqrtPriceX96\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint160\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tick\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;Initialize\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;sender\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;owner\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickLower\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickUpper\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;Mint\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint8\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeProtocol0Old\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint8\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint8\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeProtocol1Old\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint8\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint8\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeProtocol0New\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint8\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint8\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeProtocol1New\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint8\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;SetFeeProtocol\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;sender\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;recipient\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int256\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int256\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint160\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;sqrtPriceX96\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint160\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;liquidity\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tick\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;Swap\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickLower\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickUpper\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;burn\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;recipient\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickLower\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickUpper\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0Requested\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1Requested\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;collect\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;recipient\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0Requested\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1Requested\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;collectProtocol\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;factory\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;fee\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint24\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;feeGrowthGlobal0X128\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;feeGrowthGlobal1X128\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;recipient\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;bytes\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;data\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;bytes\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;flash\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint16\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;observationCardinalityNext\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint16\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;increaseObservationCardinalityNext\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint160\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;sqrtPriceX96\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint160\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;initialize\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;liquidity\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;maxLiquidityPerTick\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;recipient\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickLower\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickUpper\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;bytes\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;data\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;bytes\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;mint\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;observations\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint32\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;blockTimestamp\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint32\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int56\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickCumulative\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int56\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint160\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;secondsPerLiquidityCumulativeX128\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint160\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;bool\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;initialized\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;bool\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint32[]\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;secondsAgos\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint32[]\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;observe\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int56[]\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickCumulatives\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int56[]\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint160[]\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;secondsPerLiquidityCumulativeX128s\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint160[]\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;bytes32\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;bytes32\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;positions\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;liquidity\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeGrowthInside0LastX128\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeGrowthInside1LastX128\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tokensOwed0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tokensOwed1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;protocolFees\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;token0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;token1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint8\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeProtocol0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint8\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint8\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeProtocol1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint8\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;setFeeProtocol\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;slot0\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint160\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;sqrtPriceX96\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint160\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tick\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint16\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;observationIndex\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint16\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint16\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;observationCardinality\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint16\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint16\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;observationCardinalityNext\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint16\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint8\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeProtocol\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint8\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;bool\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;unlocked\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;bool\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickLower\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickUpper\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;snapshotCumulativesInside\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int56\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickCumulativeInside\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int56\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint160\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;secondsPerLiquidityInsideX128\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint160\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint32\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;secondsInside\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint32\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;recipient\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;bool\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;zeroForOne\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;bool\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amountSpecified\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int256\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint160\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;sqrtPriceLimitX96\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint160\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;bytes\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;data\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;bytes\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;swap\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int256\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;amount1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int256\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int16\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int16\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;tickBitmap\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;tickSpacing\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;ticks\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;liquidityGross\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint128\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int128\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;liquidityNet\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int128\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeGrowthOutside0X128\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint256\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;feeGrowthOutside1X128\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint256\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int56\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickCumulativeOutside\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int56\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint160\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;secondsPerLiquidityOutsideX128\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint160\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint32\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;secondsOutside\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint32\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;bool\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;initialized\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;bool\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;token0\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;token1\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;}]&amp;#39;&lt;br /&gt;const ABI_Factory = &amp;#39;[{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;constructor\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;fee\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint24\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickSpacing\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;FeeAmountEnabled\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;oldOwner\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;newOwner\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;OwnerChanged\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;anonymous\&amp;quot;:false,\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;token0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;token1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:true,\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;fee\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint24\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickSpacing\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;},{\&amp;quot;indexed\&amp;quot;:false,\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;pool\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;PoolCreated\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;event\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tokenA\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tokenB\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;fee\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint24\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;createPool\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;pool\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;fee\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint24\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickSpacing\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;enableFeeAmount\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint24\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;feeAmountTickSpacing\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint24\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;getPool\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;owner\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[],\&amp;quot;name\&amp;quot;:\&amp;quot;parameters\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;factory\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;token0\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;token1\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;uint24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;fee\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;uint24\&amp;quot;},{\&amp;quot;internalType\&amp;quot;:\&amp;quot;int24\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;tickSpacing\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;int24\&amp;quot;}],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;view\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;},{\&amp;quot;inputs\&amp;quot;:[{\&amp;quot;internalType\&amp;quot;:\&amp;quot;address\&amp;quot;,\&amp;quot;name\&amp;quot;:\&amp;quot;_owner\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;address\&amp;quot;}],\&amp;quot;name\&amp;quot;:\&amp;quot;setOwner\&amp;quot;,\&amp;quot;outputs\&amp;quot;:[],\&amp;quot;stateMutability\&amp;quot;:\&amp;quot;nonpayable\&amp;quot;,\&amp;quot;type\&amp;quot;:\&amp;quot;function\&amp;quot;}]&amp;#39;&lt;br /&gt;&lt;br /&gt;// Uniswap contract address&lt;br /&gt;const UniswapV3RouterAddress = &amp;quot;0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45&amp;quot;&lt;br /&gt;const ContractV3Factory = &amp;quot;0x1F98431c8aD98523631AE4a59f267346ea31F984&amp;quot;&lt;br /&gt;&lt;br /&gt;// common constant&lt;br /&gt;const TWO = BigInt(2)&lt;br /&gt;const Q192 = (TWO ** BigInt(96)) ** TWO&lt;br /&gt;const Q96 = (TWO ** BigInt(96))&lt;br /&gt;&lt;br /&gt;// Convert to readable amount&lt;br /&gt;function toAmount(s, decimals) {&lt;br /&gt;    return Number((BigDecimal(BigInt(s)) / BigDecimal(Math.pow(10, decimals))).toString())&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Reverse conversion from readable amount to amount used for passing parameters and calculations&lt;br /&gt;function toInnerAmount(n, decimals) {&lt;br /&gt;    return (BigDecimal(n) * BigDecimal(Math.pow(10, decimals))).toFixed(0)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function main(){&lt;br /&gt;    // The address of the wallet to be searched&lt;br /&gt;    // const walletAddress = exchange.IO(&amp;quot;address&amp;quot;)&lt;br /&gt;    const walletAddress = &amp;quot;0x28df8b987BE232bA33FdFB8Fc5058C1592A3db26&amp;quot;&lt;br /&gt;&lt;br /&gt;    // Get the address of Uniswap V3&amp;#39;s positionManager contract&lt;br /&gt;    exchange.IO(&amp;quot;abi&amp;quot;, UniswapV3RouterAddress, ABI_UniswapV3Router)&lt;br /&gt;    const NonfungiblePositionManagerAddress = exchange.IO(&amp;quot;api&amp;quot;, UniswapV3RouterAddress, &amp;quot;positionManager&amp;quot;)&lt;br /&gt;    Log(&amp;quot;NonfungiblePositionManagerAddress:&amp;quot;, NonfungiblePositionManagerAddress)&lt;br /&gt;&lt;br /&gt;    // Register ABI for positionManager contracts&lt;br /&gt;    exchange.IO(&amp;quot;abi&amp;quot;, NonfungiblePositionManagerAddress, ABI_NonfungiblePositionManager)&lt;br /&gt;&lt;br /&gt;    // Query the number of Uniswap V3 positions NFT owned by the current account&lt;br /&gt;    var nftBalance = exchange.IO(&amp;quot;api&amp;quot;, NonfungiblePositionManagerAddress, &amp;quot;balanceOf&amp;quot;, walletAddress)&lt;br /&gt;    Log(&amp;quot;nftBalance:&amp;quot;, nftBalance)&lt;br /&gt;    &lt;br /&gt;    // Query the TokenId of these NFTs&lt;br /&gt;    var nftTokenIds = []&lt;br /&gt;    for (var i = 0 ; i &amp;lt; nftBalance; i++) {&lt;br /&gt;        var nftTokenId = exchange.IO(&amp;quot;api&amp;quot;, NonfungiblePositionManagerAddress, &amp;quot;tokenOfOwnerByIndex&amp;quot;, walletAddress, i)&lt;br /&gt;        nftTokenIds.push(nftTokenId)&lt;br /&gt;        Log(&amp;quot;nftTokenId:&amp;quot;, nftTokenId)&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // Query liquidity position details based on the tokenId of the positions NFT&lt;br /&gt;    var positions = []&lt;br /&gt;    for (var i = 0; i &amp;lt; nftTokenIds.length; i++) {&lt;br /&gt;        var pos = exchange.IO(&amp;quot;api&amp;quot;, NonfungiblePositionManagerAddress, &amp;quot;positions&amp;quot;, nftTokenIds[i])        &lt;br /&gt;        Log(&amp;quot;pos:&amp;quot;, pos)&lt;br /&gt;&lt;br /&gt;        // Parsing position data&lt;br /&gt;        positions.push(parsePosData(pos))&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    var tbl = {&lt;br /&gt;        type : &amp;quot;table&amp;quot;,&lt;br /&gt;        title : &amp;quot;LP&amp;quot;,&lt;br /&gt;        cols : [&amp;quot;range(token0 valuation)&amp;quot;, &amp;quot;token0&amp;quot;, &amp;quot;token1&amp;quot;, &amp;quot;fee&amp;quot;, &amp;quot;lowerPrice(tickLower)&amp;quot;, &amp;quot;upperPrice(tickUpper)&amp;quot;, &amp;quot;liquidity&amp;quot;, &amp;quot;amount0&amp;quot;, &amp;quot;amount1&amp;quot;],&lt;br /&gt;        rows : positions&lt;br /&gt;    }&lt;br /&gt;    LogStatus(&amp;quot;`&amp;quot; + JSON.stringify(tbl) + &amp;quot;`&amp;quot;)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Record information about tokens queried through coingecko.com&lt;br /&gt;var tokens = []&lt;br /&gt;function init() {&lt;br /&gt;    // When initializing, get information about all tokens to query the&lt;br /&gt;    var res = JSON.parse(HttpQuery(&amp;quot;https://tokens.coingecko.com/uniswap/all.json&amp;quot;))&lt;br /&gt;    Log(&amp;quot;fetch&amp;quot;, res.tokens.length, &amp;quot;tokens from&amp;quot;, res.name)&lt;br /&gt;    _.each(res.tokens, function(token) {&lt;br /&gt;        tokens.push({&lt;br /&gt;            name : token.name,&lt;br /&gt;            symbol : token.symbol,&lt;br /&gt;            decimals : token.decimals,&lt;br /&gt;            address : token.address&lt;br /&gt;        })&lt;br /&gt;    })&lt;br /&gt;    Log(&amp;quot;tokens:&amp;quot;, tokens)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function parsePosData(posData) {&lt;br /&gt;    /*&lt;br /&gt;    {&lt;br /&gt;        &amp;quot;nonce&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;        &amp;quot;operator&amp;quot;: &amp;quot;0x0000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;        &amp;quot;token1&amp;quot;: &amp;quot;0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&amp;quot;,&lt;br /&gt;        &amp;quot;fee&amp;quot;: &amp;quot;3000&amp;quot;,&lt;br /&gt;        &amp;quot;feeGrowthInside0LastX128&amp;quot;: &amp;quot;552824104363438506727784685971981736468&amp;quot;,&lt;br /&gt;        &amp;quot;feeGrowthInside1LastX128&amp;quot;: &amp;quot;2419576808699564757520565912733367379&amp;quot;,&lt;br /&gt;        &amp;quot;tokensOwed0&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;        &amp;quot;tokensOwed1&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;        &amp;quot;token0&amp;quot;: &amp;quot;0x1f9840a85d5af5bf1d1762f925bdaddc4201f984&amp;quot;,&lt;br /&gt;        &amp;quot;tickLower&amp;quot;: &amp;quot;-62160&amp;quot;,&lt;br /&gt;        &amp;quot;tickUpper&amp;quot;: &amp;quot;-41280&amp;quot;,&lt;br /&gt;        &amp;quot;liquidity&amp;quot;: &amp;quot;19090316141441365693&amp;quot;&lt;br /&gt;    }&lt;br /&gt;    */&lt;br /&gt;    &lt;br /&gt;    var token0Symbol = null&lt;br /&gt;    var token1Symbol = null&lt;br /&gt;    // Determine the token according to the address of the token, record the information about the token&lt;br /&gt;    for (var i in tokens) {&lt;br /&gt;        if (tokens[i].address.toLowerCase() == posData.token0.toLowerCase()) {&lt;br /&gt;            token0Symbol = tokens[i]&lt;br /&gt;        } else if (tokens[i].address.toLowerCase() == posData.token1.toLowerCase()) {&lt;br /&gt;            token1Symbol = tokens[i]&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    if (!token0Symbol || !token1Symbol) {&lt;br /&gt;    	Log(&amp;quot;token0Symbol:&amp;quot;, token0Symbol, &amp;quot;, token1Symbol:&amp;quot;, token1Symbol)&lt;br /&gt;        throw &amp;quot;token not found&amp;quot;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // get Pool , obtaining data about the exchange pool&lt;br /&gt;    var poolInfo = getPool(token0Symbol.address, token1Symbol.address, posData.fee)&lt;br /&gt;    Log(&amp;quot;poolInfo:&amp;quot;, poolInfo)&lt;br /&gt;    /* Data examples&lt;br /&gt;    {&lt;br /&gt;        &amp;quot;slot0&amp;quot;:{&lt;br /&gt;            &amp;quot;sqrtPriceX96&amp;quot;:&amp;quot;4403124416947951698847768103&amp;quot;,&amp;quot;tick&amp;quot;:&amp;quot;-57804&amp;quot;,&amp;quot;observationIndex&amp;quot;:136,&amp;quot;observationCardinality&amp;quot;:300,&lt;br /&gt;            &amp;quot;observationCardinalityNext&amp;quot;:300,&amp;quot;feeProtocol&amp;quot;:0,&amp;quot;unlocked&amp;quot;:true&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    */&lt;br /&gt;    &lt;br /&gt;    // Calculate token0Amount, token1Amount&lt;br /&gt;    var currentTick = parseInt(poolInfo.slot0.tick)&lt;br /&gt;    var lowerPrice = 1.0001 ** posData.tickLower&lt;br /&gt;    var upperPrice = 1.0001 ** posData.tickUpper&lt;br /&gt;    var sqrtRatioA = Math.sqrt(lowerPrice)&lt;br /&gt;    var sqrtRatioB = Math.sqrt(upperPrice)&lt;br /&gt;    var sqrtPrice = Number(BigFloat(poolInfo.slot0.sqrtPriceX96) / Q96)&lt;br /&gt;    &lt;br /&gt;    var amount0wei = 0&lt;br /&gt;    var amount1wei = 0&lt;br /&gt;    if (currentTick &amp;lt;= posData.tickLower) {&lt;br /&gt;        amount0wei = Math.floor(posData.liquidity * ((sqrtRatioB - sqrtRatioA) / (sqrtRatioA * sqrtRatioB)))&lt;br /&gt;    } else if (currentTick &amp;gt; posData.tickUpper) {&lt;br /&gt;        amount1wei = Math.floor(posData.liquidity * (sqrtRatioB - sqrtRatioA))&lt;br /&gt;    } else if (currentTick &amp;gt;= posData.tickLower &amp;amp;&amp;amp; currentTick &amp;lt; posData.tickUpper) {&lt;br /&gt;        amount0wei = Math.floor(posData.liquidity * ((sqrtRatioB - sqrtPrice) / (sqrtPrice * sqrtRatioB)))&lt;br /&gt;        amount1wei = Math.floor(posData.liquidity * (sqrtPrice - sqrtRatioA))&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    var rangeToken0 = (1.0001 ** -posData.tickUpper) + &amp;quot; ~ &amp;quot; + (1.0001 ** -posData.tickLower)&lt;br /&gt;    var amount0 = toAmount(amount0wei, token0Symbol.decimals)&lt;br /&gt;    var amount1 = toAmount(amount1wei, token1Symbol.decimals)&lt;br /&gt;&lt;br /&gt;    return [rangeToken0, token0Symbol.symbol, token1Symbol.symbol, posData.fee / 10000 + &amp;quot;%&amp;quot;, &lt;br /&gt;        `${lowerPrice}(tickLower:${posData.tickLower})`, `${upperPrice}(tickUpper:${posData.tickUpper})`, posData.liquidity, &lt;br /&gt;            amount0, amount1]&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function getPool(token0Address, token1Address, fee) {&lt;br /&gt;    if (BigInt(token0Address) &amp;gt; BigInt(token1Address)) {&lt;br /&gt;        var tmp = token0Address&lt;br /&gt;        token0Address = token1Address&lt;br /&gt;        token1Address = tmp&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    // Calculating the contract address of an exchange pool using Uniswap&amp;#39;s factory contract&lt;br /&gt;    exchange.IO(&amp;quot;abi&amp;quot;, ContractV3Factory, ABI_Factory)&lt;br /&gt;    var poolAddress = exchange.IO(&amp;quot;api&amp;quot;, ContractV3Factory, &amp;quot;getPool&amp;quot;, token0Address, token1Address, fee)&lt;br /&gt;    if (!poolAddress) {&lt;br /&gt;        throw &amp;quot;getPool failed&amp;quot;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    // ABI for registered pool contracts&lt;br /&gt;    exchange.IO(&amp;quot;abi&amp;quot;, poolAddress, ABI_Pool)&lt;br /&gt;    &lt;br /&gt;    // Call the pool contract&amp;#39;s slot0 method to query the current exchange pool&amp;#39;s data&lt;br /&gt;    var slot0 = exchange.IO(&amp;quot;api&amp;quot;, poolAddress, &amp;quot;slot0&amp;quot;)&lt;br /&gt;    if (!slot0) {&lt;br /&gt;    	throw &amp;quot;get slot0 failed&amp;quot;&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    return {&lt;br /&gt;    	&amp;quot;slot0&amp;quot;: slot0&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;&lt;br /&gt;The retrieved liquidity position information (which needs further parsing):&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;{&lt;br /&gt;	&amp;quot;nonce&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;	&amp;quot;operator&amp;quot;: &amp;quot;0x0000000000000000000000000000000000000000&amp;quot;,&lt;br /&gt;	&amp;quot;token1&amp;quot;: &amp;quot;0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2&amp;quot;,&lt;br /&gt;	&amp;quot;fee&amp;quot;: &amp;quot;3000&amp;quot;,&lt;br /&gt;	&amp;quot;feeGrowthInside0LastX128&amp;quot;: &amp;quot;552824104363438506727784685971981736468&amp;quot;,&lt;br /&gt;	&amp;quot;feeGrowthInside1LastX128&amp;quot;: &amp;quot;2419576808699564757520565912733367379&amp;quot;,&lt;br /&gt;	&amp;quot;tokensOwed0&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;	&amp;quot;tokensOwed1&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;	&amp;quot;token0&amp;quot;: &amp;quot;0x1f9840a85d5af5bf1d1762f925bdaddc4201f984&amp;quot;,&lt;br /&gt;	&amp;quot;tickLower&amp;quot;: &amp;quot;-62160&amp;quot;,&lt;br /&gt;	&amp;quot;tickUpper&amp;quot;: &amp;quot;-41280&amp;quot;,&lt;br /&gt;	&amp;quot;liquidity&amp;quot;: &amp;quot;19090316141441365693&amp;quot;&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Parsing Liquidity Holdings for Market Making Ranges&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The positions method of Uniswap&amp;#39;s NonfungiblePositionManager contract returns tickLower and tickUpper in the liquidity position data. In Uniswap V3, liquidity can be specified within a range, whereas the initial design of Uniswap had uniform distribution of liquidity. The specification of a liquidity range in subsequent versions is aimed at improving the utilization of liquidity capital.&lt;br /&gt;&lt;br /&gt;&amp;gt; tickLower: The lower end of the tick range for the position&lt;br /&gt;&amp;gt; tickUpper: The higher end of the tick range for the position&lt;br /&gt;&lt;br /&gt;tickLower and tickUpper represent the upper and lower limits of the liquidity. Referring to the Uniswap documentation and its complex formulas, tickLower and tickUpper are essentially price boundaries recorded in exponential form. So, how can we calculate the price range for market-making from these &amp;quot;exponential boundaries&amp;quot;?&lt;br /&gt;&lt;br /&gt;It&amp;#39;s quite simple. Uniswap uses a base of ```1.0001```. Lower price: ```lowerPrice = 1.0001 ** tickLower```; Upper price: ```upperPrice = 1.0001 ** tickUpper```. The ```**``` operator represents exponentiation. For example, ```1.0001 ** 100``` calculates 1.0001 raised to the power of 100.&lt;br /&gt;&lt;br /&gt;This calculated price range is denominated in token1. But what if we want to see the price range denominated in token0?&lt;br /&gt;&lt;br /&gt;It can be calculated as follows:&lt;br /&gt;Lower price: 1.0001 ** -tickUpper&lt;br /&gt;Upper price: 1.0001 ** -tickLower&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149684
" title="https://stocksharp.com/file/149684
"&gt;https://stocksharp.com/file/149684
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Compare this to the NFT position we looked up on the chain:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149685
" title="https://stocksharp.com/file/149685
"&gt;https://stocksharp.com/file/149685
&lt;/a&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149686
" title="https://stocksharp.com/file/149686
"&gt;https://stocksharp.com/file/149686
&lt;/a&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149687
" title="https://stocksharp.com/file/149687
"&gt;https://stocksharp.com/file/149687
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Parsing the Asset Value in the Current Liquidity Position&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In addition to tickUpper and tickLower, the positions method of Uniswap&amp;#39;s NonfungiblePositionManager contract returns another important data: liquidity.&lt;br /&gt;&lt;br /&gt;By combining the liquidity, tickUpper, tickLower data from the position information with the current price data in the exchange pool, we can calculate the asset value in the current liquidity position.&lt;br /&gt;&lt;br /&gt;You may wonder why we need to know the current price in the exchange pool to make the calculation.&lt;br /&gt;&lt;br /&gt;This is because once you add liquidity, any price changes within the effective range of your liquidity position imply that your assets have been exchanged. If the current exchange price is not within the effective range of your liquidity provision, there won&amp;#39;t be any changes. Therefore, there are three scenarios to consider when calculating:&lt;br /&gt;&lt;br /&gt;- The tick of the current price is less than tickLower.&lt;br /&gt;- The tick of the current price is greater than tickUpper.&lt;br /&gt;- The tick of the current price is within the range of tickLower to tickUpper.&lt;br /&gt;&lt;br /&gt;This corresponds to the following calculation and processing in the code:&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;    if (currentTick &amp;lt;= posData.tickLower) {&lt;br /&gt;        amount0wei = Math.floor(posData.liquidity * ((sqrtRatioB - sqrtRatioA) / (sqrtRatioA * sqrtRatioB)))&lt;br /&gt;    } else if (currentTick &amp;gt; posData.tickUpper) {&lt;br /&gt;        amount1wei = Math.floor(posData.liquidity * (sqrtRatioB - sqrtRatioA))&lt;br /&gt;    } else if (currentTick &amp;gt;= posData.tickLower &amp;amp;&amp;amp; currentTick &amp;lt; posData.tickUpper) {&lt;br /&gt;        amount0wei = Math.floor(posData.liquidity * ((sqrtRatioB - sqrtPrice) / (sqrtPrice * sqrtRatioB)))&lt;br /&gt;        amount1wei = Math.floor(posData.liquidity * (sqrtPrice - sqrtRatioA))&lt;br /&gt;    }&lt;br /&gt;```&lt;br /&gt;&lt;br /&gt;To perform the above calculations, we need to obtain the tick of the current price, which can be obtained directly from the pool contract. To get the address of the pool contract, we can use the getPool method of Uniswap&amp;#39;s factory contract. By using the ```slot0``` method of the pool contract, we can retrieve the current price information, including the tick value we need.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149688
" title="https://stocksharp.com/file/149688
"&gt;https://stocksharp.com/file/149688
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y6x6iLLUqIMFJAk1dYxX-PKODE2xLmQn5pc1B_afih5X8YEwANTJSRfvIDDF9IQbcJWCPI-QGIvuoune2CBaw7e3WRpW5WimOlsXMnXhuqcv5LhUdCfs_gock8XjlwRdMqQ" title="https://blog.mathquant.com/2023/07/21/fmz-quant-uniswap-v3-exchange-pool-liquidity-related-operations-guide-part-1.html"&gt;https://blog.mathquant.c...ations-guide-part-1.html&lt;/a&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>