{
  "abi": [
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fee",
      "outputs": [
        {
          "internalType": "uint24",
          "name": "",
          "type": "uint24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxLiquidityPerTick",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tickSpacing",
      "outputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token0",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token1",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "factory()": "c45a0155",
    "fee()": "ddca3f43",
    "maxLiquidityPerTick()": "70cf754a",
    "tickSpacing()": "d0c93a7c",
    "token0()": "0dfe1681",
    "token1()": "d21220a7"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxLiquidityPerTick\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tickSpacing\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"factory()\":{\"returns\":{\"_0\":\"The contract address\"}},\"fee()\":{\"returns\":{\"_0\":\"The fee\"}},\"maxLiquidityPerTick()\":{\"details\":\"This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\",\"returns\":{\"_0\":\"The max amount of liquidity per tick\"}},\"tickSpacing()\":{\"details\":\"Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.\",\"returns\":{\"_0\":\"The tick spacing\"}},\"token0()\":{\"returns\":{\"_0\":\"The token contract address\"}},\"token1()\":{\"returns\":{\"_0\":\"The token contract address\"}}},\"title\":\"Pool state that never changes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"factory()\":{\"notice\":\"The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\"},\"fee()\":{\"notice\":\"The pool's fee in hundredths of a bip, i.e. 1e-6\"},\"maxLiquidityPerTick()\":{\"notice\":\"The maximum amount of position liquidity that can use any tick in the range\"},\"tickSpacing()\":{\"notice\":\"The pool tick spacing\"},\"token0()\":{\"notice\":\"The first of the two tokens of the pool, sorted by address\"},\"token1()\":{\"notice\":\"The second of the two tokens of the pool, sorted by address\"}},\"notice\":\"These parameters are fixed for a pool forever, i.e., the methods will always return the same values\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":\"IUniswapV3PoolImmutables\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.22+commit.4fc1097e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "fee",
          "outputs": [
            {
              "internalType": "uint24",
              "name": "",
              "type": "uint24"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "maxLiquidityPerTick",
          "outputs": [
            {
              "internalType": "uint128",
              "name": "",
              "type": "uint128"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "tickSpacing",
          "outputs": [
            {
              "internalType": "int24",
              "name": "",
              "type": "int24"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "token0",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "token1",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "factory()": {
            "returns": {
              "_0": "The contract address"
            }
          },
          "fee()": {
            "returns": {
              "_0": "The fee"
            }
          },
          "maxLiquidityPerTick()": {
            "details": "This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool",
            "returns": {
              "_0": "The max amount of liquidity per tick"
            }
          },
          "tickSpacing()": {
            "details": "Ticks can only be used at multiples of this value, minimum of 1 and always positive e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ... This value is an int24 to avoid casting even though it is always positive.",
            "returns": {
              "_0": "The tick spacing"
            }
          },
          "token0()": {
            "returns": {
              "_0": "The token contract address"
            }
          },
          "token1()": {
            "returns": {
              "_0": "The token contract address"
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "factory()": {
            "notice": "The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface"
          },
          "fee()": {
            "notice": "The pool's fee in hundredths of a bip, i.e. 1e-6"
          },
          "maxLiquidityPerTick()": {
            "notice": "The maximum amount of position liquidity that can use any tick in the range"
          },
          "tickSpacing()": {
            "notice": "The pool tick spacing"
          },
          "token0()": {
            "notice": "The first of the two tokens of the pool, sorted by address"
          },
          "token1()": {
            "notice": "The second of the two tokens of the pool, sorted by address"
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        "@uniswap/v3-core/=lib_uniswap/v3-core/",
        "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "v3-core/=lib_uniswap/v3-core/",
        "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
      ],
      "optimizer": {
        "runs": 999999999,
        "details": {
          "peephole": true,
          "inliner": true,
          "jumpdestRemover": true,
          "orderLiterals": true,
          "deduplicate": true,
          "cse": true,
          "constantOptimizer": true,
          "yul": true,
          "yulDetails": {
            "stackAllocation": true,
            "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
          }
        }
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": "IUniswapV3PoolImmutables"
      },
      "libraries": {}
    },
    "sources": {
      "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": {
        "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7",
        "urls": [
          "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047",
          "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"
        ],
        "license": "GPL-2.0-or-later"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol",
    "id": 44195,
    "exportedSymbols": {
      "IUniswapV3PoolImmutables": [
        44194
      ]
    },
    "nodeType": "SourceUnit",
    "src": "45:1766:33",
    "nodes": [
      {
        "id": 44156,
        "nodeType": "PragmaDirective",
        "src": "45:24:33",
        "nodes": [],
        "literals": [
          "solidity",
          ">=",
          "0.5",
          ".0"
        ]
      },
      {
        "id": 44194,
        "nodeType": "ContractDefinition",
        "src": "224:1586:33",
        "nodes": [
          {
            "id": 44163,
            "nodeType": "FunctionDefinition",
            "src": "408:51:33",
            "nodes": [],
            "documentation": {
              "id": 44158,
              "nodeType": "StructuredDocumentation",
              "src": "265:138:33",
              "text": "@notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\n @return The contract address"
            },
            "functionSelector": "c45a0155",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "factory",
            "nameLocation": "417:7:33",
            "parameters": {
              "id": 44159,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "424:2:33"
            },
            "returnParameters": {
              "id": 44162,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44161,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 44163,
                  "src": "450:7:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44160,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "450:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "449:9:33"
            },
            "scope": 44194,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44169,
            "nodeType": "FunctionDefinition",
            "src": "583:50:33",
            "nodes": [],
            "documentation": {
              "id": 44164,
              "nodeType": "StructuredDocumentation",
              "src": "465:113:33",
              "text": "@notice The first of the two tokens of the pool, sorted by address\n @return The token contract address"
            },
            "functionSelector": "0dfe1681",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "token0",
            "nameLocation": "592:6:33",
            "parameters": {
              "id": 44165,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "598:2:33"
            },
            "returnParameters": {
              "id": 44168,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44167,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 44169,
                  "src": "624:7:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44166,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "624:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "623:9:33"
            },
            "scope": 44194,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44175,
            "nodeType": "FunctionDefinition",
            "src": "758:50:33",
            "nodes": [],
            "documentation": {
              "id": 44170,
              "nodeType": "StructuredDocumentation",
              "src": "639:114:33",
              "text": "@notice The second of the two tokens of the pool, sorted by address\n @return The token contract address"
            },
            "functionSelector": "d21220a7",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "token1",
            "nameLocation": "767:6:33",
            "parameters": {
              "id": 44171,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "773:2:33"
            },
            "returnParameters": {
              "id": 44174,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44173,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 44175,
                  "src": "799:7:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44172,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "799:7:33",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "798:9:33"
            },
            "scope": 44194,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44181,
            "nodeType": "FunctionDefinition",
            "src": "903:46:33",
            "nodes": [],
            "documentation": {
              "id": 44176,
              "nodeType": "StructuredDocumentation",
              "src": "814:84:33",
              "text": "@notice The pool's fee in hundredths of a bip, i.e. 1e-6\n @return The fee"
            },
            "functionSelector": "ddca3f43",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "fee",
            "nameLocation": "912:3:33",
            "parameters": {
              "id": 44177,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "915:2:33"
            },
            "returnParameters": {
              "id": 44180,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44179,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 44181,
                  "src": "941:6:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 44178,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "941:6:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "940:8:33"
            },
            "scope": 44194,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44187,
            "nodeType": "FunctionDefinition",
            "src": "1318:53:33",
            "nodes": [],
            "documentation": {
              "id": 44182,
              "nodeType": "StructuredDocumentation",
              "src": "955:358:33",
              "text": "@notice The pool tick spacing\n @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n This value is an int24 to avoid casting even though it is always positive.\n @return The tick spacing"
            },
            "functionSelector": "d0c93a7c",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "tickSpacing",
            "nameLocation": "1327:11:33",
            "parameters": {
              "id": 44183,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1338:2:33"
            },
            "returnParameters": {
              "id": 44186,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44185,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 44187,
                  "src": "1364:5:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 44184,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "1364:5:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1363:7:33"
            },
            "scope": 44194,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44193,
            "nodeType": "FunctionDefinition",
            "src": "1745:63:33",
            "nodes": [],
            "documentation": {
              "id": 44188,
              "nodeType": "StructuredDocumentation",
              "src": "1377:363:33",
              "text": "@notice The maximum amount of position liquidity that can use any tick in the range\n @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n @return The max amount of liquidity per tick"
            },
            "functionSelector": "70cf754a",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "maxLiquidityPerTick",
            "nameLocation": "1754:19:33",
            "parameters": {
              "id": 44189,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1773:2:33"
            },
            "returnParameters": {
              "id": 44192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44191,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 44193,
                  "src": "1799:7:33",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 44190,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "1799:7:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1798:9:33"
            },
            "scope": 44194,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IUniswapV3PoolImmutables",
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": {
          "id": 44157,
          "nodeType": "StructuredDocumentation",
          "src": "71:153:33",
          "text": "@title Pool state that never changes\n @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values"
        },
        "fullyImplemented": false,
        "linearizedBaseContracts": [
          44194
        ],
        "name": "IUniswapV3PoolImmutables",
        "nameLocation": "234:24:33",
        "scope": 44195,
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "license": "GPL-2.0-or-later"
  },
  "id": 33
}