import type React from 'react'; export declare function visibleNodeText(node: React.ReactNode): string; export interface RailSpanEntry { /** Stable identifier used by the mouse hit-test ('model', 'todos', …). */ id: string; node: React.ReactElement; } export interface RailSpan { id: string; /** 0-based start column within the rail's row. */ start: number; /** Rendered width in columns. */ len: number; } /** * 0-based column spans of the segments PowerlineRail will actually keep, * mirroring its keep/drop and right-anchor trim math exactly. The status-bar * mouse hit-test consumes this so click targets are derived from the SAME * nodes the renderer draws — dead-reckoned column constants drifted every * time a chip changed width or moved lines. Keep this in lockstep with * PowerlineRail's layout loop above. */ export declare function computeRailSpans(entries: readonly RailSpanEntry[], budget: number, rightAnchor?: React.ReactElement | null): RailSpan[]; export interface PowerlineRailProps { segments: React.ReactElement[]; budget: number; monochrome?: boolean | undefined; /** Override the filler background for per-line tonal layering. */ fillBg?: string | undefined; /** * Optional right-anchored segment. When provided, the rail reserves * space for this segment at the right edge of the budget so its * position is independent of how wide the left segments are — * preventing visual jitter when the left side updates frequently. */ rightAnchor?: React.ReactElement | null | undefined; } /** * Full-width status segments with a single uniform background. * No per-chip backgrounds, no transition glyphs, no segment caps — * just clean chips separated by a single space. */ export declare function PowerlineRail({ segments, budget, monochrome, fillBg, rightAnchor, }: PowerlineRailProps): React.ReactElement; //# sourceMappingURL=powerline-rail.d.ts.map