import * as React from "react";
import * as PropTypes from "prop-types";
import Option from "./Option";
import { Type, ArrowType } from "./Type";
import { Props as ButtonProps } from "../Button/Button";
import { ChildrenOf, Values } from "../utils/types";
import "./Caret.less";
import "./DropdownButton.less";
export interface Props {
    ariaLabelSecondaryButton?: string;
    children?: ChildrenOf<typeof Option>;
    className?: string;
    disabled?: boolean;
    href?: string;
    label: React.ReactNode;
    onClick?: Function;
    size?: ButtonProps["size"];
    target?: "_self" | "_blank";
    type?: Values<typeof Type>;
    arrowType?: Values<typeof ArrowType>;
}
interface State {
    expanded: boolean;
}
export declare const cssClass: {
    BUTTONS: string;
    CARET_CONTAINER: string;
    CARET: string;
    CONTAINER: string;
    MAIN: string;
    POPUP: string;
    SECTION: string;
    TOGGLE: string;
};
export default class DropdownButton extends React.PureComponent<Props, State> {
    static propTypes: {
        ariaLabelSecondaryButton: PropTypes.Requireable<string>;
        children: PropTypes.Requireable<any>;
        className: PropTypes.Requireable<string>;
        disabled: PropTypes.Requireable<boolean>;
        href: PropTypes.Requireable<string>;
        label: PropTypes.Validator<PropTypes.ReactNodeLike>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        size: PropTypes.Requireable<Values<{
            readonly S: "small";
            readonly M: "regular";
            readonly L: "large";
        }>>;
        target: PropTypes.Requireable<string>;
        type: PropTypes.Requireable<Values<{
            readonly PRIMARY: "primary";
            readonly SECONDARY: "secondary";
            readonly DESTRUCTIVE: "destructive";
            readonly LINK: "link";
        }>>;
        arrowType: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        size: "regular";
        type: "secondary";
        arrowType: string;
    };
    static Option: typeof Option;
    static Size: {
        readonly S: "small";
        readonly M: "regular";
        readonly L: "large";
    };
    static Type: {
        readonly PRIMARY: "primary";
        readonly SECONDARY: "secondary";
        readonly DESTRUCTIVE: "destructive";
        readonly LINK: "link";
    };
    static ArrowType: {
        CARET: string;
        ELLIPSIS: string;
    };
    constructor(props: Props);
    _renderMainButton(): JSX.Element;
    render(): JSX.Element;
}
export {};
