ClosedEndFundClass
Inherits: IssuedAsset
Inherits from IssuedAsset, representing a private/LLC-structured fund with no daily NAV re-pricing. Subscriptions are limited; distributions or side pockets can be managed by an external FundManager contract.
State Variables
isSubscriptionOpen
bool public isSubscriptionOpen = true;
Functions
closeSubscriptions
Closes the subscription window, preventing new createLot calls (unless overridden by operator).
function closeSubscriptions() external onlyAdmin;
openSubscriptions
Opens the subscription window again, if your fund structure allows it.
function openSubscriptions() external onlyAdmin;
createLot
Overridden createLot to optionally enforce subscription rules. E.g., block new tokens if subscriptions are closed.
function createLot(
address owner,
uint96 quantity,
address paymentCurrency,
uint96 costBasis,
uint64 acquisitionDate,
string memory uri,
bytes memory data
) public virtual override returns (bytes32 tokenId);
recordDistribution
Example of a distribution approach. Typically, the fund gets proceeds from an exit and wants to distribute them to lot holders off-chain or in a separate manager. This contract remains minimal. If you want to store distribution logic on-chain, you could add methods or references to each lot to record how much has been returned, leftover cost basis, etc.
function recordDistribution(uint256 totalProceeds) external onlyAdmin;
Events
SubscriptionsClosed
event SubscriptionsClosed();
SubscriptionsOpened
event SubscriptionsOpened();
Last updated
Was this helpful?