File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -127,6 +127,30 @@ module liquid_staking::liquid_staking {
127127 &self.lst
128128 }
129129
130+ /// Returns the net SUI amount received when redeeming 1 LST token (after fees).
131+ ///
132+ /// This function calculates how much SUI (in MIST) a user would receive when
133+ /// redeeming 1 LST token (1_000_000_000 of LST), after accounting
134+ /// for redemption fees.
135+ ///
136+ /// A return value of 950_000_000 means 1 LST redeems for 0.95 SUI (after fees)
137+ ///
138+ public fun net_redemption_amount <T >(self: &LiquidStakingInfo <T >): u64 {
139+ let one_lst = 1_000_000_000 ;
140+
141+ // Get gross redemption amount: 1 LST = X SUI (before fees)
142+ let gross_sui_amount = self.lst_amount_to_sui_amount (one_lst);
143+
144+ // Calculate redemption fee
145+ let redeem_fee = self.fee_config ().calculate_redeem_fee (gross_sui_amount);
146+
147+ // Get net SUI amount after fees (protected against underflow)
148+ assert ! (gross_sui_amount >= redeem_fee, ERedeemInvariantViolated );
149+ let net_sui_amount = gross_sui_amount - redeem_fee;
150+
151+ net_sui_amount
152+ }
153+
130154 #[test_only]
131155 public fun accrued_spread_fees <P >(self: &LiquidStakingInfo <P >): u64 {
132156 self.accrued_spread_fees
You can’t perform that action at this time.
0 commit comments