Git Source
uint256 internal constant BPS = 10_000
uint256 internal constant SECONDS_PER_YEAR = 31_536_000
function accrueSeniorYield(
uint256 seniorPrincipal,
uint256 seniorRateBps,
uint256 elapsed
) internal pure returns (uint256);
function planReconcile(
uint256 seniorPrincipal,
uint256 juniorPrincipal,
uint256 distributableUsdc,
uint256 seniorRateBps,
uint256 elapsed
) internal pure returns (ReconcilePlan memory plan);
function scaleSeniorOnWithdraw(
WaterfallState memory state,
uint256 withdrawAmountUsdc
) internal pure returns (WaterfallState memory nextState);
function distributeRevenue(
WaterfallState memory state,
uint256 revenueUsdc
) internal pure returns (WaterfallState memory nextState);
function absorbLoss(
WaterfallState memory state,
uint256 lossUsdc
) internal pure returns (WaterfallState memory nextState);
struct WaterfallState {
uint256 seniorPrincipal;
uint256 juniorPrincipal;
uint256 unpaidSeniorYield;
uint256 seniorHighWaterMark;
}
struct ReconcilePlan {
uint256 yieldAccrued;
bool isRevenue;
uint256 deltaUsdc;
}