Asset Management

Core Asset States

Global Asset Tracking

uint128 internal _totalIdle;    // Unallocated assets
uint128 internal _totalDebt;    // Allocated assets
uint256 public sharePriceWaterMark; // High watermark for performance

// Cross-chain tracking
uint256 public totalpendingXChainInvests;
uint256 public totalPendingXChainDivests;

Per-Vault Asset Tracking

/// @notice A struct describing the status of an underlying vault
/// @dev Contains data about a vault's chain ID, share price, oracle, and more
struct VaultData {
    /// @dev The ID of the chain where the vault is deployed
    uint64 chainId;
    /// @dev The last reported share price of the vault
    uint256 superformId;
    /// @dev The oracle that provides the share price for the vault
    ISharePriceOracle oracle;
    /// @dev The number of decimals used in the ERC4626 shares
    uint8 decimals;
    /// @dev The total assets invested in the vault
    uint128 totalDebt;
    /// @dev The address of the vault
    address vaultAddress;
}

mapping(uint256 => VaultData) public vaults;

Asset Operations

Direct Asset Management

Cross-Chain Asset Management

NFT Position Management

Fee Management

Fee Structure

Fee Assessment

Asset Accounting

Total Assets Calculation

Share Price Updates

Asset Safety

Critical Invariants

  1. Total Assets = Idle + Debt + Pending Investments

  2. Share Price Monotonicity (never decreases under normal operation)

  3. Fee Calculations Maintain Precision

  4. Asset/Share Ratio Consistency

  5. Cross-Chain Position Reconciliation

Balance Validation

Oracle Integration

Share Price Oracle

Hurdle Rate Oracle

Last updated