import { type ComponentPropsWithoutRef, type ReactNode } from "react";
export type NumberInputSize = "sm" | "md" | "lg";
/** Native `<input>` props minus the ones the component owns. We also drop
 *  the native `size` attribute because we redefine `size` as the visual
 *  variant ("sm" | "md" | "lg"). */
type InputPropsBase = Omit<ComponentPropsWithoutRef<"input">, "type" | "value" | "onChange" | "min" | "max" | "step" | "size" | "prefix">;
export interface NumberInputProps extends InputPropsBase {
    label?: ReactNode;
    value: number;
    onChange?: (value: number) => void;
    min?: number;
    max?: number;
    step?: number;
    prefix?: ReactNode;
    suffix?: ReactNode;
    size?: NumberInputSize;
    disabled?: boolean;
    error?: ReactNode;
    helperText?: ReactNode;
    /** Extra class on the wrapper (NOT the input — use `inputClassName` for
     *  the underlying control's class). */
    wrapperClassName?: string;
}
export declare const NumberInput: import("react").ForwardRefExoticComponent<NumberInputProps & import("react").RefAttributes<HTMLInputElement>>;
export {};
//# sourceMappingURL=NumberInput.d.ts.map