import React from "react";
import { ValidIconName } from "../../components/Icon/canonicalIconNames";
import { IconProps } from "../../components/Icon/Icon";
import { TestIconProps } from "../../components/Icon/TestIcon";
import { TestableComponent } from "../../components/interfaces";
import { ProgressBarProps } from "../../components/ProgressBar/ProgressBar";
import { SpinnerProps } from "../../components/Spinner/Spinner";
import { NotificationProps } from "../../index";
export interface ActivityControlWidgetProps extends TestableComponent {
    /**
     * The label to be shown
     */
    label?: string | JSX.Element;
    /**
     * Element that wraps around the label.
     * Default: `<OverflowText inline={true} />`
     */
    labelWrapper?: JSX.Element;
    /**
     * To add tags in addition to the widget status description
     */
    tags?: JSX.Element;
    /**
     * The progress bar parameters if it should be show by a progres bar
     */
    progressBar?: ProgressBarProps;
    /**
     * The spinner parameters if it should be show by a spinner
     */
    progressSpinner?: SpinnerProps;
    /**
     * Status message
     */
    statusMessage?: string;
    /**
     * The action buttons
     */
    activityActions?: ActivityControlWidgetAction[];
    /**
     * Context menu items
     */
    activityContextMenu?: IActivityContextMenu;
    /**
     * show small version of the widget
     */
    small?: boolean;
    /**
     * display widget inside rectangle
     */
    border?: boolean;
    /**
     * display a bit whitespace around widget, even without border
     */
    hasSpacing?: boolean;
    /**
     * only use necessary width, not always the available 100% of parent element
     */
    canShrink?: boolean;
    /**
     * if this is set the spinner is replaced when the progress has finished from 0 - 1
     */
    progressSpinnerFinishedIcon?: React.ReactElement<IconProps> | React.ReactElement<TestIconProps>;
    /**
     * execution timer messages for waiting and running times.
     */
    timerExecutionMsg?: JSX.Element | null;
    /**
     * additional actions that can serve as a complex component, positioned between the default actions and the context menu
     */
    additionalActions?: React.ReactElement<unknown>[];
}
interface IActivityContextMenu extends TestableComponent {
    tooltip?: string;
    menuItems: IActivityMenuAction[];
}
export interface ActivityControlWidgetAction extends TestableComponent {
    action: () => void;
    tooltip?: string;
    icon: ValidIconName | React.ReactElement<TestIconProps>;
    disabled?: boolean;
    hasStateWarning?: boolean;
    active?: boolean;
    /** A notification that is shown in an overlay pointing at the activity action button. */
    notification?: {
        message: string;
        onClose: () => void;
        intent?: NotificationProps["intent"];
        timeout?: number;
    };
}
interface IActivityMenuAction extends ActivityControlWidgetAction {
    href?: string;
}
/** Shows the status of activities and supports actions on these activities. */
export declare function ActivityControlWidget(props: ActivityControlWidgetProps): React.JSX.Element;
export {};
