mod claims;
mod conversions;
mod estimate;
pub use claims::{
Claim, ClaimCandidate, ClaimSearch, apply_claims, claims_overlay, optimize_claims,
};
pub use conversions::{
BracketSweep, LADDER_ID_PREFIX, LadderStep, OptimizeOptions, OptimizedLadder, SweptBracket,
apply_ladder, is_ladder, ladder_overlay, optimize_conversions, sweep_brackets,
};
pub use estimate::{benefit_estimates, career_at_salary};
use std::cmp::Reverse;
use crate::plan::Dollars;
use crate::project::Projection;
#[must_use]
pub fn rank_key(projection: &Projection) -> (Dollars, Reverse<Dollars>) {
let summary = projection.summary(true);
(summary.lifetime_unfunded, Reverse(summary.final_net_worth))
}