import { type BmiCategory } from '../bmi-calculator/bmi'; import type { Plurality } from '../_shared/obstetrics'; export interface GainBand { /** Lower bound, kg. */ min: number; /** Upper bound, kg. */ max: number; } export type GainStatus = 'below' | 'within' | 'above'; /** IOM (2009) total recommended gain for a singleton pregnancy, kg. */ export declare const TOTAL_GAIN_BANDS: Record; /** * IOM (2009) total recommended gain for a TWIN pregnancy, kg. The IOM gives * no firm range for underweight twins (insufficient evidence), so that * category is intentionally absent and resolves to `null`. There is no IOM * range for triplets at all. */ export declare const TWIN_TOTAL_GAIN_BANDS: Partial>; /** Resolve the total-gain band for a category + plurality, or `null` if the IOM gives none. */ export declare function totalGainBand(category: BmiCategory, plurality?: Plurality): GainBand | null; /** IOM (2009) mean rate of gain in the 2nd/3rd trimester, kg per week. */ export declare const RATE_BANDS: Record; /** First-trimester total gain band, kg (category-independent in IOM). */ export declare const FIRST_TRIMESTER_GAIN: GainBand; /** Completed weeks counted as the first trimester for gain purposes. */ export declare const FIRST_TRIMESTER_WEEKS = 13; export interface WeightGainInput { /** Pre-pregnancy BMI (kg/m²) — drives the category. */ prePregnancyBmi: number; /** Pre-pregnancy weight, kg. */ prePregnancyWeightKg: number; /** Current weight, kg. */ currentWeightKg: number; /** Completed gestational weeks. */ gestationalWeeks: number; /** Number of babies. Defaults to `'singleton'`. */ plurality?: Plurality; } export interface WeightGainResult { category: BmiCategory; /** Number of babies the assessment was computed for. */ plurality: Plurality; /** * Recommended TOTAL gain across the whole pregnancy, or `null` when the IOM * publishes no range (triplets, and underweight twins). */ totalRange: GainBand | null; /** Recommended gain accumulated by the current week, or `null` (see above). */ recommendedToDate: GainBand | null; /** Actual gain so far (current − pre-pregnancy), kg. */ actualGainKg: number; /** Where the actual gain sits against the to-date recommendation, or `null`. */ status: GainStatus | null; /** * Estimated 2nd/3rd-trimester average weekly gain to date (kg/week), or `null` * before week 14 / when no singleton rate band applies. A snapshot estimate * (assumes the mid first-trimester gain), not a between-visit measurement. */ weeklyRate: number | null; /** Where the weekly rate sits against the IOM rate band, or `null`. */ rateStatus: GainStatus | null; } export declare function recommendedGainToDate(category: BmiCategory, weeks: number, plurality?: 'singleton'): GainBand; export declare function recommendedGainToDate(category: BmiCategory, weeks: number, plurality: Plurality): GainBand | null; export declare function assessWeightGain(input: WeightGainInput): WeightGainResult; //# sourceMappingURL=weight-gain.d.ts.map