[
  {
    "type": "function",
    "name": "buckets",
    "inputs": [
      {
        "name": "hook",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "poolId",
        "type": "bytes32",
        "internalType": "PoolId"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct ISinjohLens.BucketsView",
        "components": [
          {
            "name": "platform",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "creator",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "automation",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "floor",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "treasury",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "floor",
    "inputs": [
      {
        "name": "hook",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "poolId",
        "type": "bytes32",
        "internalType": "PoolId"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct ISinjohLens.FloorView",
        "components": [
          {
            "name": "floorOn",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "floorTick",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "bandTop",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "floorCash",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "required",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "q",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "k",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "outstanding",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "migration",
    "inputs": [
      {
        "name": "hook",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "poolId",
        "type": "bytes32",
        "internalType": "PoolId"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct ISinjohLens.MigrationView",
        "components": [
          {
            "name": "migrated",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "openingId",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "opening",
            "type": "tuple",
            "internalType": "struct ISinjohMigrationFactory.Opening",
            "components": [
              {
                "name": "token",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "backing",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "creator",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "legacy",
                "type": "tuple",
                "internalType": "struct ISinjohMigrationFactory.Legacy",
                "components": [
                  {
                    "name": "kind",
                    "type": "uint8",
                    "internalType": "enum ISinjohMigrationFactory.LegacyKind"
                  },
                  {
                    "name": "pool",
                    "type": "address",
                    "internalType": "address"
                  },
                  {
                    "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"
                      }
                    ]
                  }
                ]
              },
              {
                "name": "executableAt",
                "type": "uint64",
                "internalType": "uint64"
              },
              {
                "name": "cancelled",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "opened",
                "type": "bool",
                "internalType": "bool"
              }
            ]
          },
          {
            "name": "route",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "stage",
            "type": "tuple",
            "internalType": "struct ISinjohLens.MigrationStageView",
            "components": [
              {
                "name": "enabled",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "switched",
                "type": "bool",
                "internalType": "bool"
              },
              {
                "name": "configuration",
                "type": "tuple",
                "internalType": "struct ISinjohMigrationRoute.Stage",
                "components": [
                  {
                    "name": "liquidityBps",
                    "type": "uint16",
                    "internalType": "uint16"
                  },
                  {
                    "name": "releaseBps",
                    "type": "uint16",
                    "internalType": "uint16"
                  },
                  {
                    "name": "milestone",
                    "type": "uint256",
                    "internalType": "uint256"
                  },
                  {
                    "name": "release",
                    "type": "tuple[]",
                    "internalType": "struct ActionEngine.Action[]",
                    "components": [
                      {
                        "name": "kind",
                        "type": "uint8",
                        "internalType": "enum ActionEngine.Kind"
                      },
                      {
                        "name": "share",
                        "type": "uint16",
                        "internalType": "uint16"
                      },
                      {
                        "name": "recipient",
                        "type": "address",
                        "internalType": "address"
                      },
                      {
                        "name": "disposition",
                        "type": "uint8",
                        "internalType": "enum ActionEngine.Disposition"
                      },
                      {
                        "name": "hook",
                        "type": "address",
                        "internalType": "address"
                      },
                      {
                        "name": "poolId",
                        "type": "bytes32",
                        "internalType": "PoolId"
                      },
                      {
                        "name": "pathId",
                        "type": "uint256",
                        "internalType": "uint256"
                      },
                      {
                        "name": "outToken",
                        "type": "address",
                        "internalType": "address"
                      }
                    ]
                  }
                ]
              },
              {
                "name": "contributed",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "reserved",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "liquidityHeld",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "releaseHeld",
                "type": "uint256[]",
                "internalType": "uint256[]"
              }
            ]
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "migrationOpening",
    "inputs": [
      {
        "name": "factory",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "id",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "o",
        "type": "tuple",
        "internalType": "struct ISinjohMigrationFactory.Opening",
        "components": [
          {
            "name": "token",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "backing",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "creator",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "legacy",
            "type": "tuple",
            "internalType": "struct ISinjohMigrationFactory.Legacy",
            "components": [
              {
                "name": "kind",
                "type": "uint8",
                "internalType": "enum ISinjohMigrationFactory.LegacyKind"
              },
              {
                "name": "pool",
                "type": "address",
                "internalType": "address"
              },
              {
                "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"
                  }
                ]
              }
            ]
          },
          {
            "name": "executableAt",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "cancelled",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "opened",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      },
      {
        "name": "status",
        "type": "uint8",
        "internalType": "uint8"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "migrationStage",
    "inputs": [
      {
        "name": "route",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct ISinjohLens.MigrationStageView",
        "components": [
          {
            "name": "enabled",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "switched",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "configuration",
            "type": "tuple",
            "internalType": "struct ISinjohMigrationRoute.Stage",
            "components": [
              {
                "name": "liquidityBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "releaseBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "milestone",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "release",
                "type": "tuple[]",
                "internalType": "struct ActionEngine.Action[]",
                "components": [
                  {
                    "name": "kind",
                    "type": "uint8",
                    "internalType": "enum ActionEngine.Kind"
                  },
                  {
                    "name": "share",
                    "type": "uint16",
                    "internalType": "uint16"
                  },
                  {
                    "name": "recipient",
                    "type": "address",
                    "internalType": "address"
                  },
                  {
                    "name": "disposition",
                    "type": "uint8",
                    "internalType": "enum ActionEngine.Disposition"
                  },
                  {
                    "name": "hook",
                    "type": "address",
                    "internalType": "address"
                  },
                  {
                    "name": "poolId",
                    "type": "bytes32",
                    "internalType": "PoolId"
                  },
                  {
                    "name": "pathId",
                    "type": "uint256",
                    "internalType": "uint256"
                  },
                  {
                    "name": "outToken",
                    "type": "address",
                    "internalType": "address"
                  }
                ]
              }
            ]
          },
          {
            "name": "contributed",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "reserved",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "liquidityHeld",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "releaseHeld",
            "type": "uint256[]",
            "internalType": "uint256[]"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "pending",
    "inputs": [
      {
        "name": "hook",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "poolId",
        "type": "bytes32",
        "internalType": "PoolId"
      },
      {
        "name": "from",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "count",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct ISinjohLens.PendingView",
        "components": [
          {
            "name": "takeover",
            "type": "tuple",
            "internalType": "struct ISinjohGovernance.PendingTakeover",
            "components": [
              {
                "name": "id",
                "type": "bytes32",
                "internalType": "bytes32"
              },
              {
                "name": "newCreator",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "scheduledAt",
                "type": "uint64",
                "internalType": "uint64"
              }
            ]
          },
          {
            "name": "pendingCreator",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "ops",
            "type": "tuple[]",
            "internalType": "struct ISinjohLens.OpView[]",
            "components": [
              {
                "name": "id",
                "type": "bytes32",
                "internalType": "bytes32"
              },
              {
                "name": "op",
                "type": "tuple",
                "internalType": "struct ISinjohVault.Op",
                "components": [
                  {
                    "name": "kind",
                    "type": "uint8",
                    "internalType": "enum ISinjohVault.OpKind"
                  },
                  {
                    "name": "done",
                    "type": "bool",
                    "internalType": "bool"
                  },
                  {
                    "name": "epoch",
                    "type": "uint32",
                    "internalType": "uint32"
                  },
                  {
                    "name": "readyAt",
                    "type": "uint64",
                    "internalType": "uint64"
                  },
                  {
                    "name": "target",
                    "type": "address",
                    "internalType": "address"
                  },
                  {
                    "name": "amount",
                    "type": "uint256",
                    "internalType": "uint256"
                  }
                ]
              },
              {
                "name": "status",
                "type": "uint8",
                "internalType": "enum ISinjohLens.OpStatus"
              }
            ]
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "price",
    "inputs": [
      {
        "name": "hook",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "poolId",
        "type": "bytes32",
        "internalType": "PoolId"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct ISinjohLens.PriceView",
        "components": [
          {
            "name": "sqrtPriceX96",
            "type": "uint160",
            "internalType": "uint160"
          },
          {
            "name": "poolTick",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "tokenTick",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "average",
            "type": "int256",
            "internalType": "int256"
          },
          {
            "name": "averageTime",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "anchor",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "ranges",
            "type": "tuple[]",
            "internalType": "struct ISinjohHook.Range[]",
            "components": [
              {
                "name": "tickLower",
                "type": "int24",
                "internalType": "int24"
              },
              {
                "name": "tickUpper",
                "type": "int24",
                "internalType": "int24"
              },
              {
                "name": "liquidity",
                "type": "uint128",
                "internalType": "uint128"
              }
            ]
          },
          {
            "name": "marketCap",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "rates",
    "inputs": [
      {
        "name": "hook",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "poolId",
        "type": "bytes32",
        "internalType": "PoolId"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct ISinjohLens.RatesView",
        "components": [
          {
            "name": "baseBps",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "buyCreatorBps",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "sellCreatorBps",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "launchSurchargeBps",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "sellSurchargeOn",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "sellSurchargeTick",
            "type": "int24",
            "internalType": "int24"
          },
          {
            "name": "buy",
            "type": "tuple",
            "internalType": "struct TaxMath.Params",
            "components": [
              {
                "name": "model",
                "type": "uint8",
                "internalType": "enum TaxMath.Model"
              },
              {
                "name": "x",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "y",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "z",
                "type": "uint256",
                "internalType": "uint256"
              }
            ]
          },
          {
            "name": "sell",
            "type": "tuple",
            "internalType": "struct TaxMath.Params",
            "components": [
              {
                "name": "model",
                "type": "uint8",
                "internalType": "enum TaxMath.Model"
              },
              {
                "name": "x",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "y",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "z",
                "type": "uint256",
                "internalType": "uint256"
              }
            ]
          },
          {
            "name": "netBuys",
            "type": "int256",
            "internalType": "int256"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "reserves",
    "inputs": [
      {
        "name": "hook",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "poolId",
        "type": "bytes32",
        "internalType": "PoolId"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct ISinjohLens.ReservesView",
        "components": [
          {
            "name": "treasuryCash",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "heldClaims",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "current",
            "type": "tuple",
            "internalType": "struct ISinjohVault.Position",
            "components": [
              {
                "name": "venue",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "shares",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "principal",
                "type": "uint256",
                "internalType": "uint256"
              }
            ]
          },
          {
            "name": "currentClaimValue",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "currentPayable",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "old",
            "type": "tuple",
            "internalType": "struct ISinjohVault.Position",
            "components": [
              {
                "name": "venue",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "shares",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "principal",
                "type": "uint256",
                "internalType": "uint256"
              }
            ]
          },
          {
            "name": "oldClaimValue",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "oldPayable",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "lastYieldStep",
            "type": "uint64",
            "internalType": "uint64"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "roles",
    "inputs": [
      {
        "name": "hook",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "poolId",
        "type": "bytes32",
        "internalType": "PoolId"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct ISinjohLens.RolesView",
        "components": [
          {
            "name": "creator",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "pendingCreator",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "feeDestination",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "routeConnected",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "governor",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "safes",
            "type": "address[4]",
            "internalType": "address[4]"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "supply",
    "inputs": [
      {
        "name": "hook",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "poolId",
        "type": "bytes32",
        "internalType": "PoolId"
      }
    ],
    "outputs": [
      {
        "name": "v",
        "type": "tuple",
        "internalType": "struct ISinjohLens.SupplyView",
        "components": [
          {
            "name": "totalSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "marketCapSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "outstanding",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "unsold",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "inventory",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "pendingDestruction",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      }
    ],
    "stateMutability": "view"
  }
]
