import { type ReactNode } from "react"; import { type ViewProps } from "react-native"; import { type StyleProp, type ViewStyle, type LayoutStyle } from "../../style/index.js"; export interface FlagRow { /** Series/datum name, printed before the value ("High 24°"); omitted for single-value flags. */ label?: string; /** Series color. The pill names a series by its label, so the color is not drawn. */ color?: string; /** The formatted value. */ value: string; } /** * The chart value flag's surface: the inverse pill (the Tooltip bubble's reading, the * scheme's `foreground` as the fill under `background` ink) at the `chartFlag` corner. * Under glass it takes the dense layer at the inverse fill's own tint * (`inverseDenseTint`), so its text keeps its contrast. */ export declare function ChartInspectionSurface({ children, radius, style }: { children: ReactNode; radius?: number; style?: StyleProp; }): import("react").JSX.Element; /** The ink every line of the flag is set in: the page colour on the inverse fill. */ export declare function flagInk(tokens: { background: string; }): string; /** The pill's lines: the title (when there is one) over one line per row, each its label then its value. */ export declare function flagLines(title: string | undefined, rows: FlagRow[]): string[]; export interface ChartValueFlagProps { /** Heading (usually the category or point label). */ title?: string; rows: FlagRow[]; /** The datum's x position in plot coordinates. */ x: number; /** Plot width, for clamping the flag inside the plot. */ plotW: number; } export declare function ChartValueFlag({ title, rows, x, plotW }: ChartValueFlagProps): import("react").JSX.Element; /** * Mirror a selection into assistive tech (RN and react-native-web both * implement announceForAccessibility; RNW backs it with a live region). */ export declare function announceSelection(text: string): void; /** * The press position relative to the pressed element, or null when the event * carries none (never let a NaN reach the selection math). Native provides * `locationX`; react-native-web's responder events compute it lazily, but a * Pressable press driven by a mouse click can surface a raw MouseEvent, where * only `offsetX` exists. offsetX is TARGET-relative, so hit-layer Pressables * must be empty (nothing inside to become the target). */ export declare function pressPoint(e: { nativeEvent: unknown; }): { x: number; y: number; } | null; /** Opacity applied to marks OUTSIDE the current selection: the hand-off's `.55` on the section cards' unselected marks. */ export declare const DIM_OPACITY = 0.55; export interface ScrubSurfaceProps { /** Map a plot-local point to a selection index (null = nothing there). */ indexAt: (x: number, y: number) => number | null; /** The currently selected index (for tap-on-selected-clears). */ selected: number | null; /** SET the selection (null clears). */ onScrub: (index: number | null) => void; /** Caller-owned pointer feedback shares the scrub host without selecting a datum. */ hoverProps?: Pick; style?: LayoutStyle; } export interface ScrubGesture { index: number | null; wasSelected: boolean; moved: boolean; } /** * The pure scrub state machine (exported for tests; the DOM test harness * cannot drive real responder events at zero layout width). Returns the next * gesture bookkeeping plus the selection to apply (`undefined` = no change, * `null` = clear). */ export declare function scrubEvent(phase: "grant" | "move" | "release", index: number | null, gesture: ScrubGesture, selected: number | null): { gesture: ScrubGesture; select: number | null | undefined; }; export declare function ScrubSurface({ indexAt, selected, onScrub, hoverProps, style }: ScrubSurfaceProps): import("react").JSX.Element; //# sourceMappingURL=chart-inspect.d.ts.map