/**
 * Semantic shape identifier for workflow nodes.
 *
 * Each visual class maps to a distinct SVG shape that communicates the
 * task's structural role at a glance:
 *
 * - `task-card` — rounded rectangle for general work tasks
 * - `decision-diamond` — rotated square for conditional branching
 * - `parallel-bar` — wide horizontal bar for parallel splits
 * - `event-circle` — circle for events, signals, and timing
 * - `gate-octagon` — octagon for human review gates (stop sign metaphor)
 * - `subworkflow-card` — double-border card for sub-workflow invocations
 * - `container` — rounded container for tasks with nested children
 * - `terminal-pill` — pill/capsule for start and end sentinels
 */
export type VisualClass = "task-card" | "decision-diamond" | "parallel-bar" | "event-circle" | "gate-octagon" | "subworkflow-card" | "container" | "terminal-pill";
/**
 * Describes how a task kind's connection handles are structured.
 *
 * T02 (NodeShell) reads this to render the appropriate React Flow Handles.
 * T01 defines the patterns; T02 implements the rendering.
 */
export type PortPattern = "standard" | "branch-per-case" | "branch-per-outcome" | "branch-per-branch" | "container" | "source-only" | "sink-only";
/**
 * Visual specification for a single workflow task kind.
 *
 * Combines shape, dimension, port, and accessibility metadata.
 * The layout engine (dagre today, ELK in T03) uses `defaultWidth`
 * and `defaultHeight + captionHeight` for node sizing. The renderer
 * (T02 NodeShell) uses `visualClass` to select the SVG shape component.
 *
 * For non-rectangular shapes (diamond, octagon, circle), the task name
 * renders as an external caption BELOW the shape. `captionHeight` reserves
 * space for this caption in the layout bounding box. The SVG shape itself
 * renders at `defaultHeight`, and the full layout allocation is
 * `defaultHeight + captionHeight`.
 */
export interface TaskTypeVisualSpec {
    readonly visualClass: VisualClass;
    readonly defaultWidth: number;
    readonly defaultHeight: number;
    /**
     * Height reserved for the task name caption below the shape.
     * 0 for shapes with internal text (cards, bars, pills).
     * >0 for non-rectangular shapes where text is placed externally.
     */
    readonly captionHeight: number;
    readonly portPattern: PortPattern;
    readonly isContainer: boolean;
    readonly ariaShapeLabel: string;
}
/**
 * Static registry mapping every workflow task kind string to its
 * visual specification.
 *
 * Includes all 20 `WorkflowTaskKind` enum values plus the two
 * sentinel pseudo-kinds (`__start__`, `__end__`).
 *
 * Frozen to prevent accidental mutation — this is static metadata
 * that must not change at runtime.
 */
export declare const VISUAL_REGISTRY: ReadonlyMap<string, TaskTypeVisualSpec>;
/**
 * Returns the visual specification for a task kind string.
 *
 * Falls back to `task-card` for unknown kinds, ensuring a valid spec
 * is always returned even for future task kinds not yet in the registry.
 */
export declare function getVisualSpec(kind: string): TaskTypeVisualSpec;
//# sourceMappingURL=task-type-visual-registry.d.ts.map