{
  "contractName": "IQuoterV2",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct IQuoterV2.QuoteExactInputSingleParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "quoteExactInputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96After",
          "type": "uint160"
        },
        {
          "internalType": "uint32",
          "name": "initializedTicksCrossed",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct IQuoterV2.QuoteExactOutputSingleParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "quoteExactOutputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96After",
          "type": "uint160"
        },
        {
          "internalType": "uint32",
          "name": "initializedTicksCrossed",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.8+commit.0bbfe453\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IQuoterV2.QuoteExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"quoteExactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96After\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"initializedTicksCrossed\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IQuoterV2.QuoteExactOutputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"quoteExactOutputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96After\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"initializedTicksCrossed\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"gasEstimate\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"These functions are not marked view because they rely on calling non-view functions and reverting to compute the result. They are also not gas efficient and should not be called on-chain.\",\"methods\":{\"quoteExactInputSingle((address,address,uint256,uint24,uint160))\":{\"params\":{\"params\":\"The params for the quote, encoded as `QuoteExactInputSingleParams` tokenIn The token being swapped in tokenOut The token being swapped out fee The fee of the token pool to consider for the pair amountIn The desired input amount sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\"},\"returns\":{\"amountOut\":\"The amount of `tokenOut` that would be received\",\"gasEstimate\":\"The estimate of the gas that the swap consumes\",\"initializedTicksCrossed\":\"The number of initialized ticks that the swap crossed\",\"sqrtPriceX96After\":\"The sqrt price of the pool after the swap\"}},\"quoteExactOutputSingle((address,address,uint256,uint24,uint160))\":{\"params\":{\"params\":\"The params for the quote, encoded as `QuoteExactOutputSingleParams` tokenIn The token being swapped in tokenOut The token being swapped out fee The fee of the token pool to consider for the pair amountOut The desired output amount sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\"},\"returns\":{\"amountIn\":\"The amount required as the input for the swap in order to receive `amountOut`\",\"gasEstimate\":\"The estimate of the gas that the swap consumes\",\"initializedTicksCrossed\":\"The number of initialized ticks that the swap crossed\",\"sqrtPriceX96After\":\"The sqrt price of the pool after the swap\"}}},\"title\":\"QuoterV2 Interface\"},\"userdoc\":{\"methods\":{\"quoteExactInputSingle((address,address,uint256,uint24,uint160))\":{\"notice\":\"Returns the amount out received for a given exact input but for a swap of a single pool\"},\"quoteExactOutputSingle((address,address,uint256,uint24,uint160))\":{\"notice\":\"Returns the amount in required to receive the given exact output amount but for a swap of a single pool\"}},\"notice\":\"Supports quoting the calculated amounts from exact input or exact output swaps.For each pool also tells you the number of initialized ticks crossed and the sqrt price of the pool after the swap.\"}},\"settings\":{\"compilationTarget\":{\"project:/contracts/interfaces/uniswap/IQuoterV2.sol\":\"IQuoterV2\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"project:/contracts/interfaces/uniswap/IQuoterV2.sol\":{\"keccak256\":\"0x9693f3a223b133f30f0ce9ad74285070e80a59093d0f05a2af8affa4d254587d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8308eb130920f5b6979fadf728c12c1ac1f6977047586c141237e5b1c510327f\",\"dweb:/ipfs/Qmem2CDt6Vyz4TbcXfWXFGF9VM4y9dAcdt95TgJPhBJXez\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity ^0.6.8;\npragma experimental ABIEncoderV2;\n\n/// @title QuoterV2 Interface\n/// @notice Supports quoting the calculated amounts from exact input or exact output swaps.\n/// @notice For each pool also tells you the number of initialized ticks crossed and the sqrt price of the pool after the swap.\n/// @dev These functions are not marked view because they rely on calling non-view functions and reverting\n/// to compute the result. They are also not gas efficient and should not be called on-chain.\ninterface IQuoterV2 {\n    struct QuoteExactInputSingleParams {\n        address tokenIn;\n        address tokenOut;\n        uint256 amountIn;\n        uint24 fee;\n        uint160 sqrtPriceLimitX96;\n    }\n\n    /// @notice Returns the amount out received for a given exact input but for a swap of a single pool\n    /// @param params The params for the quote, encoded as `QuoteExactInputSingleParams`\n    /// tokenIn The token being swapped in\n    /// tokenOut The token being swapped out\n    /// fee The fee of the token pool to consider for the pair\n    /// amountIn The desired input amount\n    /// sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n    /// @return amountOut The amount of `tokenOut` that would be received\n    /// @return sqrtPriceX96After The sqrt price of the pool after the swap\n    /// @return initializedTicksCrossed The number of initialized ticks that the swap crossed\n    /// @return gasEstimate The estimate of the gas that the swap consumes\n    function quoteExactInputSingle(QuoteExactInputSingleParams calldata params)\n        external\n        returns (\n            uint256 amountOut,\n            uint160 sqrtPriceX96After,\n            uint32 initializedTicksCrossed,\n            uint256 gasEstimate\n        );\n\n    struct QuoteExactOutputSingleParams {\n        address tokenIn;\n        address tokenOut;\n        uint256 amount;\n        uint24 fee;\n        uint160 sqrtPriceLimitX96;\n    }\n\n    /// @notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\n    /// @param params The params for the quote, encoded as `QuoteExactOutputSingleParams`\n    /// tokenIn The token being swapped in\n    /// tokenOut The token being swapped out\n    /// fee The fee of the token pool to consider for the pair\n    /// amountOut The desired output amount\n    /// sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n    /// @return amountIn The amount required as the input for the swap in order to receive `amountOut`\n    /// @return sqrtPriceX96After The sqrt price of the pool after the swap\n    /// @return initializedTicksCrossed The number of initialized ticks that the swap crossed\n    /// @return gasEstimate The estimate of the gas that the swap consumes\n    function quoteExactOutputSingle(QuoteExactOutputSingleParams calldata params)\n        external\n        returns (\n            uint256 amountIn,\n            uint160 sqrtPriceX96After,\n            uint32 initializedTicksCrossed,\n            uint256 gasEstimate\n        );\n}",
  "sourcePath": "/home/thezviad_gmail_com/src/swappa/contracts/interfaces/uniswap/IQuoterV2.sol",
  "ast": {
    "absolutePath": "project:/contracts/interfaces/uniswap/IQuoterV2.sol",
    "exportedSymbols": {
      "IQuoterV2": [
        2400
      ]
    },
    "id": 2401,
    "license": "GPL-2.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2347,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".8"
        ],
        "nodeType": "PragmaDirective",
        "src": "45:23:26"
      },
      {
        "id": 2348,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "69:33:26"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": {
          "id": 2349,
          "nodeType": "StructuredDocumentation",
          "src": "104:451:26",
          "text": "@title QuoterV2 Interface\n @notice Supports quoting the calculated amounts from exact input or exact output swaps.\n @notice For each pool also tells you the number of initialized ticks crossed and the sqrt price of the pool after the swap.\n @dev These functions are not marked view because they rely on calling non-view functions and reverting\n to compute the result. They are also not gas efficient and should not be called on-chain."
        },
        "fullyImplemented": false,
        "id": 2400,
        "linearizedBaseContracts": [
          2400
        ],
        "name": "IQuoterV2",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "IQuoterV2.QuoteExactInputSingleParams",
            "id": 2360,
            "members": [
              {
                "constant": false,
                "id": 2351,
                "mutability": "mutable",
                "name": "tokenIn",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2360,
                "src": "626:15:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2350,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "626:7:26",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2353,
                "mutability": "mutable",
                "name": "tokenOut",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2360,
                "src": "651:16:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2352,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "651:7:26",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2355,
                "mutability": "mutable",
                "name": "amountIn",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2360,
                "src": "677:16:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2354,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "677:7:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2357,
                "mutability": "mutable",
                "name": "fee",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2360,
                "src": "703:10:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint24",
                  "typeString": "uint24"
                },
                "typeName": {
                  "id": 2356,
                  "name": "uint24",
                  "nodeType": "ElementaryTypeName",
                  "src": "703:6:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2359,
                "mutability": "mutable",
                "name": "sqrtPriceLimitX96",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2360,
                "src": "723:25:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint160",
                  "typeString": "uint160"
                },
                "typeName": {
                  "id": 2358,
                  "name": "uint160",
                  "nodeType": "ElementaryTypeName",
                  "src": "723:7:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "QuoteExactInputSingleParams",
            "nodeType": "StructDefinition",
            "scope": 2400,
            "src": "581:174:26",
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": {
              "id": 2361,
              "nodeType": "StructuredDocumentation",
              "src": "761:790:26",
              "text": "@notice Returns the amount out received for a given exact input but for a swap of a single pool\n @param params The params for the quote, encoded as `QuoteExactInputSingleParams`\n tokenIn The token being swapped in\n tokenOut The token being swapped out\n fee The fee of the token pool to consider for the pair\n amountIn The desired input amount\n sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n @return amountOut The amount of `tokenOut` that would be received\n @return sqrtPriceX96After The sqrt price of the pool after the swap\n @return initializedTicksCrossed The number of initialized ticks that the swap crossed\n @return gasEstimate The estimate of the gas that the swap consumes"
            },
            "functionSelector": "c6a5026a",
            "id": 2374,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "quoteExactInputSingle",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2363,
                  "mutability": "mutable",
                  "name": "params",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2374,
                  "src": "1587:43:26",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_QuoteExactInputSingleParams_$2360_calldata_ptr",
                    "typeString": "struct IQuoterV2.QuoteExactInputSingleParams"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2362,
                    "name": "QuoteExactInputSingleParams",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2360,
                    "src": "1587:27:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_QuoteExactInputSingleParams_$2360_storage_ptr",
                      "typeString": "struct IQuoterV2.QuoteExactInputSingleParams"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1586:45:26"
            },
            "returnParameters": {
              "id": 2373,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2366,
                  "mutability": "mutable",
                  "name": "amountOut",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2374,
                  "src": "1679:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1679:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2368,
                  "mutability": "mutable",
                  "name": "sqrtPriceX96After",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2374,
                  "src": "1710:25:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 2367,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "1710:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2370,
                  "mutability": "mutable",
                  "name": "initializedTicksCrossed",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2374,
                  "src": "1749:30:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 2369,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1749:6:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2372,
                  "mutability": "mutable",
                  "name": "gasEstimate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2374,
                  "src": "1793:19:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2371,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1793:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1665:157:26"
            },
            "scope": 2400,
            "src": "1556:267:26",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "canonicalName": "IQuoterV2.QuoteExactOutputSingleParams",
            "id": 2385,
            "members": [
              {
                "constant": false,
                "id": 2376,
                "mutability": "mutable",
                "name": "tokenIn",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2385,
                "src": "1875:15:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2375,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1875:7:26",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2378,
                "mutability": "mutable",
                "name": "tokenOut",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2385,
                "src": "1900:16:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2377,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1900:7:26",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2380,
                "mutability": "mutable",
                "name": "amount",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2385,
                "src": "1926:14:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2379,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1926:7:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2382,
                "mutability": "mutable",
                "name": "fee",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2385,
                "src": "1950:10:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint24",
                  "typeString": "uint24"
                },
                "typeName": {
                  "id": 2381,
                  "name": "uint24",
                  "nodeType": "ElementaryTypeName",
                  "src": "1950:6:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2384,
                "mutability": "mutable",
                "name": "sqrtPriceLimitX96",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2385,
                "src": "1970:25:26",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint160",
                  "typeString": "uint160"
                },
                "typeName": {
                  "id": 2383,
                  "name": "uint160",
                  "nodeType": "ElementaryTypeName",
                  "src": "1970:7:26",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "QuoteExactOutputSingleParams",
            "nodeType": "StructDefinition",
            "scope": 2400,
            "src": "1829:173:26",
            "visibility": "public"
          },
          {
            "body": null,
            "documentation": {
              "id": 2386,
              "nodeType": "StructuredDocumentation",
              "src": "2008:838:26",
              "text": "@notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\n @param params The params for the quote, encoded as `QuoteExactOutputSingleParams`\n tokenIn The token being swapped in\n tokenOut The token being swapped out\n fee The fee of the token pool to consider for the pair\n amountOut The desired output amount\n sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n @return amountIn The amount required as the input for the swap in order to receive `amountOut`\n @return sqrtPriceX96After The sqrt price of the pool after the swap\n @return initializedTicksCrossed The number of initialized ticks that the swap crossed\n @return gasEstimate The estimate of the gas that the swap consumes"
            },
            "functionSelector": "bd21704a",
            "id": 2399,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "quoteExactOutputSingle",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 2389,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2388,
                  "mutability": "mutable",
                  "name": "params",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2399,
                  "src": "2883:44:26",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_QuoteExactOutputSingleParams_$2385_calldata_ptr",
                    "typeString": "struct IQuoterV2.QuoteExactOutputSingleParams"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 2387,
                    "name": "QuoteExactOutputSingleParams",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2385,
                    "src": "2883:28:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_QuoteExactOutputSingleParams_$2385_storage_ptr",
                      "typeString": "struct IQuoterV2.QuoteExactOutputSingleParams"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2882:46:26"
            },
            "returnParameters": {
              "id": 2398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2391,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2399,
                  "src": "2976:16:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2390,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2976:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2393,
                  "mutability": "mutable",
                  "name": "sqrtPriceX96After",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2399,
                  "src": "3006:25:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 2392,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "3006:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2395,
                  "mutability": "mutable",
                  "name": "initializedTicksCrossed",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2399,
                  "src": "3045:30:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 2394,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3045:6:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2397,
                  "mutability": "mutable",
                  "name": "gasEstimate",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 2399,
                  "src": "3089:19:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2396,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3089:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2962:156:26"
            },
            "scope": 2400,
            "src": "2851:268:26",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 2401,
        "src": "555:2566:26"
      }
    ],
    "src": "45:3076:26"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "project:/contracts/interfaces/uniswap/IQuoterV2.sol",
      "exportedSymbols": {
        "IQuoterV2": [
          2400
        ]
      },
      "license": "GPL-2.0-or-later"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.6",
            ".8"
          ]
        },
        "id": 2347,
        "name": "PragmaDirective",
        "src": "45:23:26"
      },
      {
        "attributes": {
          "literals": [
            "experimental",
            "ABIEncoderV2"
          ]
        },
        "id": 2348,
        "name": "PragmaDirective",
        "src": "69:33:26"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "interface",
          "fullyImplemented": false,
          "linearizedBaseContracts": [
            2400
          ],
          "name": "IQuoterV2",
          "scope": 2401
        },
        "children": [
          {
            "attributes": {
              "text": "@title QuoterV2 Interface\n @notice Supports quoting the calculated amounts from exact input or exact output swaps.\n @notice For each pool also tells you the number of initialized ticks crossed and the sqrt price of the pool after the swap.\n @dev These functions are not marked view because they rely on calling non-view functions and reverting\n to compute the result. They are also not gas efficient and should not be called on-chain."
            },
            "id": 2349,
            "name": "StructuredDocumentation",
            "src": "104:451:26"
          },
          {
            "attributes": {
              "canonicalName": "IQuoterV2.QuoteExactInputSingleParams",
              "name": "QuoteExactInputSingleParams",
              "scope": 2400,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tokenIn",
                  "overrides": null,
                  "scope": 2360,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "address",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "stateMutability": "nonpayable",
                      "type": "address"
                    },
                    "id": 2350,
                    "name": "ElementaryTypeName",
                    "src": "626:7:26"
                  }
                ],
                "id": 2351,
                "name": "VariableDeclaration",
                "src": "626:15:26"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tokenOut",
                  "overrides": null,
                  "scope": 2360,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "address",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "stateMutability": "nonpayable",
                      "type": "address"
                    },
                    "id": 2352,
                    "name": "ElementaryTypeName",
                    "src": "651:7:26"
                  }
                ],
                "id": 2353,
                "name": "VariableDeclaration",
                "src": "651:16:26"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "amountIn",
                  "overrides": null,
                  "scope": 2360,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 2354,
                    "name": "ElementaryTypeName",
                    "src": "677:7:26"
                  }
                ],
                "id": 2355,
                "name": "VariableDeclaration",
                "src": "677:16:26"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "fee",
                  "overrides": null,
                  "scope": 2360,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint24",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint24",
                      "type": "uint24"
                    },
                    "id": 2356,
                    "name": "ElementaryTypeName",
                    "src": "703:6:26"
                  }
                ],
                "id": 2357,
                "name": "VariableDeclaration",
                "src": "703:10:26"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "sqrtPriceLimitX96",
                  "overrides": null,
                  "scope": 2360,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint160",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint160",
                      "type": "uint160"
                    },
                    "id": 2358,
                    "name": "ElementaryTypeName",
                    "src": "723:7:26"
                  }
                ],
                "id": 2359,
                "name": "VariableDeclaration",
                "src": "723:25:26"
              }
            ],
            "id": 2360,
            "name": "StructDefinition",
            "src": "581:174:26"
          },
          {
            "attributes": {
              "body": null,
              "functionSelector": "c6a5026a",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "quoteExactInputSingle",
              "overrides": null,
              "scope": 2400,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Returns the amount out received for a given exact input but for a swap of a single pool\n @param params The params for the quote, encoded as `QuoteExactInputSingleParams`\n tokenIn The token being swapped in\n tokenOut The token being swapped out\n fee The fee of the token pool to consider for the pair\n amountIn The desired input amount\n sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n @return amountOut The amount of `tokenOut` that would be received\n @return sqrtPriceX96After The sqrt price of the pool after the swap\n @return initializedTicksCrossed The number of initialized ticks that the swap crossed\n @return gasEstimate The estimate of the gas that the swap consumes"
                },
                "id": 2361,
                "name": "StructuredDocumentation",
                "src": "761:790:26"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "params",
                      "overrides": null,
                      "scope": 2374,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "struct IQuoterV2.QuoteExactInputSingleParams",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "QuoteExactInputSingleParams",
                          "referencedDeclaration": 2360,
                          "type": "struct IQuoterV2.QuoteExactInputSingleParams"
                        },
                        "id": 2362,
                        "name": "UserDefinedTypeName",
                        "src": "1587:27:26"
                      }
                    ],
                    "id": 2363,
                    "name": "VariableDeclaration",
                    "src": "1587:43:26"
                  }
                ],
                "id": 2364,
                "name": "ParameterList",
                "src": "1586:45:26"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "overrides": null,
                      "scope": 2374,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2365,
                        "name": "ElementaryTypeName",
                        "src": "1679:7:26"
                      }
                    ],
                    "id": 2366,
                    "name": "VariableDeclaration",
                    "src": "1679:17:26"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "sqrtPriceX96After",
                      "overrides": null,
                      "scope": 2374,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint160",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint160",
                          "type": "uint160"
                        },
                        "id": 2367,
                        "name": "ElementaryTypeName",
                        "src": "1710:7:26"
                      }
                    ],
                    "id": 2368,
                    "name": "VariableDeclaration",
                    "src": "1710:25:26"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "initializedTicksCrossed",
                      "overrides": null,
                      "scope": 2374,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 2369,
                        "name": "ElementaryTypeName",
                        "src": "1749:6:26"
                      }
                    ],
                    "id": 2370,
                    "name": "VariableDeclaration",
                    "src": "1749:30:26"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "gasEstimate",
                      "overrides": null,
                      "scope": 2374,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2371,
                        "name": "ElementaryTypeName",
                        "src": "1793:7:26"
                      }
                    ],
                    "id": 2372,
                    "name": "VariableDeclaration",
                    "src": "1793:19:26"
                  }
                ],
                "id": 2373,
                "name": "ParameterList",
                "src": "1665:157:26"
              }
            ],
            "id": 2374,
            "name": "FunctionDefinition",
            "src": "1556:267:26"
          },
          {
            "attributes": {
              "canonicalName": "IQuoterV2.QuoteExactOutputSingleParams",
              "name": "QuoteExactOutputSingleParams",
              "scope": 2400,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tokenIn",
                  "overrides": null,
                  "scope": 2385,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "address",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "stateMutability": "nonpayable",
                      "type": "address"
                    },
                    "id": 2375,
                    "name": "ElementaryTypeName",
                    "src": "1875:7:26"
                  }
                ],
                "id": 2376,
                "name": "VariableDeclaration",
                "src": "1875:15:26"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "tokenOut",
                  "overrides": null,
                  "scope": 2385,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "address",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "stateMutability": "nonpayable",
                      "type": "address"
                    },
                    "id": 2377,
                    "name": "ElementaryTypeName",
                    "src": "1900:7:26"
                  }
                ],
                "id": 2378,
                "name": "VariableDeclaration",
                "src": "1900:16:26"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "overrides": null,
                  "scope": 2385,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint256",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 2379,
                    "name": "ElementaryTypeName",
                    "src": "1926:7:26"
                  }
                ],
                "id": 2380,
                "name": "VariableDeclaration",
                "src": "1926:14:26"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "fee",
                  "overrides": null,
                  "scope": 2385,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint24",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint24",
                      "type": "uint24"
                    },
                    "id": 2381,
                    "name": "ElementaryTypeName",
                    "src": "1950:6:26"
                  }
                ],
                "id": 2382,
                "name": "VariableDeclaration",
                "src": "1950:10:26"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "sqrtPriceLimitX96",
                  "overrides": null,
                  "scope": 2385,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint160",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint160",
                      "type": "uint160"
                    },
                    "id": 2383,
                    "name": "ElementaryTypeName",
                    "src": "1970:7:26"
                  }
                ],
                "id": 2384,
                "name": "VariableDeclaration",
                "src": "1970:25:26"
              }
            ],
            "id": 2385,
            "name": "StructDefinition",
            "src": "1829:173:26"
          },
          {
            "attributes": {
              "body": null,
              "functionSelector": "bd21704a",
              "implemented": false,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "quoteExactOutputSingle",
              "overrides": null,
              "scope": 2400,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Returns the amount in required to receive the given exact output amount but for a swap of a single pool\n @param params The params for the quote, encoded as `QuoteExactOutputSingleParams`\n tokenIn The token being swapped in\n tokenOut The token being swapped out\n fee The fee of the token pool to consider for the pair\n amountOut The desired output amount\n sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap\n @return amountIn The amount required as the input for the swap in order to receive `amountOut`\n @return sqrtPriceX96After The sqrt price of the pool after the swap\n @return initializedTicksCrossed The number of initialized ticks that the swap crossed\n @return gasEstimate The estimate of the gas that the swap consumes"
                },
                "id": 2386,
                "name": "StructuredDocumentation",
                "src": "2008:838:26"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "params",
                      "overrides": null,
                      "scope": 2399,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "struct IQuoterV2.QuoteExactOutputSingleParams",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "QuoteExactOutputSingleParams",
                          "referencedDeclaration": 2385,
                          "type": "struct IQuoterV2.QuoteExactOutputSingleParams"
                        },
                        "id": 2387,
                        "name": "UserDefinedTypeName",
                        "src": "2883:28:26"
                      }
                    ],
                    "id": 2388,
                    "name": "VariableDeclaration",
                    "src": "2883:44:26"
                  }
                ],
                "id": 2389,
                "name": "ParameterList",
                "src": "2882:46:26"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "overrides": null,
                      "scope": 2399,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2390,
                        "name": "ElementaryTypeName",
                        "src": "2976:7:26"
                      }
                    ],
                    "id": 2391,
                    "name": "VariableDeclaration",
                    "src": "2976:16:26"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "sqrtPriceX96After",
                      "overrides": null,
                      "scope": 2399,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint160",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint160",
                          "type": "uint160"
                        },
                        "id": 2392,
                        "name": "ElementaryTypeName",
                        "src": "3006:7:26"
                      }
                    ],
                    "id": 2393,
                    "name": "VariableDeclaration",
                    "src": "3006:25:26"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "initializedTicksCrossed",
                      "overrides": null,
                      "scope": 2399,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint32",
                          "type": "uint32"
                        },
                        "id": 2394,
                        "name": "ElementaryTypeName",
                        "src": "3045:6:26"
                      }
                    ],
                    "id": 2395,
                    "name": "VariableDeclaration",
                    "src": "3045:30:26"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "gasEstimate",
                      "overrides": null,
                      "scope": 2399,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2396,
                        "name": "ElementaryTypeName",
                        "src": "3089:7:26"
                      }
                    ],
                    "id": 2397,
                    "name": "VariableDeclaration",
                    "src": "3089:19:26"
                  }
                ],
                "id": 2398,
                "name": "ParameterList",
                "src": "2962:156:26"
              }
            ],
            "id": 2399,
            "name": "FunctionDefinition",
            "src": "2851:268:26"
          }
        ],
        "id": 2400,
        "name": "ContractDefinition",
        "src": "555:2566:26"
      }
    ],
    "id": 2401,
    "name": "SourceUnit",
    "src": "45:3076:26"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.8+commit.0bbfe453.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-02-07T17:50:42.780Z",
  "devdoc": {
    "details": "These functions are not marked view because they rely on calling non-view functions and reverting to compute the result. They are also not gas efficient and should not be called on-chain.",
    "methods": {
      "quoteExactInputSingle((address,address,uint256,uint24,uint160))": {
        "params": {
          "params": "The params for the quote, encoded as `QuoteExactInputSingleParams` tokenIn The token being swapped in tokenOut The token being swapped out fee The fee of the token pool to consider for the pair amountIn The desired input amount sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap"
        },
        "returns": {
          "amountOut": "The amount of `tokenOut` that would be received",
          "gasEstimate": "The estimate of the gas that the swap consumes",
          "initializedTicksCrossed": "The number of initialized ticks that the swap crossed",
          "sqrtPriceX96After": "The sqrt price of the pool after the swap"
        }
      },
      "quoteExactOutputSingle((address,address,uint256,uint24,uint160))": {
        "params": {
          "params": "The params for the quote, encoded as `QuoteExactOutputSingleParams` tokenIn The token being swapped in tokenOut The token being swapped out fee The fee of the token pool to consider for the pair amountOut The desired output amount sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap"
        },
        "returns": {
          "amountIn": "The amount required as the input for the swap in order to receive `amountOut`",
          "gasEstimate": "The estimate of the gas that the swap consumes",
          "initializedTicksCrossed": "The number of initialized ticks that the swap crossed",
          "sqrtPriceX96After": "The sqrt price of the pool after the swap"
        }
      }
    },
    "title": "QuoterV2 Interface"
  },
  "userdoc": {
    "methods": {
      "quoteExactInputSingle((address,address,uint256,uint24,uint160))": {
        "notice": "Returns the amount out received for a given exact input but for a swap of a single pool"
      },
      "quoteExactOutputSingle((address,address,uint256,uint24,uint160))": {
        "notice": "Returns the amount in required to receive the given exact output amount but for a swap of a single pool"
      }
    },
    "notice": "Supports quoting the calculated amounts from exact input or exact output swaps.For each pool also tells you the number of initialized ticks crossed and the sqrt price of the pool after the swap."
  }
}