diff --git a/docs/diagrams/contracts/capital.md b/docs/diagrams/contracts/capital.md
index 73a4ef87b3..9672605e7c 100644
--- a/docs/diagrams/contracts/capital.md
+++ b/docs/diagrams/contracts/capital.md
@@ -13,11 +13,11 @@ graph TD
MCR["MCR"]
%% Swap Flow
- Member -->|"(1a) swap"| Ramm
- Ramm -->|"(1b) validate swap"| Pool
- Ramm -->|"(1c) execute swap"| Pool
- Pool -->|"(1d) update MCR"| MCR
- Pool -.->|"(1e) transfer swapped assets"| Member
+ Member -->|"**(1a)** swap"| Ramm
+ Ramm -->|"**(1b)** validate swap"| Pool
+ Ramm -->|"**(1c)** execute swap"| Pool
+ Pool -->|"**(1d)** update MCR"| MCR
+ Pool -.->|"**(1e)** transfer swapped assets"| Member
```
## Operator Flow
@@ -33,15 +33,15 @@ graph TD
CoW["CoW Settlement"]
%% Swap Flow
- Operator -->|"(1a) placeOrder"| SwapOp
- SwapOp -->|"(1b) validatePreSwap"| Pool
- SwapOp -->|"(1c) transferAsset"| Pool
- SwapOp -->|"(1d) sign & submit CoW Swap order"| CoW
- CoW -.->|"(1e) execute swap & return assets"| SwapOp
+ Operator -->|"**(1a)** placeOrder"| SwapOp
+ SwapOp -->|"**(1b)** validatePreSwap"| Pool
+ SwapOp -->|"**(1c)** transferAsset"| Pool
+ SwapOp -->|"**(1d)** sign & submit CoW Swap order"| CoW
+ CoW -.->|"**(1e)** execute swap & return assets"| SwapOp
%% Close Order Flow
- Operator -->|"(2a) closeOrder"| SwapOp
- SwapOp -->|"(2b) return assets"| Pool
+ Operator -->|"**(2a)** closeOrder"| SwapOp
+ SwapOp -->|"**(2b)** return assets"| Pool
```
## Actions
@@ -55,32 +55,32 @@ graph TD
### 1. Member Actions
1. **Swap NXM/ETH**
- - (1a) **Member** calls `swap` on RAMM
- - (1b) **RAMM** validates swap conditions:
+ - **(1a)** `Member` calls `swap` on RAMM
+ - **(1b)** `RAMM` validates swap conditions:
- System not paused
- Swap not paused
- Valid deadline
- - (1c) **RAMM** executes swap with Pool
- - (1d) **Pool** triggers MCR update
- - (1e) **Pool** transfers swapped assets to member
+ - **(1c)** `RAMM` executes swap with Pool
+ - **(1d)** `Pool` triggers MCR update
+ - **(1e)** `Pool` transfers swapped assets to member
### 2. Operator Actions
1. **Place Order**
- - (1a) **Operator** calls `placeOrder` on SwapOperator
- - (1b) **SwapOperator** validates pre-swap conditions:
+ - **(1a)** `Operator` calls `placeOrder` on SwapOperator
+ - **(1b)** `SwapOperator` validates pre-swap conditions:
- Token enabled status
- Balance limits
- Swap frequency
- Max fee and slippage
- - (1c) **SwapOperator** transfers assets from Pool
- - (1d) **SwapOperator** signs and submits CoW swap order
- - (1e) **CoW Settlement** executes swap and returns assets to SwapOperator
+ - **(1c)** `SwapOperator` transfers assets from Pool
+ - **(1d)** `SwapOperator` signs and submits CoW swap order
+ - **(1e)** `CoW Settlement` executes swap and returns assets to SwapOperator
2. **Close Order**
- - (2a) **Operator** calls `closeOrder` on SwapOperator
- - (2b) **SwapOperator** returns assets to Pool
+ - **(2a)** `Operator` calls `closeOrder` on SwapOperator
+ - **(2b)** `SwapOperator` returns assets to Pool
## Notes
diff --git a/docs/diagrams/contracts/claims-assessment.md b/docs/diagrams/contracts/claims-assessment.md
index 57865ff653..19ff0588d4 100644
--- a/docs/diagrams/contracts/claims-assessment.md
+++ b/docs/diagrams/contracts/claims-assessment.md
@@ -14,10 +14,10 @@ graph TD
CoverNFT["CoverNFT Contract"]
%% Submit Claim
- Member -->|"(1a) submitClaim"| IndividualClaims
- IndividualClaims -->|"(1b) validate cover"| CoverNFT
- IndividualClaims -->|"(1c) validate amount"| Cover
- IndividualClaims -->|"(1d) startAssessment"| Assessment
+ Member -->|"**(1a)** submitClaim"| IndividualClaims
+ IndividualClaims -->|"**(1b)** validate cover"| CoverNFT
+ IndividualClaims -->|"**(1c)** validate amount"| Cover
+ IndividualClaims -->|"**(1d)** startAssessment"| Assessment
```
## 2. Assessment & Redemption Flow
@@ -36,15 +36,15 @@ graph TD
Pool["Pool"]
%% Assessment Process
- Assessor -->|"(2a) castVotes"| Assessment
- Assessment -->|"(2b) lock staked NXM"| TokenController
+ Assessor -->|"**(2a)** castVotes"| Assessment
+ Assessment -->|"**(2b)** lock staked NXM"| TokenController
%% Claim Payout
- Member -->|"(3a) redeemClaimPayout"| IndividualClaims
- IndividualClaims -->|"(3b) validate claim status"| Assessment
- IndividualClaims -->|"(3c) burnStake"| Cover
- IndividualClaims -->|"(3d) sendPayout"| Pool
- Pool -.->|"(3e) transfer claim amount + deposit"| Member
+ Member -->|"**(3a)** redeemClaimPayout"| IndividualClaims
+ IndividualClaims -->|"**(3b)** validate claim status"| Assessment
+ IndividualClaims -->|"**(3c)** burnStake"| Cover
+ IndividualClaims -->|"**(3d)** sendPayout"| Pool
+ Pool -.->|"**(3e)** transfer claim amount + deposit"| Member
```
## Actions
@@ -89,26 +89,26 @@ graph TD
## Claim Submission & Processing
1. **Submit Claim**
- (1a) **Cover Buyer** calls `submitClaim` on IndividualClaims
- (1b) **IndividualClaims** validates cover ownership via CoverNFT
- (1c) **IndividualClaims** validates claim amount via Cover
- (1d) **IndividualClaims** starts assessment process
+ **(1a)** `Cover Buyer` calls `submitClaim` on IndividualClaims
+ **(1b)** `IndividualClaims` validates cover ownership via CoverNFT
+ **(1c)** `IndividualClaims` validates claim amount via Cover
+ **(1d)** `IndividualClaims` starts assessment process
2. **Assessment Process**
- (2a) **Assessors** call `castVotes` on Assessment
- (2b) **Assessment** locks staked NXM via TokenController for voting period
+ **(2a)** `Assessors` call `castVotes` on Assessment
+ **(2b)** `Assessment` locks staked NXM via TokenController for voting period
3. **Claim Payout**
- (3a) **Cover Buyer** calls `redeemClaimPayout` on IndividualClaims
- (3b) **IndividualClaims** validates with Assessment:
+ **(3a)** `Cover Buyer` calls `redeemClaimPayout` on IndividualClaims
+ **(3b)** `IndividualClaims` validates with Assessment:
- Assessment period has ended
- More accept votes than deny votes
- Cooldown period has passed
- (3c) **IndividualClaims** calls Cover to burn stake from affected pools
- (3d) **IndividualClaims** sends payout via Pool
- (3e) **Pool** transfers:
+ **(3c)** `IndividualClaims` calls Cover to burn stake from affected pools
+ **(3d)** `IndividualClaims` sends payout via Pool
+ **(3e)** `Pool` transfers:
- Claim amount in cover asset
- Returns assessment deposit in ETH
diff --git a/docs/diagrams/contracts/cover.md b/docs/diagrams/contracts/cover.md
index d3aedc0e64..2e42c0eb73 100644
--- a/docs/diagrams/contracts/cover.md
+++ b/docs/diagrams/contracts/cover.md
@@ -15,11 +15,11 @@ graph TD
NXMaster["NXMaster Registry"]
%% Member interactions
- Member -->|"(1a) buyCover"| Cover
- Cover -->|"(1b) validate product"| CoverProducts
- Cover -->|"(1c) mint"| CoverNFT
- CoverNFT -.->|"(1c) issues Cover NFT"| Member
- Cover -->|"(1d) payment"| Pool
+ Member -->|"**(1a)** buyCover"| Cover
+ Cover -->|"**(1b)** validate product"| CoverProducts
+ Cover -->|"**(1c)** mint"| CoverNFT
+ CoverNFT -.->|"**(1c)** issues Cover NFT"| Member
+ Cover -->|"**(1d)** payment"| Pool
%% Contract Registry interactions
CoverProducts -.->|"getLatestAddress"| NXMaster
@@ -40,9 +40,9 @@ graph TD
Pool["Pool Contract"]
%% AB Member interactions
- ABMember -->|"(1) setProducts"| CoverProducts
- ABMember -->|"(2) setProductTypes"| CoverProducts
- ABMember -->|"(3) setProductsMetadata"| CoverProducts
+ ABMember -->|"**(1)** setProducts"| CoverProducts
+ ABMember -->|"**(2)** setProductTypes"| CoverProducts
+ ABMember -->|"**(3)** setProductsMetadata"| CoverProducts
%% Internal validations
CoverProducts -->|"validate assets"| Pool
@@ -59,21 +59,21 @@ graph TD
### 1. Member Actions
1. **Buy Cover**
- (1a) **Member** calls `buyCover` on Cover with:
+ **(1a)** `Member` calls `buyCover` on Cover with:
- Product ID
- Cover amount
- Cover period
- Payment asset
- Cover asset
- (1b) **Cover** validates product with CoverProducts
- (1c) **Cover** mints NFT representing cover
+ **(1b)** `Cover` validates product with CoverProducts
+ **(1c)** `Cover` mints NFT representing cover
- issues Cover NFT to buyer
- (1d) **Cover** processes payment via Pool
+ **(1d)** `Cover` processes payment via Pool
### 2. Advisory Board Actions
1. **Product Configuration**
- (1) **AB Member** calls `setProducts` on CoverProducts to:
+ **(1)** `AB Member` calls `setProducts` on CoverProducts to:
- Add new products (`productId = uint256.max`)
- Update existing products
@@ -81,14 +81,14 @@ graph TD
- Set capacity reduction ratios
- Configure allowed staking pools
- (2) **AB Member** calls `setProductTypes` on CoverProducts to:
+ **(2)** `AB Member` calls `setProductTypes` on CoverProducts to:
- Define product types (`productTypeId = uint256.max`)
- Set grace periods
- Set product type names
- Update product type metadata
- (3) **AB Member** calls `setProductsMetadata` to:
+ **(3)** `AB Member` calls `setProductsMetadata` to:
- Update product IPFS metadata
- Update product type IPFS metadata
diff --git a/docs/diagrams/contracts/governance-membership.md b/docs/diagrams/contracts/governance-membership.md
index db14403e6e..41cbffb77b 100644
--- a/docs/diagrams/contracts/governance-membership.md
+++ b/docs/diagrams/contracts/governance-membership.md
@@ -14,11 +14,11 @@ graph TD
NXMaster["NXMaster Registry"]
%% Member interactions
- Member -->|"(1) submitProposal"| Governance
- Member -->|"(2) vote"| Governance
- Member -->|"(3) queryVotingPower"| VotePower
- Member -->|"(4) withdrawMembership"| MemberRoles
- Member -->|"(5) switchMembership"| MemberRoles
+ Member -->|"**(1)** submitProposal"| Governance
+ Member -->|"**(2)** vote"| Governance
+ Member -->|"**(3)** queryVotingPower"| VotePower
+ Member -->|"**(4)** withdrawMembership"| MemberRoles
+ Member -->|"**(5)** switchMembership"| MemberRoles
%% Contract Registry interactions
Governance -.->|"getLatestAddress"| NXMaster
@@ -39,9 +39,9 @@ graph TD
NXMaster["NXMaster Registry"]
%% AB Member interactions
- ABMember -->|"(1) approveProposal"| Governance
- ABMember -->|"(2) rejectAction"| Governance
- ABMember -->|"(3) swapABMember"| MemberRoles
+ ABMember -->|"**(1)** approveProposal"| Governance
+ ABMember -->|"**(2)** rejectAction"| Governance
+ ABMember -->|"**(3)** swapABMember"| MemberRoles
%% Contract Registry interactions
Governance -.->|"getLatestAddress"| NXMaster
diff --git a/docs/diagrams/contracts/staking.md b/docs/diagrams/contracts/staking.md
index e39b36cb35..69103da07f 100644
--- a/docs/diagrams/contracts/staking.md
+++ b/docs/diagrams/contracts/staking.md
@@ -18,17 +18,17 @@ graph TD
end
%% Staker interactions
- Staker -->|"(1a) depositTo()"| StakingPool
- StakingPool -->|"(1b) mint()"| StakingNFT
- StakingNFT -.->|"(1c) issues NFT"| Staker
+ Staker -->|"**(1a)** depositTo()"| StakingPool
+ StakingPool -->|"**(1b)** mint()"| StakingNFT
+ StakingNFT -.->|"**(1c)** issues NFT"| Staker
- Staker -->|"(2a) withdraw()"| StakingPool
- StakingPool -->|"(2b) burn()"| StakingNFT
- StakingPool -->|"(2c) withdrawNXMStakeAndRewards()"| TCO
- TCO -->|"(2d) transfer()"| NXM
- NXM -.->|"(2e) returns NXM + rewards"| Staker
+ Staker -->|"**(2a)** withdraw()"| StakingPool
+ StakingPool -->|"**(2b)** burn()"| StakingNFT
+ StakingPool -->|"**(2c)** withdrawNXMStakeAndRewards()"| TCO
+ TCO -->|"**(2d)** transfer()"| NXM
+ NXM -.->|"**(2e)** returns NXM + rewards"| Staker
- Staker -->|"(3) extendDeposit()"| StakingPool
+ Staker -->|"**(3)** extendDeposit()"| StakingPool
%% Contract Registry interactions
StakingPool -.->|"getLatestAddress"| NXMaster
@@ -48,12 +48,12 @@ graph TD
NXMaster["NXMaster Registry"]
%% Manager interactions
- Manager -->|"(1a) createStakingPool()"| StakingProducts
- Manager -->|"(2) setProducts()"| StakingProducts
- Manager -->|"(3) setPoolMetadata()"| StakingProducts
+ Manager -->|"**(1a)** createStakingPool()"| StakingProducts
+ Manager -->|"**(2)** setProducts()"| StakingProducts
+ Manager -->|"**(3)** setPoolMetadata()"| StakingProducts
%% Internal interactions
- StakingProducts -->|"(1b) create"| StakingPoolFactory
+ StakingProducts -->|"**(1b)** create"| StakingPoolFactory
%% Contract Registry interactions
StakingProducts -.->|"getLatestAddress"| NXMaster
@@ -71,27 +71,27 @@ graph TD
### 1. Staker Actions
1. **Deposit Stake**
- (1a) **Staker** calls `depositTo()` on StakingPool with:
+ **(1a)** `Staker` calls `depositTo()` on StakingPool with:
- Amount of NXM to stake
- Target tranche ID
- Optional existing NFT ID
- (1b) **StakingPool** calls `mint()` on StakingNFT
- (1c) **StakingNFT** issues NFT to staker
+ **(1b)** `StakingPool` calls `mint()` on StakingNFT
+ **(1c)** `StakingNFT` issues NFT to staker
2. **Withdraw Stake**
- (2a) **Staker** calls `withdraw()` on StakingPool with:
+ **(2a)** `Staker` calls `withdraw()` on StakingPool with:
- NFT ID
- Tranche IDs
- Amount to withdraw
- (2b) **StakingPool** calls `burn()` on StakingNFT
- (2c) **StakingPool** calls `withdrawNXMStakeAndRewards()` on TokenController
- (2d) **TokenController** calls `transfer()` on NXMToken
- (2e) **NXMToken** returns NXM + rewards to staker
+ **(2b)** `StakingPool` calls `burn()` on StakingNFT
+ **(2c)** `StakingPool` calls `withdrawNXMStakeAndRewards()` on TokenController
+ **(2d)** `TokenController` calls `transfer()` on NXMToken
+ **(2e)** `NXMToken` returns NXM + rewards to staker
3. **Extend Deposit**
- (3) **Staker** calls `extendDeposit()` on StakingPool with:
+ **(3)** `Staker` calls `extendDeposit()` on StakingPool with:
- NFT ID
- Source tranche ID
- Target tranche ID
@@ -100,23 +100,23 @@ graph TD
### 2. Staking Pool Manager Actions
1. **Create Pool**
- (1a) **Manager** calls `createStakingPool()` on StakingProducts with:
+ **(1a)** `Manager` calls `createStakingPool()` on StakingProducts with:
- Pool privacy setting
- Initial and max pool fees
- Product initialization parameters
- IPFS metadata hash
- (1b) **StakingProducts** calls `create()` on StakingPoolFactory
+ **(1b)** `StakingProducts` calls `create()` on StakingPoolFactory
2. **Configure Products**
- (2) **Manager** calls `setProducts()` on StakingProducts with:
+ **(2)** `Manager` calls `setProducts()` on StakingProducts with:
- Product IDs
- Target weights
- Target price
3. **Update Metadata**
- (3) **Manager** calls `setPoolMetadata()` on StakingProducts with:
+ **(3)** `Manager` calls `setPoolMetadata()` on StakingProducts with:
- Pool ID
- New IPFS metadata hash
diff --git a/docs/diagrams/contracts/token.md b/docs/diagrams/contracts/token.md
index 5a4214b677..728463335c 100644
--- a/docs/diagrams/contracts/token.md
+++ b/docs/diagrams/contracts/token.md
@@ -13,13 +13,13 @@ graph TD
NXMaster["NXMaster Registry"]
%% Member interactions
- Member -->|"(1) transfer()"| NXMToken
- Member -->|"(2a) approve()"| NXMToken
- Member -->|"(2b) increaseAllowance()"| NXMToken
- Member -->|"(2c) decreaseAllowance()"| NXMToken
- Member -->|"(3a) withdrawNXM()"| TokenController
- TokenController -->|"(3b) transfer()"| NXMToken
- NXMToken -.->|"(3c) sends NXM"| Member
+ Member -->|"**(1)** transfer()"| NXMToken
+ Member -->|"**(2a)** approve()"| NXMToken
+ Member -->|"**(2b)** increaseAllowance()"| NXMToken
+ Member -->|"**(2c)** decreaseAllowance()"| NXMToken
+ Member -->|"**(3a)** withdrawNXM()"| TokenController
+ TokenController -->|"**(3b)** transfer()"| NXMToken
+ NXMToken -.->|"**(3c)** sends NXM"| Member
%% Contract Registry interactions
NXMToken -.->|"getLatestAddress"| NXMaster
@@ -39,11 +39,11 @@ graph TD
NXMaster["NXMaster Registry"]
%% Operator interactions
- Operator -->|"(1a) mint()"| TokenController
- TokenController -->|"(1b) mint()"| NXMToken
- Operator -->|"(2a) operatorTransfer()"| TokenController
- TokenController -->|"(2b) operatorTransfer()"| NXMToken
- NXMToken -.->|"(2c) sends NXM"| TokenController
+ Operator -->|"**(1a)** mint()"| TokenController
+ TokenController -->|"**(1b)** mint()"| NXMToken
+ Operator -->|"**(2a)** operatorTransfer()"| TokenController
+ TokenController -->|"**(2b)** operatorTransfer()"| NXMToken
+ NXMToken -.->|"**(2c)** sends NXM"| TokenController
%% Contract Registry interactions
TokenController -.->|"getLatestAddress"| NXMaster
diff --git a/docs/diagrams/nexus-mutual.md b/docs/diagrams/nexus-mutual.md
index 0575876a48..212e0ab601 100644
--- a/docs/diagrams/nexus-mutual.md
+++ b/docs/diagrams/nexus-mutual.md
@@ -1,4 +1,4 @@
-# Nexus Mutual Platform Flow Diagram
+## 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:
@@ -46,65 +46,65 @@ flowchart LR
end
%% 1. Buy Cover (single tx)
- Buyer -->|"(1a) buyCover()"| CoverC
- CoverC -->|"(1b) onlyMember check"| MR
- CoverC -->|"(1c) get product info"| CoverP
- CoverC -->|"(1d) mint Cover NFT"| CoverN
- CoverN -->|"(1e) issue NFT"| Buyer
- CoverC -->|"(1f) request allocations"| SP
- CoverC -->|"(1g) handle payment"| TC
- TC -->|"(1g) burn NXM or transfer ETH/ERC20"| PoolC
+ Buyer -->|"**(1a)** buyCover()"| CoverC
+ CoverC -->|"**(1b)** onlyMember check"| MR
+ CoverC -->|"**(1c)** get product info"| CoverP
+ CoverC -->|"**(1d)** mint Cover NFT"| CoverN
+ CoverN -->|"**(1e)** issue NFT"| Buyer
+ CoverC -->|"**(1f)** request allocations"| SP
+ CoverC -->|"**(1g)** handle payment"| TC
+ TC -->|"**(1g)** burn NXM or transfer ETH/ERC20"| PoolC
%% 2. Submit Claim (single tx)
- Buyer -->|"(2a) submitClaim()"| IndClaims
- IndClaims -->|"(2b) validate isApprovedOrOwner()"| CoverN
- IndClaims -->|"(2b) validate amount"| CoverC
- IndClaims -->|"(2c) startAssessment()"| Assess
+ Buyer -->|"**(2a)** submitClaim()"| IndClaims
+ IndClaims -->|"**(2b)** validate isApprovedOrOwner()"| CoverN
+ IndClaims -->|"**(2b)** validate amount"| CoverC
+ IndClaims -->|"**(2c)** startAssessment()"| Assess
%% 3. Assessment Process (multiple tx)
- Assessor -->|"(3a) castVotes()"| Assess
- Assess -->|"(3b) lock staked NXM"| TC
- TC -->|"(3b) lock"| NXM
+ Assessor -->|"**(3a)** castVotes()"| Assess
+ Assess -->|"**(3b)** lock staked NXM"| TC
+ TC -->|"**(3b)** lock"| NXM
%% 4. Claim Payout (single tx)
- Buyer -->|"(4a) redeemClaimPayout()"| IndClaims
- IndClaims -->|"(4b) burnStake()"| CoverC
- IndClaims -->|"(4c) sendPayout()"| PoolC
- PoolC -->|"(4c) transfer claim amount + deposit"| Buyer
+ Buyer -->|"**(4a)** redeemClaimPayout()"| IndClaims
+ IndClaims -->|"**(4b)** burnStake()"| CoverC
+ IndClaims -->|"**(4c)** sendPayout()"| PoolC
+ PoolC -->|"**(4c)** transfer claim amount + deposit"| Buyer
```
### Step-by-Step
1. **Buyer Purchases Cover**
- (1a) **Buyer** calls `buyCover(params, poolAllocationRequests)` on **Cover**.
- (1b) **Cover** checks if buyer is a member via `onlyMember` modifier.
- (1c) **Cover** gets product info from **CoverProducts**.
- (1d) **Cover** mints NFT via **CoverNFT** if new cover.
- (1e) **CoverNFT** issues NFT to buyer.
- (1f) **Cover** requests allocations from **StakingPool**(s).
- (1g) **Cover** handles payment: - For NXM: Burns premium via **TokenController** - For ETH/ERC20: Transfers premium to **Pool**
+ **(1a)** `Buyer` calls `buyCover(params, poolAllocationRequests)` on **Cover**.
+ **(1b)** `Cover` checks if buyer is a member via `onlyMember` modifier.
+ **(1c)** `Cover` gets product info from **CoverProducts**.
+ **(1d)** `Cover` mints NFT via **CoverNFT** if new cover.
+ **(1e)** `CoverNFT` issues NFT to buyer.
+ **(1f)** `Cover` requests allocations from **StakingPool**(s).
+ **(1g)** `Cover` handles payment: - For NXM: Burns premium via **TokenController** - For ETH/ERC20: Transfers premium to **Pool**
2. **Buyer Submits Claim**
- (2a) **Buyer** calls `submitClaim()` on **IndividualClaims**.
- (2b) **IndividualClaims** validates:
+ **(2a)** `Buyer` calls `submitClaim()` on **IndividualClaims**.
+ **(2b)** `IndividualClaims` validates:
- Cover ownership via `CoverNFT.isApprovedOrOwner()`
- Cover validity via `Cover.coverSegmentWithRemainingAmount()`
- (2c) **IndividualClaims** starts assessment via `Assessment.startAssessment()`.
+ **(2c)** `IndividualClaims` starts assessment via `Assessment.startAssessment()`.
3. **Claim Assessment**
- (3a) **Assessors** call `castVotes()" on **Assessment**.
- (3b) **Assessment** locks staked NXM via **TokenController**.
- (3c) When voting ends:
+ **(3a)** `Assessors` call `castVotes()` on **Assessment**.
+ **(3b)** `Assessment` locks staked NXM via **TokenController**.
+ **(3c)** When voting ends:
- If accepted: Claim can be redeemed
- If denied: Claim deposit funds rewards
4. **Claim Payout**
- (4a) **Buyer** calls `redeemClaimPayout()` on **IndividualClaims**.
- (4b) **IndividualClaims** calls `Cover.burnStake()` to burn staker's NXM.
- (4c) **IndividualClaims** calls `Pool.sendPayout()` which: - Transfers claim amount in cover asset - Returns assessment deposit in ETH
+ **(4a)** `Buyer` calls `redeemClaimPayout()` on **IndividualClaims**.
+ **(4b)** `IndividualClaims` calls `Cover.burnStake()` to burn staker's NXM.
+ **(4c)** `IndividualClaims` calls `Pool.sendPayout()` which: - Transfers claim amount in cover asset - Returns assessment deposit in ETH
---
@@ -143,71 +143,67 @@ flowchart LR
end
%% 1. Create Pool (single tx)
- Manager -->|"(1a) createStakingPool()"| SPd
- SPd -->|"(1b) create()"| SPF
- SPF -->|"(1c) deploys"| SP
- SPd -->|"(1d) assignManager"| TCO
- SPd -->|"(1e) setInitialProducts"| SP
+ Manager -->|"**(1a)** createStakingPool()"| SPd
+ SPd -->|"**(1b)** create()"| SPF
+ SPF -->|"**(1c)** deploys"| SP
+ SPd -->|"**(1d)** assignManager"| TCO
+ SPd -->|"**(1e)** setInitialProducts"| SP
%% 2. Update Products (single tx)
- Manager -->|"(2a) setProducts()"| SPd
- SPd -->|"(2b) updates weights & prices"| SP
+ Manager -->|"**(2a)** setProducts()"| SPd
+ SPd -->|"**(2b)** updates weights & prices"| SP
%% 3. Deposit NXM (single tx)
- Staker -->|"(3a) depositTo()"| SP
- SP -->|"(3b) depositStakedNXM()"| TCO
- TCO -->|"(3c) operatorTransfer()"| NXM
+ Staker -->|"**(3a)** depositTo()"| SP
+ SP -->|"**(3b)** depositStakedNXM()"| TCO
+ TCO -->|"**(3c)** operatorTransfer()"| NXM
%% 4. Withdraw (single tx)
- Staker -->|"(4a) withdraw()"| SP
- SP -->|"(4b) withdrawNXMStakeAndRewards()"| TCO
- TCO -->|"(4c) transfer"| NXM
- TCO -->|"(4d) transfer stake + rewards"| Staker
+ Staker -->|"**(4a)** withdraw()"| SP
+ SP -->|"**(4b)** withdrawNXMStakeAndRewards()"| TCO
+ TCO -->|"**(4c)** transfer"| NXM
+ TCO -->|"**(4d)** transfer stake + rewards"| Staker
%% 5. Burn and Payout on Claim (single tx)
- Claimant -->|"(5a) redeemClaimPayout()"| IC
- IC -->|"(5b) burnStake()"| CoverC
- CoverC -->|"(5c) burnStake()"| SP
- SP -->|"(5d) burnStakedNXM()"| TCO
- TCO -->|"(5e) burn()"| NXM
- IC -->|"(5f) sendPayout()"| PoolC
- PoolC -->|"(5f) transfer claim amount + deposit"| Claimant
+ Claimant -->|"**(5a)** redeemClaimPayout()"| IC
+ IC -->|"**(5b)** burnStake()"| CoverC
+ CoverC -->|"**(5c)** burnStake()"| SP
+ SP -->|"**(5d)** burnStakedNXM()"| TCO
+ TCO -->|"**(5e)** burn()"| NXM
+ IC -->|"**(5f)** sendPayout()"| PoolC
+ PoolC -->|"**(5f)** transfer claim amount + deposit"| Claimant
```
### Step-by-Step
1. **Pool Manager Creates a New Staking Pool**
- (1a) **Manager** calls `"createStakingPool()"` on **StakingProducts**.
- (1b) **StakingProducts** calls `"create()"` on **StakingPoolFactory**.
- (1c) **StakingPoolFactory** deploys new **StakingPool**.
- (1d) **StakingProducts** assigns manager via **TokenController**.
- (1e) **StakingProducts** sets initial products and metadata.
-
+ **(1a)** `Manager` calls `"createStakingPool()"` on **StakingProducts**.
+ **(1b)** `StakingProducts` calls `"create()"` on **StakingPoolFactory**.
+ **(1c)** `StakingPoolFactory` deploys new **StakingPool**.
+ **(1d)** `StakingProducts` assigns manager via **TokenController**.
+ **(1e)** `StakingProducts` sets initial products and metadata.
2. **Manager Updates Pool Products**
- (2a) **Manager** calls `"setProducts()"` on **StakingProducts**.
- (2b) **StakingProducts** updates weights and prices in **StakingPool**.
-
+ **(2a)** `Manager` calls `"setProducts()"` on **StakingProducts**.
+ **(2b)** `StakingProducts` updates weights and prices in **StakingPool**.
3. **Staker Deposits NXM**
- (3a) **Staker** calls `"depositTo(amount, trancheId, tokenId, dest)"` on **StakingPool**.
- (3b) **StakingPool** validates and calculates shares, calls `"depositStakedNXM()"` on **TokenController**.
- (3c) **TokenController** updates pool balance and calls `"operatorTransfer()"` on **NXMToken**.
-
+ **(3a)** `Staker` calls `"depositTo(amount, trancheId, tokenId, dest)"` on **StakingPool**.
+ **(3b)** `StakingPool` validates and calculates shares, calls `"depositStakedNXM()"` on **TokenController**.
+ **(3c)** `TokenController` updates pool balance and calls `"operatorTransfer()"` on **NXMToken**.
4. **Staker Withdraws Stake/Rewards**
- (4a) **Staker** calls `"withdraw()"` on **StakingPool**.
+ **(4a)** `Staker` calls `"withdraw()"` on **StakingPool**.
- _Optional_: Check withdrawable amounts first via **NexusViewer** (`"getClaimableNXM()"`, `"getStakedNXM()"`)
- (4b) **StakingPool** calculates amounts, calls `"withdrawNXMStakeAndRewards()"` on **TokenController**.
- (4c) **TokenController** calls transfers on **NXMToken**.
- (4d) **NXMToken** transfer stake + rewards to **Staker**
-
+ **(4b)** `StakingPool` calculates amounts, calls `"withdrawNXMStakeAndRewards()"` on **TokenController**.
+ **(4c)** `TokenController` calls transfers on **NXMToken**.
+ **(4d)** `NXMToken` transfer stake + rewards to **Staker**
5. **Claim Redemption Burns Stake and Pays Claimant**
If a claim is approved the claimant is paid from the staked NXM.
- (5a) **Claimant** calls `"redeemClaimPayout()"` on **IndividualClaims**.
- (5b) **IndividualClaims** calls `"burnStake()"` on **Cover**.
- (5c) **Cover** calls `"burnStake()"` on affected **StakingPool**(s).
- (5d) **StakingPool** calls `"burnStakedNXM()"` on **TokenController**.
- (5e) **TokenController** burns tokens via **NXMToken**.
- (5f) **IndividualClaims** calls `"Pool.sendPayout()"` which:
+ **(5a)** `Claimant` calls `"redeemClaimPayout()"` on **IndividualClaims**.
+ **(5b)** `IndividualClaims` calls `"burnStake()"` on **Cover**.
+ **(5c)** `Cover` calls `"burnStake()"` on affected **StakingPool**(s).
+ **(5d)** `StakingPool` calls `"burnStakedNXM()"` on **TokenController**.
+ **(5e)** `TokenController` burns tokens via **NXMToken**.
+ **(5f)** `IndividualClaims` calls `"Pool.sendPayout()"` which:
- Transfers claim amount in cover asset
- Returns assessment deposit in ETH
diff --git a/docs/diagrams/user-flows/cover-buyer.md b/docs/diagrams/user-flows/cover-buyer.md
index cc9f5f4a58..03b1fe1e2d 100644
--- a/docs/diagrams/user-flows/cover-buyer.md
+++ b/docs/diagrams/user-flows/cover-buyer.md
@@ -16,20 +16,19 @@ graph TD
Pool["Pool"]
%% Getting a Cover Quote
- Member -->|"(1a) Calls Cover Router API /quote"| CoverRouter
- CoverRouter -.->|"(1b) Responds with pool allocation"| Member
+ Member -->|"**(1a)** Calls Cover Router API /quote"| CoverRouter
+ CoverRouter -.->|"**(1b)** Responds with pool allocation"| Member
%% Buying Cover
- Member -->|"(2a) Calls buyCover"| Cover
- Cover -->|"(2b) onlyMember check"| MemberRoles
- Cover -->|"(2c) get product info"| CoverProducts
- Cover -->|"(2d) mint Cover NFT"| CoverNFT
- CoverNFT -->|"(2e) issue NFT"| Member
- Cover -->|"(2f) request allocations"| StakingPool
- Cover -->|"(2g) handle payment"| TokenController
- TokenController -->|"(2g) burn NXM or transfer ETH/ERC20"| Pool
+ Member -->|"**(2a)** Calls buyCover"| Cover
+ Cover -->|"**(2b)** onlyMember check"| MemberRoles
+ Cover -->|"**(2c)** get product info"| CoverProducts
+ Cover -->|"**(2d)** mint Cover NFT"| CoverNFT
+ CoverNFT -->|"**(2e)** issue NFT"| Member
+ Cover -->|"**(2f)** request allocations"| StakingPool
+ Cover -->|"**(2g)** handle payment"| TokenController
+ TokenController -->|"**(2g)** burn NXM or transfer ETH/ERC20"| Pool
```
-
## Claims Flow
```mermaid
@@ -46,20 +45,20 @@ graph TD
Pool["Pool"]
%% Submit Claim
- Member -->|"(1a) submitClaim"| IndividualClaims
- IndividualClaims -->|"(1b) validate cover"| CoverNFT
- IndividualClaims -->|"(1b) validate amount"| Cover
- IndividualClaims -->|"(1c) startAssessment"| Assessment
+ Member -->|"**(1a)** submitClaim"| IndividualClaims
+ IndividualClaims -->|"**(1b)** validate cover"| CoverNFT
+ IndividualClaims -->|"**(1b)** validate amount"| Cover
+ IndividualClaims -->|"**(1c)** startAssessment"| Assessment
%% Assessment Process
- Assessors -->|"(2a) castVotes"| Assessment
- Assessment -->|"(2b) lock staked NXM"| TokenController
+ Assessors -->|"**(2a)** castVotes"| Assessment
+ Assessment -->|"**(2b)** lock staked NXM"| TokenController
%% Claim Payout
- Member -->|"(3a) redeemClaimPayout"| IndividualClaims
- IndividualClaims -->|"(3b) burnStake"| Cover
- IndividualClaims -->|"(3c) sendPayout"| Pool
- Pool -.->|"(3c) transfer claim amount + deposit"| Member
+ Member -->|"**(3a)** redeemClaimPayout"| IndividualClaims
+ IndividualClaims -->|"**(3b)** burnStake"| Cover
+ IndividualClaims -->|"**(3c)** sendPayout"| Pool
+ Pool -.->|"**(3c)** transfer claim amount + deposit"| Member
```
## Cover Buyer Actions
@@ -79,17 +78,17 @@ graph TD
## Getting a Cover Quote and Purchase
1. **Quote Process**
- (1a) **Cover Buyer** calls Cover Router API `/quote` to fetch price and pool allocation
- (1b) **Cover Router API** responds with recommended pool allocation
+ **(1a)** `Cover Buyer` calls Cover Router API `/quote` to fetch price and pool allocation
+ **(1b)** `Cover`outer API** responds with recommended pool allocation
2. **Cover Purchase**
- (2a) **Cover Buyer** calls `buyCover` on Cover with pool allocation
- (2b) **Cover** checks if buyer is a member
- (2c) **Cover** gets product info from CoverProducts
- (2d) **Cover** mints NFT via CoverNFT if new cover
- (2e) **CoverNFT** issues NFT to buyer
- (2f) **Cover** requests allocations from StakingPool(s)
- (2g) **Cover** handles payment:
+ **(2a)** `Cover Buyer` calls `buyCover` on Cover with pool allocation
+ **(2b)** `Cover` checks if buyer is a member
+ **(2c)** `Cover` gets product info from CoverProducts
+ **(2d)** `Cover` mints NFT via CoverNFT if new cover
+ **(2e)** `CoverNFT` issues NFT to buyer
+ **(2f)** `Cover` requests allocations from StakingPool(s)
+ **(2g)** `Cover` handles payment:
- For NXM: Burns premium via TokenController
- For ETH/ERC20: Transfers premium to Pool
@@ -98,20 +97,20 @@ graph TD
## Claim Submission & Processing
1. **Submit Claim**
- (1a) **Cover Buyer** calls `submitClaim` on IndividualClaims
- (1b) **IndividualClaims** validates:
+ **(1a)** `Cover Buyer` calls `submitClaim` on IndividualClaims
+ **(1b)** `IndividualClaims` validates:
- Cover ownership via CoverNFT
- Cover validity via Cover
- (1c) **IndividualClaims** starts assessment process
+ **(1c)** `IndividualClaims` starts assessment process
2. **Assessment Process**
- (2a) **Assessors** call `castVotes` on Assessment
- (2b) **Assessment** locks staked NXM for voting period
+ **(2a)** `Assessors` call `castVotes` on Assessment
+ **(2b)** `Assessment` locks staked NXM for voting period
3. **Claim Payout**
- (3a) **Cover Buyer** calls `redeemClaimPayout` on IndividualClaims
- (3b) **IndividualClaims** calls Cover to burn stake from affected pools
- (3c) **IndividualClaims** sends payout via Pool which:
+ **(3a)** `Cover Buyer` calls `redeemClaimPayout` on IndividualClaims
+ **(3b)** `IndividualClaims` calls Cover to burn stake from affected pools
+ **(3c)** `IndividualClaims` sends payout via Pool which:
- Transfers claim amount in cover asset
- Returns claim deposit in ETH
diff --git a/docs/diagrams/user-flows/staker.md b/docs/diagrams/user-flows/staker.md
index 5aaf3b338d..51e27940f5 100644
--- a/docs/diagrams/user-flows/staker.md
+++ b/docs/diagrams/user-flows/staker.md
@@ -14,11 +14,11 @@ graph TD
SNFT["StakingNFT Contract"]
%% Deposit Flow
- Staker -->|"(1a) depositTo()"| SP
- SP -->|"(1b) depositStakedNXM()"| TCO
- TCO -->|"(1c) operatorTransfer()"| NXM
- SP -->|"(1d) mintStakeNFT()"| SNFT
- SNFT -.->|"(1e) issue Staking NFT"| Staker
+ Staker -->|"**(1a)** depositTo()"| SP
+ SP -->|"**(1b)** depositStakedNXM()"| TCO
+ TCO -->|"**(1c)** operatorTransfer()"| NXM
+ SP -->|"**(1d)** mintStakeNFT()"| SNFT
+ SNFT -.->|"**(1e)** issue Staking NFT"| Staker
```
## Withdraw Flow
@@ -34,10 +34,10 @@ graph TD
NXM["NXMToken Contract"]
%% Withdraw Flow
- Staker -->|"(1a) withdraw()"| SP
- SP -->|"(1b) withdrawNXMStakeAndRewards()"| TCO
- TCO -->|"(1c) transfer"| NXM
- NXM -.->|"(1c) transfer stake + rewards"| Staker
+ Staker -->|"**(1a)** withdraw()"| SP
+ SP -->|"**(1b)** withdrawNXMStakeAndRewards()"| TCO
+ TCO -->|"**(1c)** transfer"| NXM
+ NXM -.->|"**(1c)** transfer stake + rewards"| Staker
```
## Staker Actions
@@ -62,16 +62,16 @@ graph TD
## Deposit Stake Flow
-(1a) **Staker** calls `depositTo()` on **StakingPool**.
-(1b) **StakingPool** validates and calculates shares, calls `depositStakedNXM()` on **TokenController**.
-(1c) **TokenController** updates pool balance and transfers NXM via **NXMToken**.
-(1d) **StakingPool** calls `mintStakeNFT()` on **StakingNFT**.
-(1e) **StakingNFT** issues NFT to staker as proof of stake.
+**(1a)** `Staker` calls `depositTo()` on **StakingPool**.
+**(1b)** `StakingPool` validates and calculates shares, calls `depositStakedNXM()` on **TokenController**.
+**(1c)** `TokenController` updates pool balance and transfers NXM via **NXMToken**.
+**(1d)** `StakingPool` calls `mintStakeNFT()` on **StakingNFT**.
+**(1e)** `StakingNFT` issues NFT to staker as proof of stake.
---
## Withdraw Stake Flow
-(1a) **Staker** calls `withdraw()` on **StakingPool**.
-(1b) **StakingPool** calculates amounts, calls `withdrawNXMStakeAndRewards()` on **TokenController**.
-(1c) **TokenController** transfers stake and rewards to staker via **NXMToken**.
+**(1a)** `Staker` calls `withdraw()` on **StakingPool**.
+**(1b)** `StakingPool` calculates amounts, calls `withdrawNXMStakeAndRewards()` on **TokenController**.
+**(1c)** `TokenController` transfers stake and rewards to staker via **NXMToken**.
diff --git a/docs/diagrams/user-flows/staking-manager.md b/docs/diagrams/user-flows/staking-manager.md
index 498ea449b2..8d3075c628 100644
--- a/docs/diagrams/user-flows/staking-manager.md
+++ b/docs/diagrams/user-flows/staking-manager.md
@@ -15,21 +15,21 @@ graph TD
Cover["Cover"]
%% 1. Create Pool
- Manager -->|"(1a) createStakingPool()"| SPd
- SPd -->|"(1b) create()"| SPF
- SPF -->|"(1c) deploys"| SP
- SPd -->|"(1d) assignManager"| TCO
- SPd -->|"(1e) setInitialProducts"| SP
+ Manager -->|"**(1a)** createStakingPool()"| SPd
+ SPd -->|"**(1b)** create()"| SPF
+ SPF -->|"**(1c)** deploys"| SP
+ SPd -->|"**(1d)** assignManager"| TCO
+ SPd -->|"**(1e)** setInitialProducts"| SP
%% 2. Update Products
- Manager -->|"(2a) setProducts()"| SPd
- SPd -->|"(2b) updates weights & prices"| SP
+ Manager -->|"**(2a)** setProducts()"| SPd
+ SPd -->|"**(2b)** updates weights & prices"| SP
%% 3. Recalculate Weights
- Manager -->|"(3a) recalculateEffectiveWeights()"| SPd
- SPd -->|"(3b) get capacity ratios"| CP
- SPd -->|"(3c) get global capacity"| Cover
- SPd -->|"(3d) update effective weights"| SP
+ Manager -->|"**(3a)** recalculateEffectiveWeights()"| SPd
+ SPd -->|"**(3b)** get capacity ratios"| CP
+ SPd -->|"**(3c)** get global capacity"| Cover
+ SPd -->|"**(3d)** update effective weights"| SP
```
## Staking Pool Manager Actions
@@ -60,27 +60,27 @@ graph TD
## Staking Pool Creation Flow
-(1a) **Pool Manager** calls `createStakingPool()` on **StakingProducts**.
-(1b) **StakingProducts** calls `create()` on **StakingPoolFactory**.
-(1c) **StakingPoolFactory** deploys new **StakingPool**.
-(1d) **StakingProducts** assigns manager via **TokenController**.
-(1e) **StakingProducts** sets initial products and metadata.
+**(1a)** `Pool Manager` calls `createStakingPool()` on **StakingProducts**.
+**(1b)** `StakingProducts` calls `create()` on **StakingPoolFactory**.
+**(1c)** `StakingPoolFactory` deploys new **StakingPool**.
+**(1d)** `StakingProducts` assigns manager via **TokenController**.
+**(1e)** `StakingProducts` sets initial products and metadata.
---
## Update Staking Pool Products
-(2a) **Pool Manager** calls `setProducts()` on **StakingProducts**.
-(2b) **StakingProducts** updates weights and prices in **StakingPool**.
+**(2a)** `Pool Manager` calls `setProducts()` on **StakingProducts**.
+**(2b)** `StakingProducts` updates weights and prices in **StakingPool**.
---
## Recalculate Effective Weights
-(3a) **Pool Manager** calls `recalculateEffectiveWeights()` on **StakingProducts**.
-(3b) **StakingProducts** gets capacity reduction ratios from **CoverProducts**.
-(3c) **StakingProducts** gets global capacity ratio from **Cover**.
-(3d) **StakingProducts** updates effective weights based on:
+**(3a)** `Pool Manager` calls `recalculateEffectiveWeights()` on **StakingProducts**.
+**(3b)** `StakingProducts` gets capacity reduction ratios from **CoverProducts**.
+**(3c)** `StakingProducts` gets global capacity ratio from **Cover**.
+**(3d)** `StakingProducts` updates effective weights based on:
- Active stake in pool
- Global capacity constraints