import { WidgetId, WidgetsPanelColumnLayout } from '../../../domains/dashboarding/dashboard-model';
import { WidgetPanelLayoutManager } from '../../../domains/dashboarding/hooks/use-widgets-layout';
import { WidgetProps } from '../../../domains/widgets/components/widget/types';
import { TabberButtonsWidgetProps } from '../../../props';
/**
 * @internal
 */
export type UseTabber = ({ widgets, config, }: {
    widgets: WidgetProps[];
    config?: TabbersConfig | undefined;
}) => {
    layoutManager: WidgetPanelLayoutManager;
    widgets: WidgetProps[];
};
/**
 * Configuration for a single tab in a tabber widget.
 */
export type TabberTabConfig = {
    /**
     * Widget IDs from the dashboard to display in the tab.
     */
    displayWidgetIds: string[];
};
/**
 * Configuration for a tabber widget.
 */
export type TabberConfig = {
    /**
     * Tabs configuration for the tabber widget.
     */
    tabs: TabberTabConfig[];
};
/**
 * Configuration for tabbers in a dashboard.
 * It includes separate configuration for each tabber.
 */
export type TabbersConfig = Record<WidgetId, TabberConfig>;
export declare const isTabberButtonsWidget: (widget: WidgetProps) => widget is TabberButtonsWidgetProps;
export declare const modifyLayout: (tabbersOptions: TabbersConfig, tabberState: Record<string, number>) => (layout: WidgetsPanelColumnLayout) => WidgetsPanelColumnLayout;
/**
 * Hook that modifies widget properties so it became a tabber widget.
 * Incapsulates logic for updating layout via navigating tabs
 * @param widgets
 * @param tabbersConfigs
 * @internal
 */
export declare const useTabber: UseTabber;
