import type { ColorOption } from '../types/colors.js';
/**
* Pure runtime helpers for color identity and id validation. No Vue/Nuxt
* deps — safe to import from any layer (runtime components, editor
* providers, agent tools, tests).
*
* Id space:
* - Flat color: `` (no dot)
* - Ramped color: `.` (shade-qualified)
*
* The bare `` form for a ramped color is NOT a valid color id anywhere
* in the system. Everything that emits ids — the editor's `ColorDropdown`,
* the chart helpers (`getColorIdAtIndex`), the agent's `chartColorEnum` —
* uses the canonical shade-qualified form.
*
* Hex resolution at runtime goes through
* `useBlokkliRuntimeConfig().resolveColorHex(id)`, which reads the merged
* view directly from `app.config.blokkli.colorOptions`. No merge function
* lives here — Nuxt's app.config layer already handles override merging.
*/
export declare const FALLBACK_HEX = "#888888";
export declare function parseColorId(id: string): {
baseId: string;
shadeId: string | undefined;
};
/**
* Canonical id for a color option:
* - Flat color: the bare id.
* - Ramped color: `.`. Falls back to the first declared
* shade if none is marked `isMain`.
*/
export declare function canonicalColorId(option: ColorOption): string;
export declare function findColorOption(id: string, options: ColorOption[]): ColorOption | undefined;
/**
* Strict id validity: bare for flat colors, `.` for ramped
* colors with the shade actually declared. Bare ids for ramped colors and
* shade-qualified ids for flat colors both return false.
*/
export declare function isColorIdValid(id: string, options: ColorOption[]): boolean;