import React from 'react';
import { BaseComponentProps } from '../internal/base-component';
import { CancelableEventHandler, NonCancelableEventHandler } from '../internal/events';
import { ButtonProps } from '../button';
export interface ButtonDropdownProps extends BaseComponentProps {
    items: ReadonlyArray<ButtonDropdownProps.Item | ButtonDropdownProps.ItemGroup>;
    disabled?: boolean;
    loading?: boolean;
    variant?: ButtonDropdownProps.Variant;
    expandableGroups?: boolean;
    children?: React.ReactNode;
    onItemClick?: NonCancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;
}
export declare namespace ButtonDropdownProps {
    type Variant = 'normal' | 'primary';
    interface Item {
        id: string;
        text: string;
        disabled?: boolean;
        description?: string;
    }
    interface ItemGroup extends Omit<Item, 'id' | 'text'> {
        id?: string;
        text?: string;
        items: Items;
    }
    type Items = ReadonlyArray<Item | ItemGroup>;
    interface ItemClickDetails {
        id: string;
    }
    interface Ref {
        focus(): void;
    }
}
export interface CategoryProps {
    item: ButtonDropdownProps.ItemGroup;
    onItemActivate: (item: ButtonDropdownProps.Item | ButtonDropdownProps.ItemGroup) => void;
    highlightedItem?: ButtonDropdownProps.Item | ButtonDropdownProps.ItemGroup;
    expandedItem?: ButtonDropdownProps.ItemGroup;
    disabled: boolean;
    onItemClick?: NonCancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;
}
export interface ItemListProps {
    items: ButtonDropdownProps.Items;
    onItemActivate: (item: ButtonDropdownProps.Item | ButtonDropdownProps.ItemGroup) => void;
    highlightedItem?: ButtonDropdownProps.Item | ButtonDropdownProps.ItemGroup;
    expandedItem?: ButtonDropdownProps.ItemGroup;
    categoryDisabled?: boolean;
    hasExpandableGroups?: boolean;
    hasCategoryHeader?: boolean;
    onItemClick?: NonCancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;
    allowHref?: boolean;
}
export interface LinkItem extends ButtonDropdownProps.Item {
    href: string;
}
export interface ItemProps {
    item: ButtonDropdownProps.Item | LinkItem;
    disabled: boolean;
    highlighted: boolean;
    onItemActivate: (item: ButtonDropdownProps.Item, event: Event) => void;
    last: boolean;
    hasCategoryHeader: boolean;
    allowHref?: boolean;
}
export interface InternalButtonDropdownProps extends ButtonDropdownProps {
    customTriggerBuilder?: (clickHandler: CancelableEventHandler<ButtonProps.ClickDetail>, ref: React.Ref<any>, isDisabled: boolean, isExpanded: boolean) => React.ReactNode;
    allowHref?: boolean;
}
