IUniversalFund
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);
NAVUpdated
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?