import { ChartSubtype } from '../../../../domains/visualizations/core/chart-options-processor/subtype-to-design-options.js';
import { WidgetModel } from '../../../../domains/widgets/widget-model';
import { WidgetTypeInternal } from '../../../../domains/widgets/widget-model/types.js';
import { ChartProps, PivotTableProps } from '../../../../props';
import { ChartType, CustomWidgetEventProps, RenderToolbarHandler } from '../../../../types.js';
import { ChartWidgetProps } from '../chart-widget/types';
import { CommonWidgetProps } from '../common-widget/types';
import { CustomWidgetProps } from '../custom-widget/types';
import { PivotTableWidgetProps } from '../pivot-table-widget/types';
import { TextWidgetProps } from '../text-widget/types';
import { WidgetProps, WidgetType, WithCommonWidgetProps } from '../widget/types';
import { CsdkPluginWidgetType, FusionPluginWidgetType, FusionWidgetType, Panel, PanelItem, TextWidgetDtoStyle, WidgetStyle, WidgetSubtype } from './types.js';
export { mergeFilters, getFilterRelationsFromJaql, convertFilterRelationsModelToJaql, getFilterCompareId, } from '@sisense/sdk-data';
/**
 * Returns `true` when a panel item's jaql represents a measure — either a base-measure
 * aggregation (`jaql.agg`) or a calculated measure (`jaql.formula`). Mirrors Fusion's
 * `isMeasure` dimension helper so CSDK code can evaluate the same "is measure?" checks
 * Fusion's widget manifests rely on.
 *
 * @internal
 */
export declare function isMeasurePanelItem(item: PanelItem): boolean;
/**
 * Returns the corresponding chart type for a given widget type
 *
 * @internal
 */
export declare function getChartType(fusionWidgetType: FusionWidgetType): ChartType | undefined;
export declare function getFusionWidgetTypeFromChartType(chartType: ChartType): FusionWidgetType;
export declare function getFusionWidgetType(widgetType: WidgetType, chartType?: ChartType, customWidgetType?: string): FusionWidgetType;
export declare function getWidgetType(fusionWidgetType: FusionWidgetType): WidgetType;
export declare function getChartSubtype(widgetSubtype: WidgetSubtype): ChartSubtype | undefined;
export declare function isSupportedWidgetType(fusionWidgetType: string): fusionWidgetType is FusionWidgetType;
/**
 * Check if the given fusion widget type is a supported plugin widget (in DTO format).
 * @param fusionWidgetType - The fusion widget type from DTO
 * @returns True if it's a supported plugin widget
 * @internal
 */
export declare function isSupportedPluginFusionWidget(fusionWidgetType: string): boolean;
/**
 * Check if the given CSDK widget type is a supported plugin widget (in CSDK format).
 * @param csdkWidgetType - The CSDK custom widget type
 * @returns True if it's a supported plugin widget
 * @internal
 */
export declare function isSupportedPluginCsdkWidget(csdkWidgetType: string): boolean;
/**
 * Map a Fusion plugin widget type (DTO) to CSDK plugin widget type.
 * @param fusionType - The Fusion plugin widget type from DTO
 * @returns The corresponding CSDK plugin widget type
 * @internal
 */
export declare function fusionPluginWidgetTypeToCsdk(fusionType: FusionPluginWidgetType): CsdkPluginWidgetType;
/**
 * Map a CSDK plugin widget type to Fusion plugin widget type (DTO).
 * @param csdkType - The CSDK plugin widget type
 * @returns The corresponding Fusion plugin widget type for DTO
 * @internal
 */
export declare function csdkPluginWidgetTypeToFusion(csdkType: CsdkPluginWidgetType): FusionPluginWidgetType;
/**
 * Widget types that support Jump To Dashboard (JTD) functionality
 *
 * Supported types:
 * - Pie chart with no categories, Pie chart
 * - Indicator
 * - Text widget
 * - Column chart, Bar chart, Line chart, Area chart
 * - Pivot
 * - Scatter chart, Polar chart
 * - Blox
 *
 * @internal
 */
export declare const JTD_SUPPORTED_WIDGET_TYPES: FusionWidgetType[];
/**
 * Check if the widget type supports Jump To Dashboard (JTD)
 *
 * @param fusionWidgetType - The fusion widget type
 * @returns True if the widget type supports JTD, false otherwise
 * @internal
 */
export declare function widgetTypeSupportsJtd(fusionWidgetType: FusionWidgetType): boolean;
export declare function isTableFusionWidget(fusionWidgetType: FusionWidgetType): boolean;
export declare function isTableWidgetModel(widgetModel: WidgetModel): boolean;
export declare function isPivotTableFusionWidget(fusionWidgetType: FusionWidgetType): boolean;
export declare function isPivotWidget(widgetType: WidgetType): boolean;
export declare function isTextFusionWidget(fusionWidgetType: FusionWidgetType): boolean;
export declare function isTextWidget(widgetType: WidgetType): boolean;
export declare function isTextWidgetDtoStyle(widgetStyle: WidgetStyle): widgetStyle is TextWidgetDtoStyle;
export declare function isCustomWidgetFusionWidget(fusionWidgetType: FusionWidgetType): boolean;
export declare function isCustomWidget(widgetType: WidgetType): boolean;
export declare function isChartFusionWidget(fusionWidgetType: FusionWidgetType): boolean;
export declare function isChartTypeFusionWidget(fusionWidgetType: FusionWidgetType): boolean;
export declare function isPieChartFusionWidget(fusionWidgetType: FusionWidgetType): boolean;
export declare function isIndicatorFusionWidget(fusionWidgetType: FusionWidgetType): boolean;
export declare function isChartWidget(widgetType: WidgetType): boolean;
/**
 * Type guard for checking if the widget props is for a text widget.
 *
 * @param widgetProps - The widget props to check.
 * @returns whether the widget props is for a text widget
 * @internal
 */
export declare function isTextWidgetProps(widgetProps: CommonWidgetProps): widgetProps is WithCommonWidgetProps<TextWidgetProps, 'text'>;
/**
 * Type guard for checking if the widget props is for a pivot table widget.
 *
 * @param widgetProps - The widget props to check.
 * @returns whether the widget props is for a pivot table widget
 *
 * @sisenseInternal
 */
export declare function isPivotTableWidgetProps(widgetProps: CommonWidgetProps): widgetProps is WithCommonWidgetProps<PivotTableWidgetProps, 'pivot'>;
/**
 * Type guard for checking if the widget props is for a custom widget
 *
 * @param widgetProps - The widget props to check.
 * @returns whether the widget props is for a custom widget
 * @internal
 */
export declare function isCustomWidgetProps(widgetProps: CommonWidgetProps): widgetProps is WithCommonWidgetProps<CustomWidgetProps, 'custom'>;
/**
 * Type guard for checking if the widget props is for a chart widget
 *
 * @param widgetProps - The widget props to check.
 * @returns whether the widget props is for a chart widget
 * @sisenseInternal
 */
export declare function isChartWidgetProps(widgetProps: CommonWidgetProps): widgetProps is WithCommonWidgetProps<ChartWidgetProps, 'chart'>;
export declare function getInternalWidgetType(widgetProps: CommonWidgetProps): WidgetTypeInternal;
/**
 * Registers new "onDataPointClick" handler for the Widget component
 *
 * @internal
 */
export declare function registerDataPointClickHandler(widgetProps: WidgetProps, handler: NonNullable<ChartProps['onDataPointClick'] | PivotTableProps['onDataPointClick'] | CustomWidgetEventProps['onDataPointClick']>): void;
/**
 * Registers new "onDataPointContextMenu" handler for the Widget component
 *
 * @internal
 */
export declare function registerDataPointContextMenuHandler(widgetProps: WidgetProps, handler: NonNullable<ChartProps['onDataPointContextMenu'] | PivotTableProps['onDataPointContextMenu'] | CustomWidgetProps['onDataPointContextMenu']>): void;
/**
 * Registers new "onDataPointsSelected" handler for the Widget component
 *
 * @internal
 */
export declare function registerDataPointsSelectedHandler(widgetProps: WidgetProps, handler: NonNullable<ChartProps['onDataPointsSelected'] | CustomWidgetProps['onDataPointsSelected']>): void;
/**
 * Registers new "renderToolbar" handler for the constructed component
 *
 * @internal
 */
export declare function registerRenderToolbarHandler(widgetProps: WidgetProps, handler: RenderToolbarHandler): void;
export declare function getEnabledPanelItems(panels: Panel[], panelName: string): PanelItem[];
export declare function getRootPanelItem(item: PanelItem): PanelItem;
