import * as React from 'react'; export type WorkflowStepStatus = 'pending' | 'running' | 'suspended' | 'completed' | 'error'; export type WorkflowStepAppearance = 'contained' | 'embedded' | 'timeline'; export interface WorkflowStepViewModel { id: string; title: string; description?: string; contextLabel?: string; status: WorkflowStepStatus; content?: React.ReactNode; durationMs?: number; error?: string; } export interface WorkflowStepRendererProps { steps: readonly WorkflowStepViewModel[]; appearance?: WorkflowStepAppearance; itemSlot?: string; expandable?: boolean; activeStepId?: string; expandedStepIds?: readonly string[]; defaultExpandedStepIds?: readonly string[]; onExpandedStepIdsChange?: (ids: readonly string[]) => void; className?: string; } interface PrivateWorkflowStepRendererProps extends WorkflowStepRendererProps { renderItems?: boolean; } export declare const workflowStepItemVariants: (props?: ({ status?: "completed" | "error" | "pending" | "running" | "suspended" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; export declare const workflowStepIconVariants: (props?: ({ status?: "completed" | "error" | "pending" | "running" | "suspended" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; export declare function normalizeExpandedWorkflowStepIds(ids: readonly string[], steps: readonly WorkflowStepViewModel[]): string[]; export interface WorkflowStepStatusIconProps { status: WorkflowStepStatus; index: number; className?: string; } /** * Status icon. A status change crossfades the glyphs (opacity transition, so a * reversal retargets from the current value); the circle colour follows on the * same token. No scale, bounce, shake or surface pulse; running is one spin. */ export declare function WorkflowStepStatusIcon({ status, index, className, }: WorkflowStepStatusIconProps): React.JSX.Element; export declare namespace WorkflowStepStatusIcon { var displayName: string; } export interface WorkflowDisclosureProps { open: boolean; /** Control that owns the panel; receives focus if it is inside on close. */ triggerRef: React.RefObject; id?: string; 'data-slot'?: string; children: React.ReactNode; } /** * Natural-height disclosure: grid-rows 0fr/1fr, 200 ms open, 120 ms close. * Stays mounted while closing (inert at once), then unmounts so a closed panel * has no layout box. Without a running transition (reduced motion, no CSS) it * unmounts immediately. */ export declare function WorkflowDisclosure({ open, triggerRef, id, 'data-slot': dataSlot, children, }: WorkflowDisclosureProps): React.JSX.Element | null; export declare namespace WorkflowDisclosure { var displayName: string; } export interface WorkflowStepItemProps { step: WorkflowStepViewModel; index: number; isLast: boolean; appearance?: WorkflowStepAppearance; itemSlot?: string; expandable?: boolean; expanded: boolean; active?: boolean; onExpandedChange: () => void; } export declare function WorkflowStepItem({ step, index, isLast, appearance, itemSlot, expandable, expanded, active, onExpandedChange, }: WorkflowStepItemProps): React.JSX.Element; export declare namespace WorkflowStepItem { var displayName: string; } export declare function WorkflowStepRenderer({ steps, appearance, itemSlot, expandable, activeStepId, expandedStepIds: controlledExpandedStepIds, defaultExpandedStepIds, onExpandedStepIdsChange, className, renderItems, }: PrivateWorkflowStepRendererProps): React.JSX.Element | null; export declare namespace WorkflowStepRenderer { var displayName: string; } export {};