import { Dispatch, MouseEventHandler, SetStateAction } from 'react';
import { Arc, Pie, PieArcDatum } from 'd3';
import { RangeLabel } from './constants';
export interface WheelDataRaw {
    id: string;
    scorePositive?: number;
    scoreNegative?: number;
}
export interface WheelData {
    id: string;
    scorePositive?: number;
    scoreNegative?: number;
    label: string;
    icon: string;
}
export interface WheelSegmentData {
    id?: string;
    score?: number;
    label?: string;
    width?: number;
    color?: string;
}
export interface WheelProps {
    data: WheelDataRaw[];
    handleSegmentClick?: (e: MouseEventHandler<HTMLElement>, segmentData: WheelSegmentData) => void;
    handleCenterClick?: (e: MouseEventHandler<HTMLElement>, segmentData: WheelSegmentData) => void;
    selectSegments?: string[];
}
export interface WheelPie {
    width?: number;
    icon: string;
}
export interface WheelDataTransformed extends WheelPie {
    id?: string;
    weight?: number;
    score?: number;
    color?: string;
    label?: string;
}
export type ClassNameType = string;
export type RadiusType = number;
export type ArcType = Arc<unknown, PieArcDatum<WheelPie>>;
export type PieTypeWheel = Pie<unknown, WheelPie>;
export type PieTypeTransformed = Pie<unknown, WheelDataTransformed>;
export type OnClickType = (e: MouseEventHandler<HTMLElement>, segmentData: WheelSegmentData) => void;
export type SetSelectedType = Dispatch<SetStateAction<string | undefined>>;
export type SegmentType = {
    data: WheelSegmentData;
};
export interface WheelCirclesProps {
    className: ClassNameType;
    radius: RadiusType;
    strokeColor: string;
    strokeWidth: number;
    fill: string;
    onClick?: OnClickType;
    setSelected?: SetSelectedType;
    transform?: string;
    isCenter?: boolean;
    selectSegments?: string[];
}
export interface WheelIconsProps {
    className: ClassNameType;
    pie: PieTypeWheel;
    data: WheelDataTransformed[];
    imageSize: number;
    offsetAngle: number;
    radius: RadiusType;
    arc: ArcType;
    handleSegmentClick: OnClickType;
    setSelected: SetSelectedType;
    transform?: string;
}
export interface WheelPathsProps {
    className: ClassNameType;
    pie: PieTypeTransformed;
    data: WheelDataTransformed[];
    fill: string;
    stroke: string;
    arc: ArcType;
    selectSegments?: string[];
    isImages?: boolean;
    transform?: string;
    hoverSelected?: string;
}
export interface WheelRangeLabelsProps {
    className: ClassNameType;
    data: RangeLabel[];
    fill: string;
    transform?: string;
}
export interface WheelSegmentLabelsProps {
    className: ClassNameType;
    pie: PieTypeTransformed;
    data: WheelDataTransformed[];
    segmentValuesArc: Arc<unknown, PieArcDatum<WheelDataTransformed>>;
    selectSegments: string[];
    transform?: string;
}
export interface WheelSegmentsProps {
    className: ClassNameType;
    pie: PieTypeWheel;
    data: WheelDataTransformed[];
    onClick: OnClickType;
    setSelected: SetSelectedType;
    arc: ArcType;
    selectSegments: string[];
    onMouseOver?: (data: WheelSegmentData | null) => void;
    hoverSelected?: WheelSegmentData | null;
    transform?: string;
    overlay?: boolean;
}
export declare enum SDG {
    Sdg01 = "SDG-01",
    Sdg02 = "SDG-02",
    Sdg03 = "SDG-03",
    Sdg04 = "SDG-04",
    Sdg05 = "SDG-05",
    Sdg06 = "SDG-06",
    Sdg07 = "SDG-07",
    Sdg08 = "SDG-08",
    Sdg09 = "SDG-09",
    Sdg10 = "SDG-10",
    Sdg11 = "SDG-11",
    Sdg12 = "SDG-12",
    Sdg13 = "SDG-13",
    Sdg14 = "SDG-14",
    Sdg15 = "SDG-15",
    Sdg16 = "SDG-16",
    Sdg17 = "SDG-17"
}
