import { default as React, HTMLAttributes } from 'react';
export type SaveableInputProps = {
    /**
     * The input placeholder.
     */
    placeholder?: string;
    /**
     * The previous or old value shown above the input value.
     * This value will *not* be changed for new input values.
     */
    fixedPreviousValue?: string;
    /**
     * The previous or old value shown above the input value.
     * This value *changes* when a new input value is accepted.
     */
    previousValue?: string;
    /**
     * The actual input value.
     */
    value?: string;
    /**
     * Used to control the save button from the outside to disable it in case
     * the entered value is not valid.
     *
     * @default true
     */
    isValid?: boolean;
    /**
     * This is the error message that is shown below the input. It uses the built-in error handling,
     * and will be shown when the "isValid" prop is set to false.
     */
    errorMessage?: string | React.ReactNode;
    /**
     * Defines wether the error icon is shown or not. If enabled, it will be shown when the "isValid" prop
     * is set to false.
     *
     * @default false
     */
    hideErrorIcon?: boolean;
    /**
     * Callback function triggered when the value changes.
     * @param value
     * @param previousValue
     * @returns
     */
    onValueChanged?: (value: string, previousValue: string) => void;
    /**
     * Callback function that gets triggered on every input change. Use this to control the component
     * or when implementing key validation.
     * @param keyValue the key value that has been entered
     * @param inputValue the current complete value of the input
     * @returns
     */
    onInputChange?: (keyValue: string, inputValue: string) => void;
    /**
     * Callback function that gets triggered when the user aborts the edit mode. Use this
     * to control the component and handle the resetting of previous value on the outside.
     * @returns
     */
    onEsc?: () => void;
    /**
     * Callback function that gets triggered when the input is in edit mode. Use this
     * to control the component dna to handle the previous value on the outside.
     * @returns
     */
    onEnterEdit?: () => void;
    /**
     * Defines the button style: `default` or `primary`.
     *
     * @default 'primary'
     */
    buttonStyle?: 'primary' | 'default';
    /**
     * Additional HTML attributes to be set on the input element.
     */
    inputProps?: HTMLAttributes<HTMLInputElement>;
    /**
     * Adds a given unit to the input.
     */
    unit?: string | React.ReactNode;
    /**
     * Icon class name that shall be used. If defined, the input element is wrapped in an input-group
     * and the icon will be set in an input-addon. Example: `rioglyph-search`.
     */
    icon?: string;
    /**
     * Disables the component so the user cannot enter the edit mode.
     *
     * @default false
     */
    disabled?: boolean;
    /**
     * Additional classes to be set on the input itself.
     */
    inputClassName?: string;
    /**
     * Additional classes to be set on the wrapper element.
     */
    className?: string;
};
declare const SaveableInput: (props: SaveableInputProps) => import("react/jsx-runtime").JSX.Element;
export default SaveableInput;
