import { ChangeEvent, Component, ReactNode, KeyboardEvent, HTMLAttributes } from 'react';
import './InPlaceEdit.less';
export interface InPlaceEditProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
    /**
     * Value of the component.
     * @since 1.8.3
     */
    value?: ReactNode;
    /**
     * Event handler of value change with inline editing form.
     * @since 1.8.3
     */
    onChange?: (value: string) => void;
    /**
     * @ignore
     */
    className?: string;
    /**
     * @ignore
     */
    baseClassName?: string;
}
declare type InPlaceEditState = {
    editing: boolean;
    draft: ReactNode;
};
/**
 * This component allows users to edit a short text "in place" — in other words, straight in the interface, without
 * opening additional dialog windows. If a text is large enough that it doesn't fit on a single line, you should
 * give users a different way of editing the text.
 * @since 1.8.3
 */
declare class InPlaceEdit extends Component<InPlaceEditProps, InPlaceEditState> {
    static defaultProps: {
        value: null;
        onChange: null;
        className: null;
        baseClassName: string;
    };
    state: {
        editing: boolean;
        draft: string;
    };
    handleEdit: () => void;
    handleEditKey: (event: KeyboardEvent<HTMLInputElement>) => void;
    handleChange: (event: ChangeEvent<HTMLInputElement>) => void;
    handleEditOk: () => void;
    render(): JSX.Element;
}
export default InPlaceEdit;
