import React, { SVGProps } from 'react';
import { GraphicalItem } from '../chart/generateCategoricalChart';
/**
* This is an abstraction for rendering a user defined prop for a customized shape in several forms.
*
* is the root and will handle taking in:
* - an object of svg properties
* - a boolean
* - a render prop(inline function that returns jsx)
* - a react element
*
* is a subcomponent of and used to match a component
* to the value of props.shapeType that is passed to the root.
*
*/
type ShapeType = 'trapezoid' | 'rectangle' | 'sector' | 'symbols';
export type ShapeProps = {
shapeType: ShapeType;
option: OptionType;
isActive: boolean;
activeClassName?: string;
propTransformer?: (option: OptionType, props: unknown) => ShapePropsType;
} & ExtraProps;
export declare function getPropsFromShapeOption(option: unknown): SVGProps;
export declare function Shape({ option, shapeType, propTransformer, activeClassName, isActive, ...props }: ShapeProps): React.JSX.Element;
type FunnelItem = {
x: number;
y: number;
labelViewBox: {
x: number;
y: number;
};
tooltipPayload: Array<{
payload: {
payload: ShapeData;
};
}>;
};
type PieItem = {
startAngle: number;
endAngle: number;
tooltipPayload: Array<{
payload: {
payload: ShapeData;
};
}>;
};
type ScatterItem = {
x: number;
y: number;
z: number;
payload?: ShapeData;
};
type ShapeData = FunnelItem | PieItem | ScatterItem;
type GetActiveShapeIndexForTooltip = {
activeTooltipItem: ShapeData;
graphicalItem: GraphicalItem;
itemData: unknown[];
};
export declare function isFunnel(graphicalItem: GraphicalItem, _item: unknown): _item is FunnelItem;
export declare function isPie(graphicalItem: GraphicalItem, _item: unknown): _item is PieItem;
export declare function isScatter(graphicalItem: GraphicalItem, _item: unknown): _item is ScatterItem;
export declare function compareFunnel(shapeData: FunnelItem, activeTooltipItem: FunnelItem): boolean;
export declare function comparePie(shapeData: PieItem, activeTooltipItem: PieItem): boolean;
export declare function compareScatter(shapeData: ScatterItem, activeTooltipItem: ScatterItem): boolean;
/**
*
* @param {GetActiveShapeIndexForTooltip} arg an object of incoming attributes from Tooltip
* @returns {number}
*
* To handle possible duplicates in the data set,
* match both the data value of the active item to a data value on a graph item,
* and match the mouse coordinates of the active item to the coordinates of in a particular components shape data.
* This assumes equal lengths of shape objects to data items.
*/
export declare function getActiveShapeIndexForTooltip({ activeTooltipItem, graphicalItem, itemData, }: GetActiveShapeIndexForTooltip): number;
export {};