/**
 * SPDX-FileCopyrightText: © 2019 Liferay, Inc. <https://liferay.com>
 * SPDX-License-Identifier: BSD-3-Clause
 */
import { IPortalBaseProps } from '@clayui/shared';
import React from 'react';
export declare const Align: {
    readonly BottomCenter: 4;
    readonly BottomLeft: 5;
    readonly BottomRight: 3;
    readonly LeftBottom: 11;
    readonly LeftCenter: 6;
    readonly LeftTop: 10;
    readonly RightBottom: 9;
    readonly RightCenter: 2;
    readonly RightTop: 8;
    readonly TopCenter: 0;
    readonly TopLeft: 7;
    readonly TopRight: 1;
};
declare const ALIGN_MAP: {
    readonly BottomCenter: readonly ["tc", "bc"];
    readonly BottomLeft: readonly ["tl", "bl"];
    readonly BottomRight: readonly ["tr", "br"];
    readonly LeftBottom: readonly ["br", "bl"];
    readonly LeftCenter: readonly ["cr", "cl"];
    readonly LeftTop: readonly ["tr", "tl"];
    readonly RightBottom: readonly ["bl", "br"];
    readonly RightCenter: readonly ["cl", "cr"];
    readonly RightTop: readonly ["tl", "tr"];
    readonly TopCenter: readonly ["bc", "tc"];
    readonly TopLeft: readonly ["bl", "tl"];
    readonly TopRight: readonly ["br", "tr"];
};
declare type TPointOptions = typeof ALIGN_MAP[keyof typeof ALIGN_MAP];
export interface IProps extends React.HTMLAttributes<HTMLDivElement> {
    /**
     * Flag to indicate if menu is showing or not.
     */
    active?: boolean;
    /**
     * HTML element that the menu should be aligned to
     */
    alignElementRef: React.RefObject<HTMLElement>;
    /**
     * Flag to align the DropDown menu within the viewport.
     */
    alignmentByViewport?: boolean;
    /**
     * Flag to suggest or not the best region to align menu element.
     */
    autoBestAlign?: boolean;
    /**
     * Default position of menu element. Values come from above.
     *
     * Align.TopCenter = 0;
     * Align.TopRight = 1;
     * Align.RightCenter = 2;
     * Align.BottomRight = 3;
     * Align.BottomCenter = 4;
     * Align.BottomLeft = 5;
     * Align.LeftCenter = 6;
     * Align.TopLeft = 7;
     *
     * Defaults to BottomLeft
     *
     * You can also pass an array of strings, corresponding to the points
     * of the targetNode and sourceNode, `[sourceNode, targetNode]`.
     *
     * Points can be 't'(top), 'b'(bottom), 'c'(center), 'l'(left), 'r'(right).
     * For example: `['tl', 'bl']` corresponds to the bottom left alignment.
     */
    alignmentPosition?: number | TPointOptions;
    /**
     * Flag to indicate if clicking outside of the menu should automatically close it.
     */
    closeOnClickOutside?: boolean;
    /**
     * Props to add to the outer most container.
     */
    containerProps?: IPortalBaseProps;
    /**
     * Flag to indicate if menu is displaying a clay-icon on the left.
     */
    hasLeftSymbols?: boolean;
    /**
     * Flag to indicate if menu is displaying a clay-icon on the right.
     */
    hasRightSymbols?: boolean;
    /**
     * Adds utility class name `dropdown-menu-height-${height}`
     */
    height?: 'auto';
    /**
     * Element ref to call focus() on after menu is closed via Escape key
     */
    focusRefOnEsc?: React.RefObject<HTMLElement>;
    /**
     * Function for setting the offset of the menu from the trigger.
     */
    offsetFn?: (points: TPointOptions) => [number, number];
    /**
     * Callback function for when active state changes.
     */
    onActiveChange?: (value: boolean) => void;
    /**
     * Callback function for when active state changes.
     * @deprecated since v3.52.0 - use `onActiveChange` instead.
     */
    onSetActive?: (value: boolean) => void;
    /**
     * The modifier class `dropdown-menu-width-${width}` makes the menu expand
     * the full width of the page.
     *
     * - sm makes the menu 500px wide.
     * - shrink makes the menu auto-adjust to text and max 240px wide.
     * - full makes the menu 100% wide.
     */
    width?: 'sm' | 'shrink' | 'full';
}
declare const ClayDropDownMenu: React.ForwardRefExoticComponent<IProps & React.RefAttributes<HTMLDivElement>>;
export default ClayDropDownMenu;
