import * as React from 'react';
import { DropdownLayoutOption, DropdownLayoutValueOption } from '../DropdownLayout';
import { ManualInputFnSignature } from '../InputWithOptions';
import { PopoverCommonProps } from '../common';
import { STATUS, BORDER, SIZE } from './AddressInput.constants';
import { ValuesOf } from '../utils/typeUtils';
export interface AddressInputProps {
    /** Applies a 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;
    /** Displays a clear button (X) on a non-empty input.
     * @default true
     */
    clearButton?: boolean;
    /** Aria label for the clear button */
    clearButtonAriaLabel?: string;
    /** Sets the initial input value. */
    initialValue?: string;
    /** Sets a value to display (controlled mode). */
    value?: string;
    /** Specifies whether input is disabled. */
    disabled?: boolean;
    /** Defines a callback function which is called whenever a user selects a different option in the list. */
    onSelect?: (option: DropdownLayoutValueOption) => void;
    /** Defines a callback function which is called when user performs a submit action.
     * Submit-Action triggers are: "Enter", "Tab".
     */
    onManuallyInput?: ManualInputFnSignature;
    /** Defines a callback function which is called every time input value is changed. */
    onChange?: React.ChangeEventHandler<HTMLInputElement>;
    /** Defines a standard input onFocus callback. */
    onFocus?: (e?: React.FocusEvent<HTMLInputElement>) => void;
    /** Defines a standard input onBlur callback. */
    onBlur?: React.FocusEventHandler<HTMLInputElement>;
    /** Specifies whether input is auto selected on focus. */
    autoSelect?: boolean;
    /** Defines a handler for getting notified upon a clear event. When passed, it displays a clear button in the input. */
    onClear?: () => void;
    /** Specify an array of options to render. When the option is an {optionProps}, the <AddressInput.Option/> component will be rendered on behalf of the user. */
    options?: DropdownLayoutOption[];
    /** Specify the status of a field. Mostly used for “loading” indication upon async request calls. */
    status?: AddressInputStatus;
    /** Defines the message to display on status icon hover. If not given or empty there will be no tooltip. */
    statusMessage?: React.ReactNode;
    /** Control the border style of an input. */
    border?: AddressInputBorder;
    /** Controls the size of the input. Default value: `medium`. */
    size?: AddressInputSize;
    /** Sets a placeholder message to display. */
    placeholder?: string;
    /** Sets the message to show in a dropdown when no results are found. */
    noResultsText?: React.ReactNode;
    /** Allows to pass common popover props. */
    popoverProps?: PopoverCommonProps;
}
export type AddressInputStatus = ValuesOf<typeof STATUS>;
export type AddressInputBorder = ValuesOf<typeof BORDER>;
export type AddressInputSize = ValuesOf<typeof SIZE>;
//# sourceMappingURL=AddressInput.types.d.ts.map