import type { ScaleType } from './types'; type AxisSlot = `y1` | `y2`; interface AxisAssignableSeries { axis_group?: string; label?: string; unit?: string; visible?: boolean; y_axis?: AxisSlot; } export interface AxisValueSeries extends AxisAssignableSeries { y: readonly number[]; } interface AxisGroup { key: string; priority: number; series: readonly Series[]; series_indices: readonly number[]; } interface AssignedAxisGroup extends AxisGroup { axis: AxisSlot; } interface AxisGroupingOptions { is_visible?: (series: Series, series_idx: number) => boolean; priority?: (group_key: string, series: readonly Series[]) => number; } export interface AxisAssignmentOptions extends AxisGroupingOptions { max_axes?: 1 | 2; } interface AxisAssignmentBase { assignments: readonly (AxisSlot | undefined)[]; groups: readonly AssignedAxisGroup[]; } interface CompleteAxisAssignment extends AxisAssignmentBase { status: `assigned`; overflow_groups: readonly []; } export interface OverflowAxisAssignment extends AxisAssignmentBase { status: `overflow`; error: AxisAssignmentOverflowError; overflow_groups: readonly AxisGroup[]; } type AxisAssignmentResult = CompleteAxisAssignment | OverflowAxisAssignment; interface AxisLabelOptions { is_visible?: (series: Series, series_idx: number) => boolean; axis?: readonly (AxisSlot | undefined)[] | AxisAccessor; fallback_label?: string; } interface AxisScaleTypeOptions { is_visible?: (series: Series, series_idx: number) => boolean; axis?: readonly (AxisSlot | undefined)[] | AxisAccessor; can_use_log_scale: (series: Series) => boolean; min_log_decades?: number; } type AxisAccessor = (series: Series, series_idx: number) => AxisSlot | undefined; export declare class AxisAssignmentOverflowError extends Error { readonly group_keys: readonly string[]; readonly max_axes: number; readonly reserved_axes: readonly AxisSlot[]; constructor(group_keys: readonly string[], max_axes: number, reserved_axes?: readonly AxisSlot[]); } export declare const axis_group_key: (series: AxisAssignableSeries) => string; export declare function group_axis_series(series: readonly Series[], options?: AxisGroupingOptions): AxisGroup[]; export declare function assign_axes(series: readonly Series[], options?: AxisAssignmentOptions): AxisAssignmentResult; export declare function axis_labels(series: readonly Series[], options?: AxisLabelOptions): Record; export declare function axis_scale_types(series: readonly Series[], options: AxisScaleTypeOptions): Record; export {};