import type { ComponentType } from "react";
import type { WorkflowNode } from "../../editor";
/**
 * Props passed to every kind renderer. Matches the public `NodeProps`
 * shape we expose to consumers; we deliberately do NOT duplicate
 * coordinate fields (see ADR-003).
 */
export interface NodeKindProps<TData = unknown> {
    /** The full node — kinds read `data`, can mutate via `updateNodeData`. */
    node: WorkflowNode<TData>;
    /** True when this node is the focus of selection. */
    selected: boolean;
    /** True while a drag is in progress on this node. */
    dragging: boolean;
    /** True when any connection drag is in flight and could end here. */
    isConnecting: boolean;
}
export type NodeKindComponent<TData = unknown> = ComponentType<NodeKindProps<TData>>;
export type NodeKindRegistry = Record<string, NodeKindComponent>;
/**
 * Build a registry from a default set plus optional overrides. The result
 * is a frozen object so consumers can't mutate it post-hoc.
 */
export declare function buildNodeKindRegistry(defaults: NodeKindRegistry, overrides?: NodeKindRegistry): NodeKindRegistry;
//# sourceMappingURL=nodeKinds.d.ts.map