import { JaqlDataSourceForDto } from '@sisense/sdk-data';
import type { JumpToDashboardConfig, JumpToDashboardConfigForPivot } from '../../../../domains/dashboarding/hooks/jtd/jtd-types.js';
import { ExecutePivotQueryParams, ExecuteQueryParams } from '../../../../domains/query-execution/index.js';
import { ChartWidgetProps } from '../../../../domains/widgets/components/chart-widget/types';
import { CommonWidgetProps } from '../../../../domains/widgets/components/common-widget/types';
import { CustomWidgetProps } from '../../../../domains/widgets/components/custom-widget/types';
import { PivotTableWidgetProps } from '../../../../domains/widgets/components/pivot-table-widget/types';
import { TextWidgetProps } from '../../../../domains/widgets/components/text-widget/types';
import { WidgetDto } from '../../../../domains/widgets/components/widget-by-id/types.js';
import { WidgetProps } from '../../../../domains/widgets/components/widget/types';
import { AppSettings } from '../../../../infra/app/settings/settings.js';
import { ChartProps, PivotTableProps, TableProps } from '../../../../props';
import { CompleteThemeSettings } from '../../../../types.js';
import { WidgetModel } from '../widget-model';
/**
 * Translates a {@link WidgetModel} to the parameters for executing a query for the widget.
 *
 * @example
 * ```tsx
 * const {data, isLoading, isError} = useExecuteQuery(widgetModelTranslator.toExecuteQueryParams(widgetModel));
 * ```
 *
 * Note: this method is not supported for getting pivot query.
 * Use {@link toExecutePivotQueryParams} instead for getting query parameters for the pivot widget.
 */
export declare function toExecuteQueryParams(widgetModel: WidgetModel): ExecuteQueryParams;
/**
 * Translates a {@link WidgetModel} to the parameters for executing a query for the pivot widget.
 *
 * @example
 * ```tsx
 * const {data, isLoading, isError} = useExecutePivotQuery(widgetModelTranslator.toExecutePivotQueryParams(widgetModel));
 * ```
 *
 * Note: this method is supported only for getting pivot query.
 * Use {@link toExecuteQueryParams} instead for getting query parameters for non-pivot widgets.
 */
export declare function toExecutePivotQueryParams(widgetModel: WidgetModel): ExecutePivotQueryParams;
/**
 * Translates a {@link WidgetModel} to the props for rendering a chart.
 *
 * @example
 * ```tsx
 * <Chart {...widgetModelTranslator.toChartProps(widgetModel)} />
 * ```
 *
 * Note: this method is not supported for pivot widgets.
 * Use {@link toPivotTableProps} instead for getting props for the <PivotTable> component.
 */
export declare function toChartProps(widgetModel: WidgetModel): ChartProps;
/**
 * Translates a {@link WidgetModel} to the props for rendering a table.
 *
 * @example
 * ```tsx
 * <Table {...widgetModelTranslator.toTableProps(widgetModel)} />
 * ```
 *
 * Note: this method is not supported for chart and pivot widgets.
 * Use {@link toChartProps} instead for getting props for the <Chart> component.
 * Use {@link toPivotTableProps} instead for getting props for the <PivotTable> component.
 */
export declare function toTableProps(widgetModel: WidgetModel): TableProps;
/**
 * Translates a {@link WidgetModel} to the props for rendering a pivot table.
 *
 * @example
 * ```tsx
 * <PivotTable {...widgetModelTranslator.toPivotTableProps(widgetModel)} />
 * ```
 *
 * Note: this method is not supported for chart or table widgets.
 * Use {@link toChartProps} instead for getting props for the <Chart> component.
 * Use {@link toTableProps} instead for getting props for the <Table> component.
 */
export declare function toPivotTableProps(widgetModel: WidgetModel): PivotTableProps;
/**
 * Translates a {@link WidgetModel} to the props for rendering a chart widget.
 *
 * @example
 * ```tsx
 * <ChartWidget {...widgetModelTranslator.toChartWidgetProps(widgetModel)} />
 * ```
 *
 * Note: this method is not supported for pivot widgets.
 */
export declare function toChartWidgetProps(widgetModel: WidgetModel): ChartWidgetProps;
/**
   * Translates a {@link WidgetModel} to the props for rendering a pivot table widget.
   *
   * @example
   * ```tsx
   * <PivotTableWidget {...widgetModelTranslator.toPivotTableWidgetProps(widgetModel)} />
   * ```

   * Note: this method is not supported for chart or table widgets.
   * Use {@link toChartWidgetProps} instead for getting props for the <ChartWidget> component.
   */
export declare function toPivotTableWidgetProps(widgetModel: WidgetModel): PivotTableWidgetProps;
/**
 * Translates a {@link WidgetModel} to the props for rendering a text widget.
 *
 * @example
 * ```tsx
 * <TextWidget {...widgetModelTranslator.toTextWidgetProps(widgetModel)} />
 * ```
 *
 * Note: this method is not supported for chart or pivot widgets.
 * Use {@link toChartWidgetProps} instead for getting props for the <ChartWidget> component.
 * Use {@link toPivotTableWidgetProps} instead for getting props for the <PivotTableWidget> component.
 */
export declare function toTextWidgetProps(widgetModel: WidgetModel): TextWidgetProps;
/**
 * Translates a {@link WidgetModel} to the props for rendering a custom widget.
 *
 * @internal
 */
export declare function toCustomWidgetProps(widgetModel: WidgetModel): CustomWidgetProps;
/**
 * Translates {@link WidgetModel} to {@link CommonWidgetProps}.
 *
 * @internal
 */
export declare function toCommonWidgetProps(widgetModel: WidgetModel): CommonWidgetProps;
/**
 * Translates {@link WidgetModel} to {@link WidgetProps}.
 *
 * @example
 * ```tsx
 * <Widget {...widgetModelTranslator.toWidgetProps(widgetModel)} />
 * ```
 */
export declare function toWidgetProps(widgetModel: WidgetModel): WidgetProps;
/**
 * Returns Jump to Dashboard configuration for a {@link WidgetModel} that was built from
 * Fusion via {@link fromWidgetDto}.
 *
 * @param widgetModel - The {@link WidgetModel} built from Fusion via {@link fromWidgetDto};
 *
 * @returns `JumpToDashboardConfig`, `JumpToDashboardConfigForPivot`, or `null` when the model is not
 * Fusion-sourced, or the widget has no versioned JTD.
 *
 * @example
 * ```tsx
 * const widgetProps = widgetModelTranslator.toWidgetProps(widgetModel);
 * const jtdConfig = widgetModelTranslator.toJtdConfig(widgetModel);
 * // When jtdConfig is non-null, pass widgetProps and jtdConfig to useJtdWidget; otherwise render the widget with widgetProps alone.
 * ```
 *
 * @sisenseInternal
 * @alpha
 */
export declare function toJtdConfig(widgetModel: WidgetModel): JumpToDashboardConfig | JumpToDashboardConfigForPivot | null;
/**
 * Creates a {@link WidgetModel} from a widget DTO.
 *
 * @param widgetDto - The widget DTO to be converted to a widget model
 * @param themeSettings - The theme settings to be used for the widget model
 * @param appSettings - The application settings to be used for the widget model
 * @returns The widget model
 * @internal
 */
export declare function fromWidgetDto(widgetDto: WidgetDto, themeSettings?: CompleteThemeSettings, appSettings?: AppSettings): WidgetModel;
/**
 * Creates a {@link WidgetModel} from a {@link ChartWidgetProps}.
 *
 * @param chartWidgetProps - The ChartWidgetProps to be converted to a widget model
 * @returns WidgetModel
 * @internal
 */
export declare function fromChartWidgetProps(chartWidgetProps: ChartWidgetProps): WidgetModel;
/**
 * Creates a {@link WidgetModel} from a {@link PivotTableWidgetProps}.
 *
 * @param pivotTableWidgetProps - The PivotTableWidgetProps to be converted to a widget model
 * @returns WidgetModel
 * @internal
 */
export declare function fromPivotTableWidgetProps(pivotTableWidgetProps: PivotTableWidgetProps): WidgetModel;
/**
 * Creates a {@link WidgetModel} from a {@link TextWidgetProps}.
 *
 * @param textWidgetProps - The TextWidgetProps to be converted to a widget model
 * @returns WidgetModel
 * @internal
 */
export declare function fromTextWidgetProps(textWidgetProps: TextWidgetProps): WidgetModel;
/**
 * Creates a {@link WidgetModel} from a {@link CustomWidgetProps}.
 *
 * @param customWidgetProps - The CustomWidgetProps to be converted to a widget model
 * @returns WidgetModel
 * @internal
 */
export declare function fromCustomWidgetProps(customWidgetProps: CustomWidgetProps): WidgetModel;
/**
 * Creates a {@link WidgetModel} from a {@link WidgetProps}.
 *
 * @param widgetProps - The WidgetProps to be converted to a widget model
 * @returns WidgetModel
 * @internal
 */
export declare function fromWidgetProps(widgetProps: WidgetProps): WidgetModel;
/**
 * Translates a {@link WidgetModel} to {@link WidgetDto}.
 *
 * @param widgetModel - The WidgetModel to be converted to a widgetDto
 * @param dataSource - The full datasource details
 * @param themeSettings - The theme settings to be used for the widget design
 * @param appSettings - The application settings to be used for the widget design
 * @returns WidgetDto
 *
 * @sisenseInternal
 */
export declare function toWidgetDto(widgetModel: WidgetModel, dataSource?: JaqlDataSourceForDto, themeSettings?: CompleteThemeSettings, appSettings?: AppSettings): WidgetDto;
