import { type Icon as PhosphorIcon } from "@phosphor-icons/react"; import { type Icon, type Mood, type Shape, type Spec, type World } from "../spec/index.ts"; export declare const ICONS: Record; export declare function iconFor(icon: Icon | null): PhosphorIcon; /** What a node is drawn as: what the spec says, or what its icon suggests. On a zone's edge, a gate. */ export declare function shapeFor(display: { icon?: Icon | null; shape?: Shape | null; }, edge?: boolean): Shape; /** Whether a node's name goes inside it: services and gates carry a short name, the rest wear it below. */ export declare function labelInside(shape: Shape, icon: Icon | null | undefined, label?: string): boolean; /** A mood worth a ring: how it is doing says something. Without one, the ring is neutral. */ export declare function telling(mood: Mood | null | undefined): mood is "ok" | "bad" | "warn" | "busy"; /** A mood as a CSS colour; "off" and no mood are the neutral line colour. */ export declare function moodColor(mood: Mood | null | undefined): string; /** Message tones as colours, for packets in flight. */ export declare function toneColor(tone: string | undefined): string; /** Colours that tell instances apart: Alice blue, Bob purple. Singletons stay neutral. */ export declare const PALETTE: string[]; /** * Who wears which colour. When the spec says whose things are (display.owner, or rows with an * owner), only the owners get colours, and what they own wears them: Alice blue, her Mac * too. Without any owners, every instance that is not a singleton gets its own. */ export declare function identityColors(spec: Spec, world: World): Map; export declare const TONES: readonly [{ readonly tone: "request"; readonly label: "request"; }, { readonly tone: "reply"; readonly label: "reply"; }, { readonly tone: "refused"; readonly label: "refused"; }, { readonly tone: "stream"; readonly label: "stream"; }];