import { type SharedValue } from "react-native-reanimated"; import type { ChartEngineLayout } from "../core/useLiveChartEngine"; import type { ChartPadding } from "../draw/line"; import type { TooltipLayout } from "../hooks/crosshairShared"; import type { CandleGap, CandlePoint, TooltipRenderProps } from "../types"; /** * React Native overlay (NOT Skia) that floats a custom `renderTooltip` element * over the Skia canvas while scrubbing. A sibling of `` — like * {@link AxisLabelOverlay} and `CustomMarkerOverlay` — so the element can be any * RN view (e.g. a glass `BlurView`) and stays crisp at native resolution. * * The element is positioned entirely on the UI thread: a `useAnimatedStyle` * transform tracks `scrubX` + the resolved `tooltipPlacement`, measuring the * element's own size via `onLayout` so it can flip/clamp/center correctly — so * movement stays smooth without JS re-renders, unlike rebuilding the tooltip * from the JS-thread `onScrub`. The consumer binds the {@link TooltipRenderProps} * SharedValues to animated text for the value/date to update on the UI thread. * * `pointerEvents="box-none"` lets the scrub pan gesture pass through the empty * area (and any non-interactive tooltip body) while still allowing an * interactive leaf inside the custom element to be tapped. */ export declare function CustomTooltipOverlay({ renderTooltip, scrubX, scrubValue, scrubTime, scrubActive, scrubCandle, scrubGap, tooltipLayout, engine, padding, placement, margin, crosshairFade, crosshairFadeDistance, lineTop, scrubDotY, }: { renderTooltip: (ctx: TooltipRenderProps) => React.ReactElement | null | undefined; scrubX: SharedValue; scrubValue: SharedValue; scrubTime: SharedValue; scrubActive: SharedValue; /** OHLC candle under the crosshair (candle mode); omitted/`null` in line mode. */ scrubCandle?: SharedValue; /** Explicit line or candle gap under the crosshair; omitted/`null` outside one. */ scrubGap?: SharedValue; tooltipLayout: SharedValue; engine: ChartEngineLayout; padding: ChartPadding; placement: "side" | "top" | "bottom" | "point"; /** Gap (px) between the pill and the plot edge it's pinned to. Default 8. */ margin?: number; /** Fade the tooltip near the live edge. Default true. */ crosshairFade?: boolean; /** Tooltip fade distance near the live edge in px. Default 4. */ crosshairFadeDistance?: number; /** When `placement` is `"top"`, the overlay publishes the label's bottom edge * (canvas Y) here so {@link CrosshairOverlay} can stop the crosshair line at * the label instead of running through it; -1 when not top-pinned/active. */ lineTop?: SharedValue; /** Scrub intersection Y in canvas px (the value the dot marks) — the anchor * for `"point"` placement. Omitted / -1 falls back to a top pin. */ scrubDotY?: SharedValue; }): import("react").JSX.Element | null; //# sourceMappingURL=CustomTooltipOverlay.d.ts.map