import { FocusEvent, ReactNode, HTMLInputTypeAttribute, HTMLInputAutoCompleteAttribute } from "react";
import React from "react";
interface NvInputProps {
/** Callback fired when the value is changed. */
onChange?: (newValue: string) => void;
/** Callback fired when the input is focused. */
onFocus?: (e: FocusEvent) => void;
/** Callback fired when the input is blurred. */
onBlur?: (e: FocusEvent) => void;
/** Fallback value in case if value is not provided. */
defaultValue?: string;
/** The value of the input element. */
value?: string;
/** The short hint displayed in the input before the user enters a value. */
placeholder?: string;
/** If true, the component is disabled. */
disabled?: boolean;
/** If true, the border of the input is red. */
invalid?: boolean;
/** The type attribute of the input element. */
type?: HTMLInputTypeAttribute;
/** The autocomplete attribute of the input element. */
autocomplete?: HTMLInputAutoCompleteAttribute;
/** The autofocus attribute of the input element. */
autofocus?: boolean;
/** The name attribute of the input element. */
name?: string;
/** The required attribute of the input element. */
required?: boolean;
/** The readonly attribute of the input element. */
readonly?: boolean;
/** If true, adds styled wrapper for the input element. */
useContainer?: boolean;
/** If true, makes the input element stretch. Usefully when useContainer is false. */
flexible?: boolean;
/** The id attribute of the input element. */
uid?: string;
/** The tabIndex attribute of the input element. */
inputTabIndex?: number;
/** The additional CSS class for the input element. */
className?: string;
}
/**
* NvInput component that provides a customizable input field with various options like onChange, onFocus, onBlur, etc.
*
* @param {function} onChange Function to handle input change event
* @param {function} onFocus Function to handle input focus event
* @param {function} onBlur Function to handle input blur event
* @param {string} className Additional CSS class for styling
* @param {string} defaultValue Default value for the input field
* @param {string} value Current value of the input field
* @param {string} placeholder Placeholder text for the input field
* @param {boolean} disabled Indicates if the input field is disabled
* @param {boolean} invalid Indicates if the input field is invalid
* @param {string} type Type of the input field (e.g., text, number)
* @param {string} autocomplete Autocomplete attribute for the input field
* @param {boolean} autofocus Indicates if the input field should be autofocused
* @param {string} name Name attribute for the input field
* @param {boolean} required Indicates if the input field is required
* @param {boolean} readonly Indicates if the input field is read-only
* @param {boolean} useContainer Indicates whether to use a container for the input field
* @param {boolean} flexible Indicates if the input field width should adjust dynamically
* @param {string} uid Unique identifier for the input field
* @param {number} inputTabIndex Tab index for the input field
* @param {ReactNode} children Additional elements to be rendered within the input component
* @returns A customizable input component with specified behavior and styling
*/
declare const NvInput: React.ForwardRefExoticComponent>;
export default NvInput;