/** Supported protein tables. */ export type Protein = "poultry" | "beef" | "pork"; /** A pasteurization lookup table for one protein. */ export interface PasteurizationTable { protein: Protein; /** Core temperature (F) below which holding does not pasteurize in a practical time. */ minTempF: number; /** Core temperature (F) at or above which lethality is treated as instant. */ instantTempF: number; /** Sorted ascending [tempF, holdMinutes] points for the required hold time. */ points: ReadonlyArray; } /** Return the pasteurization table for a protein. Defaults to poultry. */ export declare function getPasteurizationTable(protein?: Protein): PasteurizationTable; /** * Required hold time (minutes) at a core temperature for the protein. * * - Returns 0 when the temperature is at or above the instant-safe target. * - Returns null when the temperature is below the table minimum, meaning * holding will not pasteurize in a practical time. * - Otherwise interpolates between published points. Above the highest listed * point (but below the instant target) the smallest listed hold time is used. */ export declare function requiredHoldMinutes(temperatureF: number, protein?: Protein): number | null; /** Input for a pasteurization assessment. */ export interface PasteurizationInput { /** Current core temperature in Fahrenheit. */ temperatureF: number; /** Minutes the core has been held at or above temperatureF. */ holdMinutes: number; /** Protein table to use. Default: poultry. */ protein?: Protein; } /** Result of a pasteurization assessment. */ export interface PasteurizationResult { protein: Protein; temperatureF: number; /** Required hold minutes at this temperature, or null when too low to pasteurize. */ requiredMinutes: number | null; /** Minutes held so far, clamped to be non-negative. */ heldMinutes: number; /** Minutes remaining until safe. 0 when safe now, null when too low to pasteurize. */ remainingMinutes: number | null; /** True when the food is pasteurized (instant target reached or hold met). */ safe: boolean; /** True when at or above the instant-safe temperature. */ instant: boolean; /** Instant-safe target temperature (F) for this protein. */ instantTempF: number; } /** * Assess pasteurization for a core temperature and how long it has been held. * * The model is intentionally simple: it compares the time held at or above the * current core temperature against the required hold time for that temperature. * It does not integrate accumulated lethality across a changing temperature. */ export declare function assessPasteurization(input: PasteurizationInput): PasteurizationResult; //# sourceMappingURL=pasteurization.d.ts.map