import { HTMLAttributes } from 'react';
import { Moment } from 'moment';
import { DatePickerProps } from '../datepicker/DatePicker';
export type SaveableDateInputProps = {
    /**
     * The input placeholder.
     */
    placeholder?: string;
    /**
     * The actual input value.
     */
    value?: Date | Moment | 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 and is saved.
     *
     * @param value
     * @param previousValue
     * @returns
     */
    onValueChanged?: (value: Moment | string, previousValue: Moment | string | Date) => 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
     * @returns
     */
    onInputChange?: (value: Moment | string, isValid: boolean) => void;
    /**
     * Callback function that gets triggered when the input is in edit mode. Use this
     * to control the component and to handle the previous value on the outside.
     *
     * @returns
     */
    onEnterEdit?: () => void;
    /**
     * Callback function that gets triggered when edit mode is exited (either saved or cancelled).
     *
     * @param wasSaved - true if value was saved, false if cancelled/reset
     * @returns
     */
    onExitEdit?: (wasSaved: boolean) => 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
     */
    onCancel?: () => void;
    /**
     * Behavior when trying to exit edit mode with invalid input:
     * - 'stay-open': Keep edit mode open until valid input is provided
     * - 'reset-and-close': Close edit mode and reset to initial value
     *
     * @default 'stay-open'
     */
    invalidExitBehavior?: 'stay-open' | 'reset-and-close';
    /**
     * 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>;
    /**
     * Additional props passed to the underlying DatePicker component.
     *
     * @default {}
     */
    datePickerProps?: DatePickerProps;
    /**
     * 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 SaveableDateInput: (props: SaveableDateInputProps) => import("react/jsx-runtime").JSX.Element;
export default SaveableDateInput;
