BLens

BLens is the read-only Mercury lens on Ethereum, covering market price, BLV, premium, circulating supply, credit previews, pool state, and full JSON ABI for UIs and bots.

Overview

BLens is a read-only view contract (~50 entry points) for bToken and protocol state: market and BLV prices, premium, pool reserves and fees, per-user staking and credit, and config. Typical uses:

  • Market and floor pricing (BLV, active price, premium)
  • Pool state (reserves, supply, fees)
  • User positions (staking, credit)
  • Parameter reads

Price Functions

getActivePrice

Current market (active) price in WAD precision (1e18 = 1.0 in WAD).

function getActivePrice(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, active price (WAD)


getBLV

Current Baseline Value (floor price).

function getBLV(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, BLV (WAD)


getPremium

Premium of market price over BLV (active price minus floor).

function getPremium(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, premium (WAD)


getBookPrice

Book value style price: total reserves over circulating supply (see on-chain definition).

function getBookPrice(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, book price (WAD)


Pool State Functions

totalReserves

Total reserves in the pool (reserve asset units, normalized in-state).

function totalReserves(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, reserve balance backing the pool


totalBTokens

bTokens currently held in the pool (non-circulating / protocol side).

function totalBTokens(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, pool bToken inventory (normalized)


totalSupply

Total bToken supply (fixed at deployment).

function totalSupply(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, total supply


getCirculatingSupply

Circulating supply: total less protocol- (pool-) held bTokens.

function getCirculatingSupply(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, circulating bTokens in user hands


reserve

The reserve asset (ERC20) for this bToken’s pool (or placeholder for native; see on-chain BLens / pool).

function reserve(BToken _bToken) external view returns (ERC20)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: ERC20, reserve token


Ratio Functions

getInventoryRatio

Pool inventory to circulating supply ratio (used in BMM / lens displays).

function getInventoryRatio(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, inventory ratio (WAD)


getBufferRatio

Buffer slice of reserves relative to the model (WAD).

function getBufferRatio(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, buffer ratio (WAD)


getLiquidityLeverage

Convenience metric (e.g. buffer ratio × inventory ratio) as exposed by BLens.

function getLiquidityLeverage(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, combined leverage / efficiency scalar (WAD)


Fee Functions

poolFeeShare

Share of fee flow allocated to the pool (BLV growth) for this bToken (WAD).

function poolFeeShare(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, pool fee share (WAD)


creatorFeePct

Creator fee as a share of the post-protocol-fee pot (WAD; see on-chain FeeLib / pool).

function creatorFeePct(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, creator fee pct (WAD)


totalFeeShare

Aggregate or configured fee share read used by the lens (see on-chain for exact meaning).

function totalFeeShare(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, fee share scalar (WAD)


creatorClaimable

Creator fees that can be claimed (reserve units).

function creatorClaimable(BToken _bToken) external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: uint256, claimable creator fees (reserve)


Position Functions

getCreditAccount

User credit (borrow) position: locked bToken collateral and outstanding debt in the State.CreditAccount struct.

function getCreditAccount(BToken _bToken, address _user)
  external view returns (State.CreditAccount memory)
ParameterTypeDescription
_bTokenBTokenPool to query
_useraddressUser to query

Returns: State.CreditAccount, full in-memory credit struct (fields as on-chain State)


getStakedAccount

User staking position: staked amount and rewardDebt (reward accounting) in State.StakedAccount.

function getStakedAccount(BToken _bToken, address _user)
  external view returns (State.StakedAccount memory)
ParameterTypeDescription
_bTokenBTokenPool to query
_useraddressUser to query

Returns: State.StakedAccount, full in-memory staking struct


getMaxBorrow

Maximum borrowable reserves for a given collateral amount at current BLV / policy (see on-chain rules).

function getMaxBorrow(BToken _bToken, uint256 _collateral)
  external view returns (uint256)
ParameterTypeDescription
_bTokenBTokenPool to query
_collateraluint256Collateral amount in bToken units to evaluate

Returns: uint256, max borrow in reserve units (preview)


getLeverageResult

Preview of a leverage round: added collateral, added debt, reserves required to hit the target factor (see BCredit).

function getLeverageResult(
  BToken _bToken,
  uint256 _collateral,
  uint256 _leverageFactor
) external view returns (
  uint256 collateralAdded_,
  uint256 debtAdded_,
  uint256 reservesNeeded_
)
ParameterTypeDescription
_bTokenBTokenPool to query
_collateraluint256Initial collateral (bToken)
_leverageFactoruint256Target leverage (WAD, e.g. 2e18)

Returns:

  • collateralAdded_: End-state collateral after the leverage path
  • debtAdded_: New debt
  • reservesNeeded_: Reserves the path expects to use

Protocol Configuration

protocolFeeRecipient

Address that receives the protocol’s fee share (global, not per bToken).

function protocolFeeRecipient() external view returns (address)

Returns: address, protocol fee recipient


protocolFeePct

Global protocol fee as a WAD share taken before creator/staking split.

function protocolFeePct() external view returns (uint256)

Returns: uint256, protocol fee pct (WAD)


originationFee

WAD origination fee on new credit debt (see State.meta).

function originationFee() external view returns (uint256)

Returns: uint256, origination fee (WAD)


isPoolPaused

Whether trading / pool operations are paused for this bToken (pool-level guard).

function isPoolPaused(BToken _bToken) external view returns (bool)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: bool, true if the pool is paused


isProtocolPaused

Whether the whole protocol is paused (global).

function isProtocolPaused() external view returns (bool)

Returns: bool, true if protocol is paused


Hook Functions

hasHook

Whether this bToken’s pool is wired to a V4 pool/hook in the way BLens tracks.

function hasHook(BToken _bToken) external view returns (bool)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: bool, true if a hook is present for the lens’s notion of hooking


poolKey

Uniswap v4 PoolKey for the bToken’s pool (currencies, fee tier, tick spacing, hook).

function poolKey(BToken _bToken) external view returns (PoolKey memory)
ParameterTypeDescription
_bTokenBTokenbToken to query

Returns: PoolKey, in-memory v4 key


Component Functions

getComponents

Array of Component / relay-facing addresses the lens is compiled against (BFactory, BSwap, etc.; see on-chain return order).

function getComponents() external view returns (address[] memory)

Returns: address[], registered component addresses (do not treat order as API-stable without checking BLens source for your deployment)


Usage Example

// Get current prices
uint256 marketPrice = blens.getActivePrice(bToken);
uint256 blv = blens.getBLV(bToken);
uint256 premium = blens.getPremium(bToken);

// Check pool state
uint256 reserves = blens.totalReserves(bToken);
uint256 circulating = blens.getCirculatingSupply(bToken);

// Preview leverage
(uint256 collateral, uint256 debt, uint256 needed) = blens.getLeverageResult(
  bToken,
  1000e18, // initial collateral
  2e18   // 2x leverage
);

// Check user position
State.CreditAccount memory credit = blens.getCreditAccount(bToken, user);
uint256 maxBorrow = blens.getMaxBorrow(bToken, credit.collateral);

ABI

[
  {
    "type": "function",
    "name": "LABEL",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "ROUTES",
    "inputs": [],
    "outputs": [
      {
        "name": "routes_",
        "type": "bytes4[]",
        "internalType": "bytes4[]"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "VERSION",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "accumulator",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "activePrice",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "blvPrice",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "claimableYield",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "convexityExp",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "creator",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "creatorClaimable",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "creatorFeePct",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "creditAccount",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      },
      {
        "name": "_user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "defaultLiquidityFeePct",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "defaultProtocolFeePct",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "deployerProfile",
    "inputs": [
      {
        "name": "_user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct State.DeployerProfile",
        "components": [
          {
            "name": "active",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "approvedCreditDeployer",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "pauser",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "protocolFeePct",
            "type": "uint64",
            "internalType": "uint64"
          },
          {
            "name": "liquidityFeePct",
            "type": "uint64",
            "internalType": "uint64"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getBookPrice",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getCirculatingSupply",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getComponents",
    "inputs": [],
    "outputs": [
      {
        "name": "components_",
        "type": "address[]",
        "internalType": "contract Component[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "getMaker",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct State.Maker",
        "components": [
          {
            "name": "initialized",
            "type": "bool",
            "internalType": "bool"
          },
          {
            "name": "blvPrice",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "swapFee",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "maxCirc",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "maxReserves",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "convexityExp",
            "type": "uint128",
            "internalType": "uint128"
          },
          {
            "name": "lastInvariant",
            "type": "uint256",
            "internalType": "uint256"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "hasHook",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isApprovedCreditDeployer",
    "inputs": [
      {
        "name": "_user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isLocked",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isPoolPaused",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "isProtocolPaused",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "lastInvariant",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "lastUpdatedTimestamp",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "liquidityFeePct",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "originationFee",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "pendingSurplus",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "pendingYield",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "poolFeeRecipient",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "poolFeeShare",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "creator_",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "staking_",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "poolIdToBToken",
    "inputs": [
      {
        "name": "_poolId",
        "type": "bytes32",
        "internalType": "PoolId"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "poolKey",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "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"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "protocolClaimable",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "protocolFeePct",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "protocolFeeRecipient",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "quoteLeverage",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      },
      {
        "name": "_collateralIn",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "_leverageFactor",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "targetCollateral_",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "maxSwapReservesIn_",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "expectedDebt_",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "slippage_",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "reserve",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "contract ERC20"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "reserveHoldings",
    "inputs": [
      {
        "name": "_reserve",
        "type": "address",
        "internalType": "contract ERC20"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "settledReserves",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "stakedPosition",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      },
      {
        "name": "_user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "supportsInterface",
    "inputs": [
      {
        "name": "_interfaceId",
        "type": "bytes4",
        "internalType": "bytes4"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "pure"
  },
  {
    "type": "function",
    "name": "swapFee",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "timeToAdapt",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "timeToDistribute",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "tokensPerSecond",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalBTokens",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalCollateral",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalDebt",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalFeeShare",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "creator_",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "staking_",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "protocol_",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalReserves",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalStaked",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "totalSupply",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "withdrawable",
    "inputs": [
      {
        "name": "_bToken",
        "type": "address",
        "internalType": "contract BToken"
      },
      {
        "name": "_user",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "error",
    "name": "BLens_InvalidLeverageFactor",
    "inputs": []
  },
  {
    "type": "error",
    "name": "Component_NotPermitted",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidConvexityExp",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvariantDecreased",
    "inputs": [
      {
        "name": "prevInvariant",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "newInvariant",
        "type": "uint256",
        "internalType": "uint256"
      }
    ]
  }
]