import { STREAMING_PALETTE } from "../charts/shared/colorUtils";
import { schemeCategory10 } from "../charts/shared/colorPalettes";
/**
 * Shared palette resolution for the network and ordinal customLayout
 * escape hatches. XY's customLayout uses `PipelineStore.resolveGroupColor`
 * (richer cascade with CategoryColorProvider integration) so it doesn't
 * call this helper.
 *
 * Precedence:
 *   1. Explicit `colorScheme` array — used as-is.
 *   2. Named scheme string (e.g. "tableau10") — looked up in
 *      `COLOR_SCHEMES`. Unknown names fall through.
 *   3. Theme categorical (when non-empty).
 *   4. The provided fallback palette.
 *
 * @param colorScheme   `colorScheme` from the chart's pipeline config
 * @param themeCategorical  `themeCategorical` from theme resolution
 * @param fallback      Palette to use when nothing else matches.
 *                      Network passes `schemeCategory10`; ordinal passes
 *                      `STREAMING_PALETTE`. Caller's choice.
 */
export declare function resolveCustomLayoutPalette(colorScheme: string | string[] | undefined, themeCategorical: string[] | undefined, fallback: readonly string[]): readonly string[];
/**
 * Build a stable hash → palette index resolver. Used by the network and
 * ordinal customLayout contexts so the same key always returns the same
 * color for the lifetime of the closure.
 */
export declare function buildResolveColor(palette: readonly string[]): (key: string) => string;
export { schemeCategory10, STREAMING_PALETTE };
