/** @packageDocumentation
 * @module Widget
 */
import * as React from "react";
import { BadgeType, ConditionalStringValue, PointProps } from "@itwin/appui-abstract";
import { CommonProps, RectangleProps } from "@itwin/core-react";
import { DisabledResizeHandles, DraggedWidgetManagerProps, HorizontalAnchor, Tab, TabMode, VerticalAnchor, WidgetZoneId } from "@itwin/appui-layout-react";
import { WidgetChangeHandler } from "../frontstage/FrontstageComposer";
/** Properties for a [[WidgetStack]] Tab.
 * @internal
 */
export interface WidgetTab {
    readonly iconSpec?: string | ConditionalStringValue | React.ReactNode;
    readonly title: string;
    readonly badgeType?: BadgeType;
}
/** Properties for a Widget in a [[WidgetStack]].
 * @internal
 */
export declare type WidgetTabs = {
    readonly [id in WidgetZoneId]: ReadonlyArray<WidgetTab>;
};
/** Properties for the [[WidgetStack]] React component.
 * @internal
 */
export interface WidgetStackProps extends CommonProps {
    activeTabIndex: number;
    disabledResizeHandles: DisabledResizeHandles | undefined;
    draggedWidget: DraggedWidgetManagerProps | undefined;
    fillZone: boolean;
    getWidgetContentRef: (id: WidgetZoneId) => React.Ref<HTMLDivElement>;
    horizontalAnchor: HorizontalAnchor;
    isCollapsed: boolean;
    isFloating: boolean;
    isInStagePanel: boolean;
    openWidgetId: WidgetZoneId | undefined;
    verticalAnchor: VerticalAnchor;
    widgetChangeHandler: WidgetChangeHandler;
    widgets: ReadonlyArray<WidgetZoneId>;
    widgetTabs: WidgetTabs;
}
/** Widget stack React component.
 * @internal
 */
export declare class WidgetStack extends React.PureComponent<WidgetStackProps> {
    private _widgetStack;
    render(): React.ReactNode;
    private _handleOnWidgetResize;
    private _handleTabDragStart;
    private _handleTabDragEnd;
    private _handleTabClick;
    private _handleTabDrag;
}
/** Properties for the [[WidgetStackTabs]] component.
 * @internal
 */
export interface WidgetStackTabsProps {
    activeTabIndex: number;
    draggedWidget: DraggedWidgetManagerProps | undefined;
    horizontalAnchor: HorizontalAnchor;
    isCollapsed: boolean;
    isProtruding: boolean;
    onTabClick: (widgetId: WidgetZoneId, tabIndex: number) => void;
    onTabDrag: (dragged: PointProps) => void;
    onTabDragEnd: () => void;
    onTabDragStart: (widgetId: WidgetZoneId, tabIndex: number, initialPosition: PointProps, firstTabBounds: RectangleProps) => void;
    openWidgetId: WidgetZoneId | undefined;
    verticalAnchor: VerticalAnchor;
    widgets: ReadonlyArray<WidgetZoneId>;
    widgetTabs: WidgetTabs;
}
/** Tabs of [[WidgetStack]] component.
 * @internal
 */
export declare class WidgetStackTabs extends React.PureComponent<WidgetStackTabsProps> {
    render(): React.ReactNode;
}
/** Properties for the [[WidgetStackTabGroup]] component.
 * @internal
 */
export interface WidgetStackTabGroupProps {
    activeTabIndex: number;
    draggedWidget: DraggedWidgetManagerProps | undefined;
    horizontalAnchor: HorizontalAnchor;
    isCollapsed: boolean;
    isProtruding: boolean;
    isStacked: boolean;
    onTabClick: (widgetId: WidgetZoneId, tabIndex: number) => void;
    onTabDrag: (dragged: PointProps) => void;
    onTabDragEnd: () => void;
    onTabDragStart: (widgetId: WidgetZoneId, tabIndex: number, initialPosition: PointProps, firstTabBounds: RectangleProps) => void;
    openWidgetId: WidgetZoneId | undefined;
    tabs: ReadonlyArray<WidgetTab>;
    verticalAnchor: VerticalAnchor;
    widgetId: WidgetZoneId;
}
/** Widget tab group used in [[WidgetStackTabs]] component.
 * @internal
 */
export declare class WidgetStackTabGroup extends React.PureComponent<WidgetStackTabGroupProps> {
    private _firstTab;
    render(): React.ReactNode;
    private getTabHandleMode;
    private _handleTabDragStart;
    private _handleTabClick;
}
/** Properties for the [[WidgetStackTab]] component.
 * @internal
 */
export interface WidgetStackTabProps {
    horizontalAnchor: HorizontalAnchor;
    iconSpec?: string | ConditionalStringValue | React.ReactNode;
    index: number;
    badgeType?: BadgeType;
    isCollapsed: boolean;
    isProtruding: boolean;
    lastPosition: PointProps | undefined;
    mode: TabMode;
    onClick: (index: number) => void;
    onDrag: (dragged: PointProps) => void;
    onDragEnd: () => void;
    onDragStart: (index: number, initialPosition: PointProps) => void;
    tabRef?: React.Ref<Tab>;
    title: string;
    verticalAnchor: VerticalAnchor;
}
/** Tab used in [[WidgetStackTabGroup]] component.
 * @internal
 */
export declare class WidgetStackTab extends React.PureComponent<WidgetStackTabProps> {
    render(): React.ReactNode;
    private _handleDragStart;
    private _handleClick;
}
//# sourceMappingURL=WidgetStack.d.ts.map