IUniversalFund

Git Source

Interface for Universal Fund operations

Defines the standard interface for fund operations including configuration, status management, and core functionality

Functions

initialize

Initialize the fund with configuration

function initialize(
    string memory name,
    string memory symbol,
    FundConfig memory config,
    address capitalAccountRegistry,
    address distributionEngine,
    address unitToken
) external;

getFundConfig

Get fund configuration

function getFundConfig() external view returns (FundConfig memory);

getFundStatus

Get current fund status

function getFundStatus() external view returns (FundStatus);

setFundStatus

Update fund status

function setFundStatus(FundStatus newStatus) external;

name

Get fund name

function name() external view returns (string memory);

symbol

Get fund symbol

function symbol() external view returns (string memory);

getTotalCommitments

Get total committed capital

function getTotalCommitments() external view returns (uint256);

getTotalContributions

Get total contributed capital

function getTotalContributions() external view returns (uint256);

getUnfundedCommitments

Get unfunded commitments

function getUnfundedCommitments() external view returns (uint256);

getPortfolioValue

Get current portfolio value

function getPortfolioValue() external view returns (uint256);

canExtendTerm

Check if fund term can be extended

function canExtendTerm() external view returns (bool);

extendFundTerm

Extend fund term

function extendFundTerm(uint256 additionalMonths) external;

pause

Pause fund operations

function pause() external;

unpause

Unpause fund operations

function unpause() external;

paused

Check if fund is paused

function paused() external view returns (bool);

Events

FundConfigUpdated

Emitted when fund configuration is updated

event FundConfigUpdated(FundConfig config);

FundStatusChanged

Emitted when fund status changes

event FundStatusChanged(FundStatus oldStatus, FundStatus newStatus);

InvestmentMade

Emitted when an investment is made

event InvestmentMade(bytes32 indexed investmentId, address indexed target, uint256 amount);

InvestmentExited

Emitted when an investment is exited

event InvestmentExited(bytes32 indexed investmentId, uint256 exitValue);

Emitted when NAV is updated

event NAVUpdated(uint256 newNAV, uint256 navPerShare);

Structs

FundConfig

Fund configuration parameters

struct FundConfig {
    FundType fundType;
    FundStructure structure;
    uint256 targetSize;
    uint256 hardCap;
    uint256 managementFeeBps;
    uint256 carriedInterestBps;
    uint256 preferredReturnBps;
    uint256 fundTermMonths;
    uint256 extensionMonths;
    address denominationAsset;
    uint256 minimumCommitment;
    bool allowRedemptions;
    uint256 redemptionNoticeDays;
}

Investment

Investment tracking structure

struct Investment {
    bytes32 id;
    address asset;
    uint256 amount;
    address target;
    InvestmentType investmentType;
    uint256 timestamp;
    bool isActive;
    uint256 currentValue;
    int256 unrealizedPnL;
    bytes metadata;
}

InvestmentLimits

Investment limits and constraints

struct InvestmentLimits {
    uint256 maxAllocation;
    uint256 maxSingleInvestment;
    bool isActive;
}

Enums

FundType

Fund types supported by the protocol

enum FundType {
    OPEN_END,
    CLOSED_END
}

FundStructure

Fund structures supported by the protocol

enum FundStructure {
    LP_GP,
    LLC,
    CORPORATION,
    TRUST
}

FundStatus

Current operational status of the fund

enum FundStatus {
    FUNDRAISING,
    ACTIVE,
    CLOSED,
    LIQUIDATING
}

InvestmentType

Types of investments the fund can make

enum InvestmentType {
    EQUITY,
    DEBT,
    HYBRID,
    REAL_ESTATE,
    CRYPTO
}

Last updated

Was this helpful?