import type { Datum } from "./datumTypes";
/**
 * Predefined color schemes
 */
export declare const COLOR_SCHEMES: {
    category10: readonly string[];
    tableau10: readonly string[];
    set3: readonly string[];
    blues: (t: number) => string;
    reds: (t: number) => string;
    greens: (t: number) => string;
    oranges: (t: number) => string;
    purples: (t: number) => string;
    viridis: (t: number) => string;
    plasma: (t: number) => string;
};
/**
 * Default colors for charts
 */
export declare const DEFAULT_COLORS: readonly string[];
/**
 * Pastel palette for depth-based hierarchy coloring (Treemap, CirclePack, TreeDiagram).
 * Index corresponds to hierarchy depth, wraps via modulo.
 */
/**
 * Default streaming palette — used by PipelineStore, OrdinalPipelineStore,
 * and useStreamingLegend for consistent colors when no colorScheme is specified.
 */
export declare const STREAMING_PALETTE: string[];
export declare const DEPTH_PALETTE_COLORS: string[];
/**
 * Gets a color for a data point based on the colorBy configuration
 *
 * @param dataPoint - The data point
 * @param colorBy - Field name or function to determine color
 * @param colorScale - Optional custom color scale
 * @returns Color string
 *
 * @example
 * ```ts
 * // Using a field name
 * getColor({category: 'A', value: 10}, 'category', colorScale)
 *
 * // Using a function
 * getColor({value: 10}, d => d.value > 5 ? 'red' : 'blue')
 * ```
 */
export declare function getColor(dataPoint: Datum, colorBy: string | ((d: Datum) => string), colorScale?: (v: string) => string): string;
/**
 * Creates a color scale function from data
 *
 * @param data - Array of data points
 * @param colorBy - Field name to use for coloring
 * @param scheme - Color scheme name or custom palette
 * @returns Color scale function
 *
 * @example
 * ```ts
 * const colorScale = createColorScale(data, 'category')
 * const color = colorScale('A') // Returns color for category 'A'
 * ```
 */
export declare function createColorScale(data: Array<Datum>, colorBy: string, scheme?: string | string[]): (v: string) => string;
/**
 * Generates a size function based on sizeBy configuration.
 *
 * Output is clamped to `sizeRange`. A pushed point whose `sizeBy`
 * value falls outside the currently-known domain (which can happen
 * in push mode before the running min/max catches up) renders at
 * the boundary radius rather than producing an arbitrarily large
 * (or negative) pixel value.
 *
 * @param dataPoint - The data point
 * @param sizeBy - Field name or function to determine size
 * @param sizeRange - Min and max size range [min, max]
 * @param domain - Optional domain for scaling [minValue, maxValue]
 * @returns Size value, clamped to `sizeRange` when a domain is given
 */
export declare function getSize(dataPoint: Datum, sizeBy: string | ((d: Datum) => number), sizeRange?: [number, number], domain?: [number, number]): number;
