/// <reference types="react" />
import type { _ChartTooltipSlotsType as ChartTooltipSlotsType, _ChartTooltipTemplateType as ChartTooltipTemplateType } from '@dynatrace/strato-components-preview/charts';
import type { Connection } from './connection-layer.js';
import type { Location } from './location.js';
/**
 * @internal
 */
export type LayerTooltipData = DotLayerTooltipData | BubbleLayerTooltipData | ConnectionLayerTooltipData | ChoroplethLayerTooltipData;
/**
 * @internal
 */
export type LayerTooltipHandler = DotLayerTooltipHandler | BubbleLayerTooltipHandler | ConnectionLayerTooltipHandler | ChoroplethLayerTooltipHandler;
/**
 * Dot Tooltip data payload for the tooltip handler callback
 * @typeParam T - Object extending Location
 */
export interface DotLayerTooltipData<T extends Location = Location> {
    /** The hovered dot color */
    color: string;
    /** The hovered dot bearing */
    bearing: number;
    /** The hovered dot custom data and location */
    data: T;
}
/**
 * Dot tooltip handler type
 */
export type DotLayerTooltipHandler = (dotData: DotLayerTooltipData) => React.ReactNode | null;
/**
 * Dot tooltip handler type
 * @typeParam T - Object extending Location
 */
export interface DotLayerTooltipHandlerProps {
    /** The DotLayer tooltip handler template */
    children?: DotLayerTooltipHandler | null;
}
/**
 * Bubble Tooltip data payload for the tooltip handler callback
 * @typeParam T - Object extending Location
 */
export interface BubbleLayerTooltipData<T extends Location = Location> {
    /** The hovered bubble color */
    color: string;
    /** The hovered bubble radius */
    radius: number;
    /** The hovered bubble custom data and location */
    data: T;
}
/**
 * Bubble Tooltip Component Props
 */
export type BubbleLayerTooltipHandler = (closestDot: BubbleLayerTooltipData, dotsData: BubbleLayerTooltipData[]) => React.ReactNode | null;
/**
 * Bubble Tooltip Component Props
 * @typeParam T - Object extending Location
 */
export interface BubbleLayerTooltipHandlerProps {
    /** The BubbleLayer tooltip handler template */
    children?: BubbleLayerTooltipHandler | null;
}
/**
 * Connection Tooltip data payload for the tooltip handler callback
 * @typeParam T - Object extending Connection
 */
export interface ConnectionLayerTooltipData<T extends Connection = Connection> {
    /** The hovered connection color */
    color: string;
    /** The hovered connection thickness */
    thickness: number;
    /** The hovered connection custom data and path locations */
    data: T;
}
/**
 * Connection tooltip handler type
 */
export type ConnectionLayerTooltipHandler = (connectionData: ConnectionLayerTooltipData) => React.ReactNode;
/**
 * Connection Tooltip Component Props
 */
export interface ConnectionLayerTooltipHandlerProps {
    /** The ConnectionLayer tooltip handler template */
    children?: ConnectionLayerTooltipHandler | null;
}
/**
 * Choropleth Tooltip data payload for the tooltip handler callback
 * @typeParam T - Object extending a record of string keys and any type of values
 */
export interface ChoroplethLayerTooltipData<T extends Record<string, unknown> = Record<string, unknown>> {
    /** The hovered region color */
    color: string;
    /** The hovered region name */
    name: string;
    /** The hovered region custom data */
    data: T;
}
/**
 * Choropleth tooltip handler type
 */
export type ChoroplethLayerTooltipHandler = (regionData: ChoroplethLayerTooltipData) => React.ReactNode;
/**
 * Choropleth Tooltip Component Props
 */
export interface ChoroplethLayerTooltipHandlerProps {
    /** The ChoroplethLayer tooltip handler template */
    children?: ChoroplethLayerTooltipHandler | null;
}
/** Map Geo Tooltip Props */
export type ChartTooltip = ChartTooltipSlotsType & ChartTooltipTemplateType;
