IFundUnit

Git Source

Inherits: IERC20, IERC20Metadata

Interface for fund unit tokens representing LP interests

Extends ERC20 with fund-specific functionality for managing LP interests

Functions

initialize

Initialize the fund unit token

function initialize(string memory name, string memory symbol, address fund, uint256 initialNAV) external;

mint

Mint units for investor contributions

function mint(address to, uint256 amount) external;

burn

Burn units for redemptions

function burn(address from, uint256 amount) external;

updateNAV

Update NAV per unit

function updateNAV(uint256 newTotalNAV) external;

requestRedemption

Request redemption of units

function requestRedemption(uint256 amount) external;

processRedemptions

Process pending redemptions

function processRedemptions(address[] calldata investors) external;

cancelRedemption

Cancel redemption request

function cancelRedemption(uint256 amount) external;

recordCommitment

Record commitment for an investor

function recordCommitment(address investor, uint256 amount) external;

createLot

Create a lot for tracking investor positions

function createLot(
    address investor,
    uint256 amount,
    address denominationAsset,
    uint256 costBasis,
    uint256 timestamp,
    string calldata documentURI,
    string calldata documentHash,
    uint256 lotType
) external returns (bytes32 lotId);

recordCapitalContribution

Record capital contribution

function recordCapitalContribution(address investor, uint256 amount) external;

Get current NAV per unit

function navPerUnit() external view returns (uint256);

totalNAV

Get total NAV of the fund

function totalNAV() external view returns (uint256);

fund

Get fund address

function fund() external view returns (address);

pendingRedemption

Get pending redemption amount for an investor

function pendingRedemption(address investor) external view returns (uint256);

redemptionRequestDate

Get redemption request date

function redemptionRequestDate(address investor) external view returns (uint256);

calculateRedemptionValue

Calculate redemption value for amount of units

function calculateRedemptionValue(uint256 unitAmount) external view returns (uint256);

calculateUnitsToMint

Calculate units to mint for contribution amount

function calculateUnitsToMint(uint256 contributionAmount) external view returns (uint256);

redemptionsAllowed

Check if redemptions are currently allowed

function redemptionsAllowed() external view returns (bool);

redemptionNoticePeriod

Get minimum redemption notice period

function redemptionNoticePeriod() external view returns (uint256);

canRedeem

Check if investor can redeem (notice period satisfied)

function canRedeem(address investor) external view returns (bool);

Events

UnitsMinted

Emitted when units are minted for contributions

event UnitsMinted(address indexed investor, uint256 amount, uint256 contribution);

UnitsBurned

Emitted when units are burned for redemptions

event UnitsBurned(address indexed investor, uint256 amount, uint256 redemptionValue);

Emitted when NAV per unit is updated

event NAVUpdated(uint256 newNAV, uint256 navPerUnit);

RedemptionRequested

Emitted when redemption is requested

event RedemptionRequested(address indexed investor, uint256 amount, uint256 requestDate);

RedemptionProcessed

Emitted when redemption is processed

event RedemptionProcessed(address indexed investor, uint256 amount, uint256 redemptionValue);

Last updated

Was this helpful?