import { ConcentrationValue, MolarityUnit, MassVolumeUnit } from './useConcentrationUnits'; export type VolumeUnit = 'µL' | 'mL' | 'L'; export interface VolumeValue { value: number; unit: VolumeUnit; } export interface DilutionParams { stockConcentration: ConcentrationValue; finalConcentration: ConcentrationValue; finalVolume: VolumeValue; } export interface DilutionResult { stockVolume: VolumeValue; diluentVolume: VolumeValue; dilutionFactor: number; valid: boolean; error?: string; } export interface SerialDilutionParams { startingConcentration: ConcentrationValue; dilutionFactor: number; numberOfDilutions: number; volumePerWell: VolumeValue; } export interface SerialDilutionStep { stepNumber: number; concentration: ConcentrationValue; transferVolume: VolumeValue; diluentVolume: VolumeValue; } export interface SerialDilutionResult { steps: SerialDilutionStep[]; totalStockVolume: VolumeValue; valid: boolean; error?: string; } export interface ConversionResult { result: ConcentrationValue; valid: boolean; error?: string; } export interface WellConcentration { wellId: string; concentration: ConcentrationValue; volume?: VolumeValue; } export interface UseDoseCalculatorReturn { volumeUnits: VolumeUnit[]; calculateDilution: (params: DilutionParams) => DilutionResult; calculateSerialDilution: (params: SerialDilutionParams) => SerialDilutionResult; convertMassToMolar: (mass: number, massUnit: MassVolumeUnit, mw: number) => ConcentrationValue; convertMolarToMass: (molar: number, molarUnit: MolarityUnit, mw: number) => ConcentrationValue; convertVolume: (value: number, from: VolumeUnit, to: VolumeUnit) => number; formatVolume: (volume: VolumeValue, precision?: number) => string; generateWellConcentrations: (result: SerialDilutionResult, wellIds: string[]) => WellConcentration[]; } /** Calculates single dilutions, serial dilution series, and plate-filling volumes for dose-response experiments. */ export declare function useDoseCalculator(): UseDoseCalculatorReturn;