import { type Point2D, type Vec2 } from '../../math'; import type { ScaleType } from '../core/types'; export type NumericArray = ArrayLike; export interface DensePointSeries> { id?: string | number; label?: string; x: NumericArray; y: NumericArray; metadata?: Metadata[] | Metadata; point_ids?: ArrayLike; size_values?: ArrayLike; color?: string; } export interface DenseInternalPoint> { x: number; y: number; series_idx: number; point_idx: number; metadata?: Metadata; point_id?: string | number; size_value?: number | null; cx: number; cy: number; } export interface DensityBinResult { counts: Uint32Array; first_point_idxs: Int32Array; first_series_idxs: Int32Array; max_count: number; visible_count: number; x_bins: number; y_bins: number; } export interface DensityBin { x_bin: number; y_bin: number; count: number; x_range: Vec2; y_range: Vec2; } export interface PickNearestOptions { x_range: Vec2; y_range: Vec2; x_scale: (value: number) => number; y_scale: (value: number) => number; radius_px?: number; } export interface PickIndex> { cells: Map[]>; cell_size: number; radius_px: number; } export interface PlotRect { x: number; y: number; width: number; height: number; } export interface BinTransform { forward: (value: number) => number; inverse: (value: number) => number; } export type BinTransforms = { x?: BinTransform; y?: BinTransform; }; export declare function scale_bin_transform(scale_type?: ScaleType): BinTransform; export declare const get_metadata_at: (metadata: DensePointSeries[`metadata`], point_idx: number) => Metadata | undefined; export declare const range_bounds: (range: Vec2) => Vec2; export declare function series_extents(series: readonly DensePointSeries[]): { x: Vec2; y: Vec2; }; export declare function bin_points(series: readonly DensePointSeries[], x_range: Vec2, y_range: Vec2, x_bins: number, y_bins: number, transforms?: BinTransforms): DensityBinResult; export declare function density_bin_at_point(density: DensityBinResult, pointer: Point2D, plot_rect: PlotRect, x_range: Vec2, y_range: Vec2, transforms?: BinTransforms): DensityBin | null; export declare const should_render_points: (visible_count: number, plot_area_px: number, max_points: number, max_points_per_px: number) => boolean; export declare function build_pick_index(series: readonly DensePointSeries[], options: PickNearestOptions): PickIndex; export declare function pick_from_index(index: PickIndex, pointer: Point2D): DenseInternalPoint | null; export declare function first_point_in_bin(series: readonly DensePointSeries[], density: DensityBinResult, bin: Pick, x_scale: (value: number) => number, y_scale: (value: number) => number): DenseInternalPoint | null;