import { CodeSystemCode } from '@mesalvo/ts-definitions';
import { InputProps } from '../Input/props';
import { default as UnitSelector } from '../Selectors/UnitSelector/UnitSelector';
/**
 * Base structure for any quantity-type input.
 * @template V - numeric or custom value type
 */
export interface BaseInputValue<V> {
    value: V | null;
    unit: string | null;
}
export type MinimalUnit = {
    code: string;
    codeSystem?: string;
    displayName?: string;
    label?: {
        text: string;
        lang?: string;
    }[];
};
/**
 * Generic props shared by all Quantity-like inputs
 */
export interface BaseQuantityInputProps<V = number, U extends {
    code: string;
} = MinimalUnit | CodeSystemCode> extends Omit<InputProps, "value" | "onChange" | "type" | "label"> {
    /** Current combined value (value + unit) */
    value?: BaseInputValue<V> | null;
    /** Default uncontrolled value */
    defaultQuantity?: BaseInputValue<V> | null;
    /** Fires whenever either field changes */
    onChange?: (value: BaseInputValue<V> | null) => void;
    /** Whether to display a unit selector */
    hasUnitSelector?: boolean;
    /** Label for the numeric field */
    label: string;
    /** Whether the input is disabled */
    disabled?: boolean;
    /** Read-only mode */
    readOnly?: boolean;
    /** Collaborative form helpers */
    updateField?: (shortcut: string, value: BaseInputValue<V> | null) => void;
    shortcut?: string;
    /** FHIR or internal URL for unit system */
    unitSystemUrl?: string;
    /** Optional static custom unit options */
    customOptions?: U[];
    /** Default fallback unit */
    defaultUnit?: U | null;
    /** Extra props passed directly to the internal UnitSelector */
    unitSelectorProps?: Partial<React.ComponentProps<typeof UnitSelector<U>>>;
}
/**
 * 🧮 Generic Quantity Input — numeric + unit combo
 */
export declare function QuantityInput<V = number, U extends {
    code: string;
} = MinimalUnit | CodeSystemCode>(props: BaseQuantityInputProps<V, U>): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=QuantityInput.d.ts.map