[
  {
    "type": "constructor",
    "inputs": [
      {
        "name": "_poolManager",
        "type": "address",
        "internalType": "contract IPoolManager"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "ladderView",
    "inputs": [
      {
        "name": "ladder",
        "type": "address",
        "internalType": "contract SmartLpLadder"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct SmartLpHookLens.LadderView",
        "components": [
          {
            "name": "epoch",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "epochStartedAt",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "epochEndsAt",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "paused",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "totalSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "navQuote",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "stockIdle",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "quoteIdle",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "stockInRungs",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "quoteInRungs",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "rungs",
            "type": "tuple[]",
            "internalType": "struct SmartLpLadder.Rung[]",
            "components": [
              {
                "name": "tickLower",
                "type": "int24",
                "internalType": "int24"
              },
              {
                "name": "tickUpper",
                "type": "int24",
                "internalType": "int24"
              },
              {
                "name": "liquidity",
                "type": "uint128",
                "internalType": "uint128"
              }
            ]
          },
          {
            "name": "config",
            "type": "tuple",
            "internalType": "struct SmartLpLadder.Config",
            "components": [
              {
                "name": "rungBps",
                "type": "uint16[]",
                "internalType": "uint16[]"
              },
              {
                "name": "widthSpacings",
                "type": "uint8",
                "internalType": "uint8"
              },
              {
                "name": "epochSecs",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "staleAfter",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "depthGateMult",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "minDepositQuote",
                "type": "uint128",
                "internalType": "uint128"
              },
              {
                "name": "capQuote",
                "type": "uint128",
                "internalType": "uint128"
              }
            ]
          },
          {
            "name": "feedFresh",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "oracleTick",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "poolTick",
            "type": "int24",
            "internalType": "int24"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "poolManager",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract IPoolManager"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "poolView",
    "inputs": [
      {
        "name": "hook",
        "type": "address",
        "internalType": "contract SmartLpHook"
      },
      {
        "name": "key",
        "type": "tuple",
        "internalType": "struct PoolKey",
        "components": [
          {
            "name": "currency0",
            "type": "address",
            "internalType": "Currency"
          },
          {
            "name": "currency1",
            "type": "address",
            "internalType": "Currency"
          },
          {
            "name": "fee",
            "type": "uint24",
            "internalType": "uint24"
          },
          {
            "name": "tickSpacing",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "hooks",
            "type": "address",
            "internalType": "contract IHooks"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct SmartLpHookLens.PoolView",
        "components": [
          {
            "name": "sqrtPriceX96",
            "type": "uint160",
            "internalType": "uint160"
          },
          {
            "name": "poolTick",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "liquidity",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "lpFeeSlot0",
            "type": "uint24",
            "internalType": "uint24"
          },
          {
            "name": "oracleAnswer",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "oracleUpdatedAt",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "oracleTick",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "oracleFresh",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "gapTicks",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "feeZeroForOne",
            "type": "uint24",
            "internalType": "uint24"
          },
          {
            "name": "feeOneForZero",
            "type": "uint24",
            "internalType": "uint24"
          },
          {
            "name": "awayZeroForOne",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "awayOneForZero",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "recaptureActive",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "recaptureUntil",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "accruedLp0",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "accruedLp1",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "accruedProtocol0",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "accruedProtocol1",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "accruedPartner0",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "accruedPartner1",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "partnerRecipient",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "partnerBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "params",
            "type": "tuple",
            "internalType": "struct SmartLpHook.FeeParams",
            "components": [
              {
                "name": "baseFee",
                "type": "uint24",
                "internalType": "uint24"
              },
              {
                "name": "slopePerTick",
                "type": "uint24",
                "internalType": "uint24"
              },
              {
                "name": "maxFee",
                "type": "uint24",
                "internalType": "uint24"
              },
              {
                "name": "staleFee",
                "type": "uint24",
                "internalType": "uint24"
              },
              {
                "name": "staleAfter",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "recaptureSecs",
                "type": "uint32",
                "internalType": "uint32"
              },
              {
                "name": "recaptureShareBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "maxSkimBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "perfBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "deadbandTicks",
                "type": "uint24",
                "internalType": "uint24"
              }
            ]
          },
          {
            "name": "config",
            "type": "tuple",
            "internalType": "struct SmartLpHook.PoolConfig",
            "components": [
              {
                "name": "feed",
                "type": "address",
                "internalType": "contract IAggregatorV3"
              },
              {
                "name": "stockIs0",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "stockDecimals",
                "type": "uint8",
                "internalType": "uint8"
              },
              {
                "name": "quoteDecimals",
                "type": "uint8",
                "internalType": "uint8"
              },
              {
                "name": "registered",
                "type": "bool",
                "internalType": "bool"
              }
            ]
          }
        ]
      }
    ],
    "stateMutability": "view"
  }
]
