NonFundedSubSkeletonNoDiscount
Implementation of the NonFunded sub-skeleton facet for the TMI-Fraction Protocol.
_This facet serves as a sub-core component (sub-skeleton) of a TMI-Fraction Platform, allowing investors to redeem their fraction balances and reclaim their principal from failed (non-funded) campaigns.
IMPORTANT:
- This implementation must always be used in conjunction with 
PurchaseSkeletonNoDiscount.soland its dependent internal facets. 
The process of investors redeeming fractions (fungible or semi-fungible) for principal in non-funded campaigns is triggered when
receiveFundsAfterNonFunded() is invoked, following a sequential pipeline of five phases:
- 
State Check: The Platform interacts with its
NonFundedStatesub-internal facet to verify that the campaign is in theNON_FUNDEDstate. - 
Eligibility Check: The Platform interacts with its
ReceiveAfterNonFundedEligibilitysub-internal facet to verify that the user (caller) meets the campaign's eligibility criteria to claim and receive their principal. - 
Purchased Price Retrieval: The Platform interacts with its
Pricegeneric facet to retrieve the purchase price of the specified campaign. - 
Redeem Action: The Platform interacts with its
Fractioninternal facet and burns the specified amount of fractions from the user. - 
Receive Action: The Platform interacts with its
DoReceiveAfterNonFundedsub-internal facet and transfers the principal funds back to the user. The transferred funds are determined by the quantity of burned fractions and their purchase price._ 
FundsReceivedAfterNonFunded
Emitted at receiveFundsAfterNonFunded().
receiveFundsAfterNonFunded
Burns amountOfFractions from the caller and transfers the corresponding principal amount(s) of the
campaign's underlying funding asset(s) to the caller.
_Users must meet eligibility criteria (see nonFunded Eligibility sub-internal facets).
IMPORTANT:
- If the fractions are semi-fungible, their ID is always 
0, as no discounted prices are featured. Therefore, specifying an ID is unnecessary. 
This action should only be allowed when the campaign's state is NON_FUNDED.
Emits a {FundsReceivedAfterNonFunded} event._
Parameters
| Name | Type | Description | 
|---|---|---|
| campaignId | uint256 | The unique identifier of the targeted campaign. | 
| uint256 | ||
| amountOfFractions | uint256 | The number of fractions to redeem. | 
| bytes | 

