/** * Creator-initials presentation for rail rows. Derives a 1–2 letter monogram * plus a stable per-subject hue from a session's frozen `createdBy` fact. * Display-only: never an authorization input. */ export type CreatorRef = { kind: "subject" | "service"; subjectId: string; label?: string | undefined; }; /** * 1–2 letter monogram for a human creator; null for service/system creators * and unattributed legacy rows (the rail shows people, not machinery). */ export declare function creatorInitials(createdBy: CreatorRef): string | null; /** * The creator a rail row should show a monogram for, or null. * * Top-level rows only. A spawned session inherits its parent's creator, so * repeating the chip down a subtree is noise that costs title width on exactly * the rows with the least of it. `parentSessionId` is the session's own lineage * fact, which is why it beats the row's render depth: a collapsed channel * section renders the selected session at depth 0 even when it is nested. */ export declare function railRowCreator(session: { parentSessionId: string | null; createdBy: CreatorRef; }): CreatorRef | null; /** Human-readable creator name for a tooltip or screen-reader announcement. */ export declare function creatorLabel(createdBy: CreatorRef): string; /** * How a rail row announces its creator, or null when it shows no chip. * * The chip is `aria-hidden` and the row's own `aria-label` replaces * name-from-content, so the row's accessible name is the only place a screen * reader can hear this. Gate it on exactly the facts that decide whether the * chip renders, so a row never announces a creator it does not show. */ export declare function creatorAnnouncement(createdBy: CreatorRef | null): string | null; /** Stable hue (0–359) hashed from the subject id, for the monogram chip. */ export declare function creatorHue(subjectId: string): number;