Orchestrates capital calls, side pockets, distributions, and final close for a closed-end fund.
State Variables
fundClassRegistry
IClosedEndFundClass public fundClassRegistry;
commitments
mapping(address => uint256) public commitments;
funded
mapping(address => uint256) public funded;
isFinalClosed
bool public isFinalClosed;
Functions
constructor
constructor(address registryAddress);
setCommitment
Sets how much each investor commits. Typically done by an admin/owner.
function setCommitment(address investor, uint256 amount) external;
fundCapital
Allows a user to fund capital in response to a capital call.
function fundCapital(address investor, uint256 amount, uint96 costBasis) external;
Parameters
Name
Type
Description
investor
address
amount
uint256
The amount the user is funding now.
costBasis
uint96
The cost basis for the new lot. In a closed-end scenario, you might fix or compute it from initial share price.
distributeProceeds
Example distribution method where the fund manager distributes realized proceeds to lot holders in proportion to their holdings, or uses some side logic. This is a stub illustrating how you'd orchestrate a partial distribution.
function distributeProceeds(uint256 totalProceeds) external;
createSidePocket
Example side pocket creation.
function createSidePocket(bytes32 sidePocketId, uint256 illiquidAssetValue) external;
finalizeFund
Closes the fund, preventing further capital calls.