import { type FigmaSourceNode } from "./sourceNode.js";
/**
 * Whether a Figma paint contributes a visible colour. Figma omits `visible` when a paint is shown, so
 * only an explicit `visible:false` hides it (mirrors {@link isHidden} for nodes). A paint-level
 * `opacity:0` or a SOLID `color.a:0` is fully transparent and likewise contributes no visible colour.
 * Used so neither the reported text/background colour (#812) nor an extracted colour token (#752) is
 * ever taken from a paint that does not render.
 */
export declare const isVisiblePaint: (paint: Record<string, unknown>) => boolean;
/** Project a Figma paint's `color` ({r,g,b,a} in 0..1) to normalized `#RRGGBB[AA]` (alpha < 1 only). */
export declare const paintColorToHex: (paint: Record<string, unknown>) => string | undefined;
/**
 * The first VISIBLE SOLID paint's normalized hex from a node's paint array (`fills`/`strokes`), if
 * any. Hidden (`visible:false`) and fully-transparent paints are skipped so the reported colour is
 * one that actually renders; an empty/absent paint array yields `undefined` (resolved downstream as a
 * coverage notice, never a fabricated colour).
 */
export declare const firstSolidPaintHex: (node: FigmaSourceNode, key: string) => string | undefined;
/** Parsed sRGB channels in the 0..255 range. */
export interface Rgb {
    readonly r: number;
    readonly g: number;
    readonly b: number;
}
export declare const parseHexRgb: (hex: string) => Rgb | undefined;
//# sourceMappingURL=color.d.ts.map