Diagrams
Nexus Mutual Platform Flow Diagram
This document merges multiple Cover and Staking flows with their underlying interactions across Token, Capital, Claims/Assessment, and Governance groupings. We use two comprehensive flows:
- Buying Cover and Processing Claims
- Includes:
- Buying Cover (Cover ↔ Token ↔ Capital)
- Submitting and Assessing Claims (Claims/Assessment ↔ Cover ↔ Capital ↔ Governance)
- Includes:
- Staking Pool Management and Staking Lifecycle
- Includes:
- Pool creation and product listing (Staking ↔ Token)
- Stakers redeeming rewards (Staking ↔ Token)
- Burning NXM on approved claims (Claims/Assessment ↔ Staking ↔ Token)
- Includes:
We provide detailed steps and a Mermaid diagram for each flow, ensuring step numbering in both the text description and diagrams for clarity. Code blocks are escaped so they remain valid raw markdown.
Buying Cover & Processing Claims
Step-by-Step
-
Buyer Purchases Cover
(1a)BuyercallsbuyCover(params, poolAllocationRequests)on Cover.
(1b)Coverchecks if buyer is a member viaonlyMembermodifier.
(1c)Covergets product info from CoverProducts.
(1d)Covermints NFT via CoverNFT if new cover.
(1e)CoverNFTissues NFT to buyer.
(1f)Coverrequests allocations from StakingPool(s).
(1g)Coverhandles payment: - For NXM: Burns premium via TokenController - For ETH/ERC20: Transfers premium to Pool -
Buyer Submits Claim
(2a)BuyercallssubmitClaim()on IndividualClaims.
(2b)IndividualClaimsvalidates:- Cover ownership via
CoverNFT.isApprovedOrOwner() - Cover validity via
Cover.coverSegmentWithRemainingAmount()
(2c)
IndividualClaimsstarts assessment viaAssessment.startAssessment(). - Cover ownership via
-
Claim Assessment
(3a)AssessorscallcastVotes()on Assessment.
(3b)Assessmentlocks staked NXM via TokenController.
(3c) When voting ends:- If accepted: Claim can be redeemed
- If denied: Claim deposit funds rewards
-
Claim Payout
(4a)BuyercallsredeemClaimPayout()on IndividualClaims.
(4b)IndividualClaimscallsCover.burnStake()to burn staker's NXM.
(4c)IndividualClaimscallsPool.sendPayout()which: - Transfers claim amount in cover asset - Returns assessment deposit in ETH
Staking Pool Management & Staking Lifecycle
Step-by-Step
-
Pool Manager Creates a New Staking Pool (1a)
Managercalls"createStakingPool()"on StakingProducts.
(1b)StakingProductscalls"create()"on StakingPoolFactory.
(1c)StakingPoolFactorydeploys new StakingPool.
(1d)StakingProductsassigns manager via TokenController.
(1e)StakingProductssets initial products and metadata. -
Manager Updates Pool Products (2a)
Managercalls"setProducts()"on StakingProducts.
(2b)StakingProductsupdates weights and prices in StakingPool. -
Staker Deposits NXM (3a)
Stakercalls"depositTo(amount, trancheId, tokenId, dest)"on StakingPool.
(3b)StakingPoolvalidates and calculates shares, calls"depositStakedNXM()"on TokenController.
(3c)TokenControllerupdates pool balance and calls"operatorTransfer()"on NXMToken. -
Staker Withdraws Stake/Rewards (4a)
Stakercalls"withdraw()"on StakingPool.- Optional: Check withdrawable amounts first via NexusViewer (
"getClaimableNXM()","getStakedNXM()")
(4b)
StakingPoolcalculates amounts, calls"withdrawNXMStakeAndRewards()"on TokenController.
(4c)TokenControllercalls transfers on NXMToken. (4d)NXMTokentransfer stake + rewards to Staker - Optional: Check withdrawable amounts first via NexusViewer (
-
Claim Redemption Burns Stake and Pays Claimant If a claim is approved the claimant is paid from the staked NXM. (5a)
Claimantcalls"redeemClaimPayout()"on IndividualClaims.
(5b)IndividualClaimscalls"burnStake()"on Cover.
(5c)Covercalls"burnStake()"on affected StakingPool(s).
(5d)StakingPoolcalls"burnStakedNXM()"on TokenController.
(5e)TokenControllerburns tokens via NXMToken.
(5f)IndividualClaimscalls"Pool.sendPayout()"which:- Transfers claim amount in cover asset
- Returns assessment deposit in ETH