import React from 'react';
import { VizzlyComponents } from '../../types';
import { Component as ComponentType } from '../../../../shared-logic/src/Component/types';
import { DataSet as DataSetType } from '../../../../shared-logic/src/DataSet/types';
import { AdditionalFilter } from '../../../../shared-logic/src/AdditionalFilter/types';
import { MapPosition } from '../../../../charts/src/MercatorMap';
import { DashboardBehaviour, IdPrefix } from '../../contexts/DashboardBehaviour/types';
interface BaseChartProps<AttributesType> {
    runQueriesCallback: VizzlyComponents.runQueriesCallbackInternal;
    component: ComponentType<AttributesType>;
    setLocalFilters: (localFilters: ComponentType['localFilters']) => void;
    globalFilters: AdditionalFilter[];
    dataSet: DataSetType;
    id: string;
    dashboardBehaviour: DashboardBehaviour;
    library?: boolean;
    editor?: boolean;
    idPrefix: IdPrefix;
}
interface ChartPropsWithPartialAttributes<T> extends BaseChartProps<T> {
    setPartialAttributes: (attributes: Partial<T>) => void;
}
interface ChartPropsWithAttributesUpdate<T> extends BaseChartProps<T> {
    updateComponentAttributes: (attributes: T) => void;
}
export declare type ScatterChartProps = ChartPropsWithPartialAttributes<ComponentType.ScatterChartAttributes> & {
    sm?: boolean;
};
export declare type BubbleChartProps = ChartPropsWithPartialAttributes<ComponentType.BubbleChartAttributes> & {
    sm?: boolean;
};
export declare type BubbleChartV2Props = ChartPropsWithPartialAttributes<ComponentType.BubbleChartV2Attributes> & ChartPropsWithAttributesUpdate<ComponentType.BubbleChartV2Attributes>;
export declare type ScatterChartV2Props = ChartPropsWithPartialAttributes<ComponentType.ScatterChartV2Attributes> & ChartPropsWithAttributesUpdate<ComponentType.ScatterChartV2Attributes>;
export declare type BarChartProps = ChartPropsWithPartialAttributes<ComponentType.BarChartAttributes> & ChartPropsWithAttributesUpdate<ComponentType.BarChartAttributes | ComponentType.HorizontalBarChartAttributes> & {
    sm?: boolean;
    onViewClick?: (data: ComponentType.ChartOnViewClick, query: ComponentType.OnViewClickQuery) => void;
    editor?: boolean;
};
export declare type AreaChartProps = ChartPropsWithPartialAttributes<ComponentType.AreaChartAttributes> & ChartPropsWithAttributesUpdate<ComponentType.AreaChartAttributes> & {
    sm?: boolean;
};
export declare type LineChartProps = ChartPropsWithPartialAttributes<ComponentType.LineChartAttributes> & ChartPropsWithAttributesUpdate<ComponentType.LineChartAttributes> & {
    sm?: boolean;
};
export declare type LineChartV2Props = ChartPropsWithPartialAttributes<ComponentType.LineChartV2Attributes> & ChartPropsWithAttributesUpdate<ComponentType.LineChartV2Attributes>;
export declare type AreaChartV2Props = ChartPropsWithPartialAttributes<ComponentType.AreaChartV2Attributes> & ChartPropsWithAttributesUpdate<ComponentType.AreaChartV2Attributes>;
export declare type BarChartV2Props = ChartPropsWithPartialAttributes<ComponentType.BarChartV2Attributes> & ChartPropsWithAttributesUpdate<ComponentType.BarChartV2Attributes>;
export declare type RadarChartProps = ChartPropsWithPartialAttributes<ComponentType.RadarChartAttributes> & ChartPropsWithAttributesUpdate<ComponentType.RadarChartAttributes>;
export declare type PieChartProps = ChartPropsWithPartialAttributes<ComponentType.PieChartAttributes> & ChartPropsWithAttributesUpdate<ComponentType.PieChartAttributes> & {
    editor?: boolean;
};
export declare type SunburstChartProps = ChartPropsWithPartialAttributes<ComponentType.SunburstChartAttributes> & {
    editor?: boolean;
};
export declare type SingleStatProps = ChartPropsWithPartialAttributes<ComponentType.SingleStatAttributes> & ChartPropsWithAttributesUpdate<ComponentType.SingleStatAttributes>;
export declare type ProgressProps = ChartPropsWithPartialAttributes<ComponentType.ProgressAttributes> & {
    height?: number;
};
export declare type HorizontalBarChartV2Props = ChartPropsWithPartialAttributes<ComponentType.HorizontalBarChartV2Attributes> & ChartPropsWithAttributesUpdate<ComponentType.HorizontalBarChartV2Attributes>;
export declare type DataTableProps = ChartPropsWithPartialAttributes<ComponentType.DataTableAttributes> & ChartPropsWithAttributesUpdate<ComponentType.DataTableAttributes> & {
    displayColumns?: string[];
    onViewClick?: (data: ComponentType.ChartOnViewClick, query?: ComponentType.OnViewClickQuery) => void;
    renderTableCell?: (data: ComponentType.RenderTableCell) => React.ReactNode | string | undefined;
};
export declare type ComboChartProps = ChartPropsWithPartialAttributes<ComponentType.ComboChartAttributes> & {
    sm?: boolean;
};
export declare type ComboChartV2Props = ChartPropsWithPartialAttributes<ComponentType.ComboChartV2Attributes> & {
    sm?: boolean;
};
export declare type MercatorMapProps = BaseChartProps<ComponentType.MercatorMapAttributes> & {
    onPositionChange: (newPosition: MapPosition) => void;
};
export declare type FunnelChartProps = ChartPropsWithPartialAttributes<ComponentType.FunnelChartAttributes> & ChartPropsWithAttributesUpdate<ComponentType.FunnelChartAttributes> & {
    sm?: boolean;
    onViewClick?: (data: ComponentType.ChartOnViewClick) => void;
};
export declare type RichTextProps = ChartPropsWithPartialAttributes<ComponentType.RichTextAttributes> & ChartPropsWithAttributesUpdate<ComponentType.RichTextAttributes> & {
    editor?: boolean;
};
export declare type WaterfallChartProps = ChartPropsWithPartialAttributes<ComponentType.WaterfallChartAttributes> & ChartPropsWithAttributesUpdate<ComponentType.WaterfallChartAttributes>;
export {};
