/**
 * SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
 * SPDX-License-Identifier: BSD-3-Clause
 */
import { InternalDispatch } from '@clayui/shared';
import React from 'react';
import Action from './Action';
import Caption from './Caption';
import Divider from './Divider';
import Group from './Group';
import Help from './Help';
import Item from './Item';
import ItemList from './ItemList';
import Menu, { Align } from './Menu';
import Search from './Search';
import Section from './Section';
export interface IProps extends React.HTMLAttributes<HTMLDivElement | HTMLLIElement> {
    /**
     * Flag to indicate if the DropDown menu is active or not (controlled).
     *
     * This API is generally used in conjunction with `closeOnClickOutside=true`
     * since often we are controlling the active state by clicking another element
     * within the document.
     */
    active?: boolean;
    /**
     * Flag to align the DropDown menu within the viewport.
     */
    alignmentByViewport?: React.ComponentProps<typeof Menu>['alignmentByViewport'];
    /**
     * Default position of menu element. Values come from `./Menu`.
     */
    alignmentPosition?: React.ComponentProps<typeof Menu>['alignmentPosition'];
    /**
     * HTML element tag that the container should render.
     */
    containerElement?: React.JSXElementConstructor<any> | 'div' | 'li';
    closeOnClickOutside?: React.ComponentProps<typeof Menu>['closeOnClickOutside'];
    /**
     *  Property to set the default value of `active` (uncontrolled).
     */
    defaultActive?: boolean;
    /**
     * Flag to indicate if menu contains icon symbols on the right side.
     */
    hasRightSymbols?: boolean;
    /**
     * Flag to indicate if menu contains icon symbols on the left side.
     */
    hasLeftSymbols?: boolean;
    /**
     * Prop to pass DOM element attributes to <DropDown.Menu />.
     */
    menuElementAttrs?: React.HTMLAttributes<HTMLDivElement> & Pick<React.ComponentProps<typeof Menu>, 'containerProps'>;
    menuHeight?: React.ComponentProps<typeof Menu>['height'];
    menuWidth?: React.ComponentProps<typeof Menu>['width'];
    /**
     * Callback for when the active state changes (controlled).
     *
     * This API is generally used in conjunction with `closeOnClickOutside=true`
     * since often we are controlling the active state by clicking another element
     * within the document.
     */
    onActiveChange?: InternalDispatch<boolean>;
    /**
     * Function for setting the offset of the menu from the trigger.
     */
    offsetFn?: React.ComponentProps<typeof Menu>['offsetFn'];
    /**
     * Flag indicating if the menu should be rendered lazily
     */
    renderMenuOnClick?: boolean;
    /**
     * Element that is used as the trigger which will activate the dropdown on click.
     */
    trigger: React.ReactElement & {
        ref?: (node: HTMLButtonElement | null) => void;
    };
}
declare function ClayDropDown(props: IProps): JSX.Element & {
    Action: typeof Action;
    Caption: typeof Caption;
    Divider: typeof Divider;
    Group: typeof Group;
    Help: typeof Help;
    Item: typeof Item;
    ItemList: typeof ItemList;
    Menu: typeof Menu;
    Search: typeof Search;
    Section: typeof Section;
};
declare namespace ClayDropDown {
    var Action: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLButtonElement>) => JSX.Element;
    var Caption: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => JSX.Element;
    var Divider: () => JSX.Element;
    var Group: ({ children, header }: {
        children?: React.ReactNode;
        header?: string | undefined;
    }) => JSX.Element;
    var Help: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLDivElement>) => JSX.Element;
    var Menu: React.ForwardRefExoticComponent<import("./Menu").IProps & React.RefAttributes<HTMLDivElement>>;
    var Item: React.ForwardRefExoticComponent<import("./Item").IProps & React.RefAttributes<HTMLLIElement>>;
    var ItemList: ({ children, className, ...otherProps }: React.HTMLAttributes<HTMLUListElement>) => JSX.Element;
    var Search: ({ className, formProps, spritemap, ...otherProps }: import("./Search").IProps) => JSX.Element;
    var Section: React.ForwardRefExoticComponent<import("./Section").IProps & React.RefAttributes<HTMLLIElement>>;
}
export { Align };
export default ClayDropDown;
