/**
 * SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
 * SPDX-License-Identifier: BSD-3-Clause
 */
import { InternalDispatch } from '@clayui/shared';
import React from 'react';
import ClayDropDown from './DropDown';
import ClayDropDownMenu from './Menu';
import Search from './Search';
declare type TType = 'checkbox' | 'contextual' | 'group' | 'item' | 'radio' | 'radiogroup' | 'divider';
interface IItem {
    active?: boolean;
    checked?: boolean;
    disabled?: boolean;
    href?: string;
    items?: Array<IItem>;
    label?: string;
    name?: string;
    onChange?: Function;
    onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
    symbolLeft?: string;
    symbolRight?: string;
    type?: TType;
    value?: string;
}
interface IDropDownContentProps {
    /**
     * The path to the SVG spritemap file containing the icons.
     */
    spritemap?: string;
    /**
     * List of items to display in drop down menu
     */
    items: Array<IItem>;
}
export interface IProps extends IDropDownContentProps {
    /**
     * Flag to indicate if the DropDown menu is active or not (controlled).
     */
    active?: boolean;
    /**
     * Flag to align the DropDown menu within the viewport.
     */
    alignmentByViewport?: React.ComponentProps<typeof ClayDropDownMenu>['alignmentByViewport'];
    /**
     * Default position of menu element. Values come from `./Menu`.
     */
    alignmentPosition?: React.ComponentProps<typeof ClayDropDownMenu>['alignmentPosition'];
    /**
     * Informational text that appears at the end or above the `footerContent` prop.
     */
    caption?: string;
    className?: string;
    closeOnClickOutside?: React.ComponentProps<typeof ClayDropDown>['closeOnClickOutside'];
    /**
     * HTML element tag that the container should render.
     */
    containerElement?: React.ComponentProps<typeof ClayDropDown>['containerElement'];
    /**
     * Property to set the initial value of `active` (uncontrolled).
     */
    defaultActive?: boolean;
    /**
     * Add an action button or any other element you want to be fixed position to the
     * footer from the DropDown.
     */
    footerContent?: React.ReactElement;
    /**
     * Element that is used as the trigger which will activate the dropdown on click.
     */
    trigger: React.ReactElement;
    /**
     * Add informational text at the top of DropDown.
     */
    helpText?: string;
    /**
     * Prop to pass DOM element attributes to <DropDown.Menu />.
     */
    menuElementAttrs?: React.ComponentProps<typeof ClayDropDown>['menuElementAttrs'];
    menuHeight?: React.ComponentProps<typeof ClayDropDown>['menuHeight'];
    menuWidth?: React.ComponentProps<typeof ClayDropDown>['menuWidth'];
    /**
     * Function for setting the offset of the menu from the trigger.
     */
    offsetFn?: React.ComponentProps<typeof ClayDropDown>['offsetFn'];
    /**
     * Callback for when the active state changes (controlled).
     */
    onActiveChange?: InternalDispatch<boolean>;
    /**
     * Callback will always be called when the user is interacting with search.
     */
    onSearchValueChange?: (newValue: string) => void;
    /**
     * Flag indicating if the menu should be rendered lazily
     */
    renderMenuOnClick?: React.ComponentProps<typeof ClayDropDown>['renderMenuOnClick'];
    /**
     * Flag to show search at the top of the DropDown.
     */
    searchable?: boolean;
    /**
     * Pass the props to the Search component.
     */
    searchProps?: Omit<React.ComponentProps<typeof Search>, 'onChange' | 'spritemap' | 'value'>;
    /**
     * The value that will be passed to the search input element.
     */
    searchValue?: string;
}
export declare const ClayDropDownWithItems: {
    ({ active, alignmentByViewport, alignmentPosition, caption, className, closeOnClickOutside, containerElement, defaultActive, footerContent, helpText, items, menuElementAttrs, menuHeight, menuWidth, offsetFn, onActiveChange, onSearchValueChange, renderMenuOnClick, searchable, searchProps, searchValue, spritemap, trigger, }: IProps): JSX.Element;
    displayName: string;
};
export {};
