Structs ​
Structs ​
FTokenDetails ​
solidity
struct FTokenDetails {
address tokenAddress;
bool eip2612Deposits;
bool isNativeUnderlying;
string name;
string symbol;
uint256 decimals;
address asset;
uint256 totalAssets;
uint256 totalSupply;
uint256 convertToShares;
uint256 convertToAssets;
// Streaming bonus APR (`100` = 1%, Liquidity scale). Renamed from legacy `rewardsRate`; on-chain `1e12` → `÷ 1e10`.
uint256 relativeModelRate;
// Signed APR offset from FluidLendingStaticRateModel (`100` = 1%). Positive = on top of Liquidity;
// negative = below. Zero when streaming is active or static is wired but not currently accruing.
int256 staticModelRate;
// true when a static rate model is wired on the fToken (even if the program has ended)
bool isStaticRate;
// true when a rewards/static program is currently accruing (`fToken.getData().rewardsActive_`).
// After stop/natural end the model may stay wired (`isStaticRate` true) while this is false.
bool rewardsActive;
// Liquidity-layer supply APR (`100` = 1%, same as `LiquidityResolver.supplyRate`).
uint256 liquidityRate;
// Combined holder APR (`100` = 1%). Streaming: `liquidityRate + relativeModelRate`.
// Static active: `max(0, liquidityRate + staticModelRate)`. Ended: `liquidityRate`.
uint256 totalRate;
// difference between fToken assets & actual deposit at Liquidity. (supplyAtLiquidity - totalAssets).
// if negative, rewards must be funded to guarantee withdrawal is possible for all users. This happens
// by executing rebalance().
int256 rebalanceDifference;
// liquidity related data such as supply amount, limits, expansion etc.
FluidLiquidityResolverStructs.UserSupplyData liquidityUserSupplyData;
// `ACCESS_TYPE()` on permissioned-stack fTokens (`0` = public/ungated, `1` = permissioned).
// Defaults to `0` when the selector is missing (production / unknown fTokens).
uint8 accessType;
}UserPosition ​
solidity
struct UserPosition {
uint256 fTokenShares;
uint256 underlyingAssets;
uint256 underlyingBalance;
uint256 allowance;
}FTokenDetailsUserPosition ​
solidity
struct FTokenDetailsUserPosition {
FTokenDetails fTokenDetails;
UserPosition userPosition;
}