import { GenericCurrency } from '../../types/general';
import type { VaultClassificationFields } from '../classification';
import type { VaultMarketExposure } from '../exposure';
export type { VaultMarketExposure } from '../exposure';
/**
 * Parsed Fluid fToken entry.
 *
 * fTokens are standalone ERC-4626 yield vaults on Fluid's shared Liquidity
 * Layer. They are NOT a lending market (no collateral, no borrow, no
 * liquidation) — just a deposit → earn shape. Modeled separately from
 * Fluid borrow vaults (`src/lending/public-data/fluid/`).
 */
export interface FluidFToken extends VaultClassificationFields {
    /** fToken (share) contract address, case-preserved from the resolver. */
    address: string;
    /** Lowercased underlying ERC20 address. Fluid's fETH has WETH as its
     *  underlying — the EEE sentinel is not used for fTokens in practice.
     *  Still normalized to `zeroAddress` if ever returned. */
    underlying: string;
    /** Share-token symbol, e.g. `fUSDC`, `fETH`. */
    symbol: string;
    /** Share-token name as returned by `name()`. Falls back to
     *  `Fluid <underlyingSymbol>` when the resolver returns an empty name. */
    name: string;
    /** Cross-provider UI label — `Fluid ${asset.symbol}` (e.g. `Fluid USDC`).
     *  Always non-empty. Mirrors `name` on most chains since Fluid's
     *  on-chain `name()` already returns the same shape; kept as a separate
     *  field for parity with the other vault providers. */
    displayName: string;
    /** Brand label for cross-provider UI parity with `MorphoVault.curatorName`
     *  / `GearboxV3Pool.curatorName`. Fluid is single-curator (the Fluid
     *  team / Instadapp), so this is the constant `'Fluid'`. */
    curatorName: string;
    /** Share and underlying decimals (same — ERC-4626 keeps them aligned). */
    decimals: number;
    /** Total underlying assets held by the vault, raw integer (wei-like) as string. */
    totalAssets: string;
    /** Total shares minted, raw integer as string. */
    totalSupply: string;
    /** `convertToShares(1e<decimals>)` — raw, 1 underlying → shares ratio. */
    convertToShares: string;
    /** `convertToAssets(1e<decimals>)` — raw, 1 share → underlying ratio. */
    convertToAssets: string;
    /** Base supply APR in percent (e.g. `2.83` = 2.83 %). From Liquidity Layer utilization. */
    supplyRate: number;
    /** Extra rewards APR in percent, on top of `supplyRate`. */
    rewardsRate: number;
    /** Sum of `supplyRate + rewardsRate` — what a depositor actually earns. */
    depositRate: number;
    /** Capability flag — the fToken supports a `depositNative()` wrapper that
     *  accepts raw ETH. Doesn't imply `underlying === zeroAddress`; for fETH
     *  the underlying is WETH and this flag is true. */
    isNativeUnderlying: boolean;
    /** True if the fToken supports EIP-2612 permit on deposits. */
    eip2612Deposits: boolean;
    /** Hydrated asset metadata from the provided token list, if any. */
    asset?: GenericCurrency;
    /** USD price of one underlying unit, if prices were supplied. */
    priceUsd?: number;
    /** Human-formatted total assets (`totalAssets / 10^decimals`). */
    totalAssetsFormatted: number;
    /** Human-formatted total assets in USD (`totalAssetsFormatted * priceUsd`). */
    totalAssetsUsd: number;
    /** Currently withdrawable underlying (raw integer as string), sourced
     *  from the Liquidity Layer's `withdrawable` field — the fToken's own
     *  supply bounded by the shared-liquidity withdrawal limit. Caps
     *  immediate exits. */
    liquidity: string;
    /** Human-formatted immediate withdrawable liquidity. */
    liquidityFormatted: number;
    /** Human-formatted immediate withdrawable liquidity in USD. */
    liquidityUsd: number;
    /** Borrowed-against-collateral breakdown. fTokens supply into Fluid's
     *  shared Liquidity Layer rather than discrete markets, so "exposure" is
     *  reframed: each entry is a Fluid borrow vault that borrows this fToken's
     *  underlying, showing the collateral it's borrowed against, the amount
     *  borrowed (`assets` in the underlying / `assetsUsd`), the share of the
     *  underlying's total borrows (`weightPct`), and that vault's borrow rate
     *  (`supplyApr`). Ordered by weight descending. Undefined when nothing
     *  borrows the underlying or the borrow-vault fetch is unavailable. */
    exposures?: VaultMarketExposure[];
}
/** Full parsed payload: per-underlying map for easy UI lookup. */
export type FluidFTokens = {
    /** Keyed by lowercased underlying address (`zeroAddress` for native ETH). */
    [underlying: string]: FluidFToken;
};
//# sourceMappingURL=types.d.ts.map