import * as React from 'react';
import PropTypes from 'prop-types';
import { TooltipCommonProps } from '../common';
import { FunnelBadgeCommonProps } from './FunnelBadge';

export interface FunnelChartItem {
  value?: number;
  label: string;
  displayValue?: string;
}

type percentageDifferenceCbData = {
  currentIndex: number;
  difference: string;
  differenceValue: number;
};

export interface FunnelChartProps {
  dataHook?: string;
  className?: string;
  data: FunnelChartItem[];
  fullHeight?: boolean;
  hideDifferenceBadge?: boolean;
  differenceBadgeSkin?: 'standard' | 'dark';
  differenceBadgeProps?: ({
    currentIndex,
    difference,
    differenceValue,
  }: percentageDifferenceCbData) => FunnelBadgeCommonProps;
  differenceStepSkin?: ({
    currentIndex,
    difference,
    differenceValue,
  }: percentageDifferenceCbData) => 'standard' | 'success';
  differenceBadgeTooltipContent?: ({
    currentIndex,
    difference,
    differenceValue,
  }: percentageDifferenceCbData) => React.ReactNode;
  differenceBadgeTooltipProps?: ({
    currentIndex,
    difference,
    differenceValue,
  }: percentageDifferenceCbData) => TooltipCommonProps;
  onDifferenceBadgeTooltipShow?: ({
    currentIndex,
    difference,
    differenceValue,
  }: percentageDifferenceCbData) => void;
}

export default class FunnelChart extends React.PureComponent<FunnelChartProps> {}
