import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraOrientation,LyraToolStatus}from'../../../internal/shared-unions.js';import type{FlowHandle}from'../flow-canvas/flow-types.js'; /** * `` — the card a workflow node renders as: header/body/toolbar chrome, * tool-lifecycle status tones, and the named connection-handle elements edges anchor to. Used as * `lr-flow-canvas`'s default card and as a slotted override; also renders standalone (palette * previews, docs). Purely presentational — activation, selection, movement, and connection are all * `lr-flow-canvas` events; this component owns none of that. * * @customElement lr-flow-node * @slot - Body content. * @slot icon - Leading header glyph. * @slot header - Replaces the built-in heading row entirely. * @slot toolbar - Action row at the block-end edge. Always visible on coarse-pointer/no-hover * devices; pointer-hover and focus-within reveal it elsewhere. * @csspart base - The row wrapping the input handles, the card, and the output handles. Carries no * card chrome of its own — style the card itself through the `card` part. * @csspart card - The bordered, filled node card. * @csspart header - The built-in header row (omitted when the `header` slot has content). * @csspart icon - The wrapper around the `icon` slot. * @csspart heading - The heading text. * @csspart status - The visible status chip (status is never color-only). * @csspart progress - The determinate progress bar. * @csspart body - The default-slot body wrapper. * @csspart toolbar - The toolbar row wrapper. * @csspart handle - Every handle dot (input or output). * @csspart handle-input - An input handle dot (also carries the shared `handle` part). * @csspart handle-output - An output handle dot (also carries the shared `handle` part). * @cssprop [--lr-flow-node-min-inline-size=calc(var(--lr-size-10rem) + var(--lr-size-1rem))] - Minimum card inline size. * @cssprop [--lr-flow-node-compact-padding=var(--lr-space-xs)] - `[part="card"]` padding while * `compact`. * @cssprop [--lr-flow-node-compact-gap=var(--lr-space-2xs)] - Gap between `[part="card"]`'s rows * while `compact`. * @cssprop [--lr-flow-node-selected-outline-color=var(--lr-color-brand)] - Outline color of the * card while `selected`. The outline stays independent from execution-state border and glow. * @cssprop [--lr-flow-node-running-border=var(--lr-color-brand)] - Border color of the card while * `status="running"`. Independent from `--lr-flow-node-selected-outline-color` so a consumer can * retint just one of the two states without the other following along. * @cssprop [--lr-flow-node-running-glow=var(--lr-color-brand-quiet)] - Box-shadow color of the * running-state ring around the card, and the pulse keyframes' peak color. * @cssprop [--lr-flow-status-color=var(--lr-color-border-strong)] - Status-dot color when no * execution status is set. * @cssprop [--lr-flow-status-pending-color=var(--lr-color-border-strong)] - Pending status-dot color. * @cssprop [--lr-flow-status-running-color=var(--lr-color-brand)] - Running status-dot color. * @cssprop [--lr-flow-status-success-color=var(--lr-color-success)] - Success status-dot color. * @cssprop [--lr-flow-status-error-color=var(--lr-color-danger)] - Error status-dot color. * @cssprop [--lr-flow-status-denied-color=var(--lr-color-warning)] - Denied status-dot color. * @cssprop [--lr-flow-node-progress-track-color=var(--lr-color-border)] - Determinate progress * track color. * @cssprop [--lr-flow-node-progress-fill-color=var(--lr-color-brand)] - Determinate progress fill * color, independent from the track and other brand-colored states. * @status stable * @since 4.0.0 */ export declare class LyraFlowNode extends LyraElement{static styles:import("lit").CSSResultGroup[]; /** This card's identity inside `lr-flow-canvas`, matched against a `nodes` entry's `id`. It * reflects because the canvas adopts light-DOM children by reading the `node-id` *attribute*: a * property-only `card.nodeId = 'fetch'` used to leave the card unslotted, rendering nowhere and * warning that it matched no node. The empty default stays absent from the DOM rather than * serializing as `node-id=""`, which the canvas would have to skip anyway. */ nodeId:string; /** Consumer taxonomy forwarded by `lr-flow-canvas` as the reachable `data-node-type` attribute. */ flowType:string;heading:string;private _status; /** Canonical tool lifecycle status. Invalid runtime/attribute values normalize to null. */ get status():LyraToolStatus|null;set status(value:LyraToolStatus|null);progress:number|null;statusDetail:string;durationMs:number|null;selected:boolean; /** Tighter card padding and row gap, for the dense canvases and palette previews these cards * usually render in -- same convention as `lr-source-card`'s `compact`. Defaults to `false`, * i.e. the full card padding. Purely a density knob: the border, background and shadow stay, as * do the `selected` and `status="running"` treatments. */ compact:boolean;private _inputs; /** Frozen snapshot of at most the first 10,000 input handles. Reassign to update. */ get inputs():readonly FlowHandle[];set inputs(value:readonly FlowHandle[]);private _outputs; /** Frozen snapshot of at most the first 10,000 output handles. Reassign to update. */ get outputs():readonly FlowHandle[];set outputs(value:readonly FlowHandle[]); /** Additive: which physical edge handles render on, mirroring the canvas's own `orientation` when * this card is canvas-adopted; a standalone card defaults to `"horizontal"`. */ private _orientation;get orientation():LyraOrientation;set orientation(value:LyraOrientation);private hasHeaderSlot;private hasIconSlot;private hasBodySlot;private hasToolbarSlot;private pulsesRing;private browserStateSeeded;private sampleSlotPresence;private shouldPulseRing;private sampleBrowserState;connectedCallback():void;protected willUpdate(changed:PropertyValues):void;private onSlotChange; /** `progress` normalized to a finite `[0, 100]` percentage, or `null` -- `null`/`undefined` and a * non-finite raw value (e.g. a stray `NaN` push from a decoration) both mean "no determinate * progress bar," matching this property's own "omitted from render entirely when unset" * contract, rather than rendering a bar at a literal `NaN%` inline-size. A finite out-of-range * value clamps into `[0, 100]` instead of over/under-filling the bar -- same shape as * `tool-call-chip`'s/`thinking-panel`'s own `safeDurationMs` getter. */ private get safeProgress(); /** `durationMs` normalized to a finite, non-negative value, or `null` -- same "omitted when * unset/non-finite" contract and clamp-to-`0` shape as `safeProgress` above (and as * `tool-call-chip`'s/`thinking-panel`'s own `safeDurationMs` getters); this is a purely * displayed value here (formatted by `formattedDuration()`), never fed to a timer. */ private get safeDurationMs();private statusLabel;private handleTemplate;render():TemplateResult;private formattedDuration;private statusText;}declare global{interface HTMLElementTagNameMap{'lr-flow-node':LyraFlowNode;}}