import * as React from 'react';
import { InputStatus } from '../Input';
import { TooltipCommonProps } from '../common';
import { ValuesOf } from '../utils/typeUtils';
import { ListItemEditableMargins, ListItemEditableSize } from './ListItemEditable.constants';
export interface ListItemEditableProps {
    /** Applied as data-hook HTML attribute that can be used in the tests */
    dataHook?: string;
    /** Specifies a CSS class name to be appended to the component’s root element.
     * @internal
     */
    className?: string;
    /** Initial value to display with component render */
    value?: string;
    /** Placeholder to display */
    placeholder?: string;
    /**
     * A callback function triggered by clicking the approve button.
     * ##### Signature:
     * function(value: string) => void
     * * `value`: the text contained in the input.
     */
    onApprove?: (value: string) => void;
    /**
     * A callback function triggered by clicking the cancel button.
     * ##### Signature:
     * function() => void
     */
    onCancel?: () => void;
    /** Cancel button tooltip content */
    cancelButtonTooltipContent?: React.ReactNode;
    /** Cancel button tooltip common props
     * @linkTypeTo components-overlays--tooltip
     * @setTypeName TooltipCommonProps
     */
    cancelButtonTooltipProps?: TooltipCommonProps;
    /** Approve button tooltip content */
    approveButtonTooltipContent?: React.ReactNode;
    /** Approve button tooltip common props
     * @linkTypeTo components-overlays--tooltip
     * @setTypeName TooltipCommonProps
     */
    approveButtonTooltipProps?: TooltipCommonProps;
    /** Make the approve button disabled when input value is empty
     * @default true
     */
    approveButtonDisabledOnEmpty?: boolean;
    /** Specifies the size of the input */
    size?: ValuesOf<typeof ListItemEditableSize>;
    /** Input status - use to display an status indication for the user */
    status?: InputStatus;
    /** The status (error/loading) message to display when hovering the status icon, if not given or empty there will be no tooltip */
    statusMessage?: React.ReactNode;
    /** The type of margin */
    margins?: ListItemEditableMargins;
    /** Pass a component you want to show as the suffix of the input, e.g., text, icon */
    suffix?: React.ReactNode;
    /** Focus the input on mount (standard React input autoFocus) */
    autoFocus?: boolean;
    /** Defines a callback handler that is called when the user presses enter on the input element */
    onEnterPressed?: React.KeyboardEventHandler<HTMLInputElement>;
    /** Defines a standard input onChange callback */
    onChange?: React.ChangeEventHandler<HTMLInputElement>;
    /** Maximum number of characters allowed in the input */
    maxLength?: number;
}
export type ListItemEditableBuilderParams = {
    id: string | number;
} & Pick<ListItemEditableProps, 'dataHook' | 'className' | 'placeholder' | 'onApprove' | 'onCancel' | 'cancelButtonTooltipContent' | 'cancelButtonTooltipProps' | 'approveButtonTooltipContent' | 'approveButtonTooltipProps' | 'approveButtonDisabledOnEmpty' | 'size' | 'status' | 'statusMessage' | 'margins' | 'suffix' | 'autoFocus' | 'onEnterPressed' | 'onChange' | 'maxLength'>;
//# sourceMappingURL=ListItemEditable.types.d.ts.map