import * as React from "react";
import { IDOMElementMetrics, FlyoutVisibilitySet } from "../api/common";
import { BlueprintSvgIconNames } from "../constants/assets";
export declare const DEFAULT_TOOLBAR_SIZE = 29;
export declare const TOOLBAR_BACKGROUND_COLOR = "#f0f0f0";
export declare function getEnabled(item: IItem): boolean;
export declare function getIconStyle(enabled: boolean, height: number): React.CSSProperties;
export interface IFlyoutMenuChildItemProps {
    item: IItem | IInlineMenu;
    onInvoked?: () => void;
}
export declare const FlyoutMenuChildItem: (props: IFlyoutMenuChildItemProps) => JSX.Element;
export interface IItem {
    label?: string | (() => string);
    tooltip?: string | (() => string);
    icon?: string;
    iconClass?: string;
    bpIconName?: BlueprintSvgIconNames;
    invoke?: () => void;
    enabled?: boolean | (() => boolean);
    selected?: boolean | (() => boolean);
    isSeparator?: boolean;
}
export interface IInlineMenu extends IItem {
    childItems: IItem[];
    flyoutAlign?: string;
}
export interface IFlyoutMenu extends IItem {
    flyoutId: string;
    flyoutAlign?: string;
}
export interface IComponentFlyoutItem extends IItem {
    flyoutId: string;
    componentName: string;
    componentProps?: any;
}
export interface IContainerItem extends IItem {
    renderContainerContent: () => JSX.Element;
}
/**
 * Toolbar component props
 *
 * @export
 * @interface IToolbarProps
 */
export interface IToolbarProps {
    childItems: IItem[];
    containerClass?: string;
    containerStyle?: React.CSSProperties;
    vertical?: boolean;
    hideVerticalLabels?: boolean;
    onOpenFlyout?: (id: string, metrics: IDOMElementMetrics) => void;
    onCloseFlyout?: (id: string) => void;
    onOpenComponent?: (id: string, metrics: IDOMElementMetrics, name: string, props?: any) => void;
    onCloseComponent?: (id: string) => void;
    flyoutStates?: FlyoutVisibilitySet;
}
/**
 * A generic toolbar component
 * @param props
 */
export declare const Toolbar: (props: IToolbarProps) => JSX.Element;
