import React, { PureComponent } from 'react';
import type { WithOutsideClickProps } from '../../ui-react/with-react-editor-view-outer-listeners';
import type { OpenChangedEvent } from '../../ui/DropList';
import type { ArrowKeyNavigationProviderOptions } from '../ArrowKeyNavigationProvider/types';
export interface Props {
    alignDropdownWithParentElement?: boolean;
    alignX?: 'left' | 'right' | 'center';
    alignY?: 'start' | 'bottom' | 'top';
    arrowKeyNavigationProviderOptions: ArrowKeyNavigationProviderOptions;
    boundariesElement?: HTMLElement;
    children?: React.ReactNode;
    dropdownListId?: string;
    fitHeight?: number;
    fitWidth?: number;
    forcePlacement?: boolean;
    isOpen?: boolean;
    mountTo?: HTMLElement;
    offset?: [number, number];
    onOpenChange?: (attrs: OpenChangedEvent) => void;
    scrollableElement?: HTMLElement;
    shouldFitContainer?: boolean;
    target?: HTMLElement;
    testId?: string;
    trigger?: React.ReactElement<any>;
    zIndex?: number;
}
export interface State {
    popupPlacement: [string, string];
    target?: HTMLElement;
}
/**
 * Wrapper around @atlaskit/droplist which uses Popup and Portal to render
 * droplist outside of "overflow: hidden" containers when needed.
 *
 * Also it controls popper's placement.
 */
export declare class Dropdown extends PureComponent<Props, State> {
    constructor(props: Props);
    private handleRef;
    private updatePopupPlacement;
    private handleCloseAndFocus;
    private handleClose;
    componentDidUpdate(prevProps: Readonly<Props>): void;
    private renderDropdown;
    render(): React.JSX.Element;
}
export type DropdownPropsWithOutsideClickProps = Props & WithOutsideClickProps;
declare const DropdownWithOuterListeners: React.ComponentType<React.PropsWithChildren<DropdownPropsWithOutsideClickProps>>;
export default DropdownWithOuterListeners;
