
import * as react37 from "react";
import { MouseEvent, ReactNode } from "react";
import * as react_jsx_runtime64 from "react/jsx-runtime";
import { Edge, EdgeProps } from "@xyflow/react";

//#region src/components/lineage/edges/LineageEdge.d.ts
type EdgeChangeStatus = "added" | "removed" | "modified" | "unchanged";
interface LineageEdgeData extends Record<string, unknown> {
  /** Change status for diff visualization */
  changeStatus?: EdgeChangeStatus;
  /** Whether this edge is highlighted */
  isHighlighted?: boolean;
  /** Label to display on edge */
  label?: string;
}
type LineageEdgeType = Edge<LineageEdgeData>;
type LineageEdgeProps = EdgeProps<LineageEdgeType>;
declare function LineageEdgeComponent({
  id,
  sourceX,
  sourceY,
  targetX,
  targetY,
  sourcePosition,
  targetPosition,
  data,
  selected
}: LineageEdgeProps): react_jsx_runtime64.JSX.Element;
declare const LineageEdge: react37.MemoExoticComponent<typeof LineageEdgeComponent>;
//#endregion
//#region src/components/lineage/nodes/LineageNode.d.ts
/**
 * Change status for node visualization
 */
type NodeChangeStatus = "added" | "removed" | "modified" | "unchanged";
/**
 * Selection mode for the node
 */
type SelectMode = "normal" | "selecting" | "action_result";
/**
 * Change category from column-level lineage analysis
 */
type ChangeCategory = "breaking" | "non_breaking" | "partial_breaking" | "unknown";
/**
 * Data structure for lineage node
 */
interface LineageNodeData extends Record<string, unknown> {
  /** Display label for the node */
  label: string;
  /** Node type (model, source, seed, etc.) */
  nodeType?: string;
  /** Change status for diff visualization */
  changeStatus?: NodeChangeStatus;
  /** Whether this node is currently selected */
  isSelected?: boolean;
  /** Resource type for icon display */
  resourceType?: string;
  /** Package name */
  packageName?: string;
  /** Whether to show column-level details */
  showColumns?: boolean;
  /** Column data if showing columns */
  columns?: Array<{
    name: string;
    type?: string;
    changeStatus?: NodeChangeStatus;
  }>;
}
/**
 * Props for LineageNode component
 */
interface LineageNodeProps {
  /** Node ID */
  id: string;
  /** Node data */
  data: LineageNodeData;
  /** Whether the node is selected (from React Flow) */
  selected?: boolean;
  /** Enable interactive mode with checkbox */
  interactive?: boolean;
  /** Selection mode */
  selectMode?: SelectMode;
  /** Whether the node is selected (checkbox state) */
  isNodeSelected?: boolean;
  /** Whether the node is focused */
  isFocused?: boolean;
  /** Whether the node is highlighted */
  isHighlighted?: boolean;
  /** Whether to show content (zoom level visibility) */
  showContent?: boolean;
  /** Action tag to display (for action_result mode) */
  actionTag?: ReactNode;
  /** Whether to show change analysis mode */
  showChangeAnalysis?: boolean;
  /** Change category text */
  changeCategory?: ChangeCategory;
  /** Runs aggregated display component */
  runsAggregatedTag?: ReactNode;
  /** Whether node has parent nodes (show left handle) */
  hasParents?: boolean;
  /** Whether node has child nodes (show right handle) */
  hasChildren?: boolean;
  /** Number of columns for column container height */
  columnCount?: number;
  /** Height per column in pixels */
  columnHeight?: number;
  /** Whether dark mode is active */
  isDark?: boolean;
  /** Callback when node is clicked */
  onNodeClick?: (nodeId: string) => void;
  /** Callback when node is double-clicked */
  onNodeDoubleClick?: (nodeId: string) => void;
  /** Callback when checkbox is clicked */
  onSelect?: (nodeId: string) => void;
  /** Callback when context menu is requested */
  onContextMenu?: (event: MouseEvent, nodeId: string) => void;
  /** Callback when impact radius button is clicked */
  onShowImpactRadius?: (nodeId: string) => void;
}
/**
 * LineageNode - Pure presentation component for displaying nodes in a lineage graph
 *
 * This component is designed to be used with @xyflow/react and receives all data via props.
 * It does not perform any data fetching or state management - it is purely presentational.
 *
 * @example Basic usage
 * ```tsx
 * <LineageNode
 *   id="model.my_model"
 *   data={{
 *     label: "my_model",
 *     nodeType: "model",
 *     changeStatus: "modified",
 *     resourceType: "model"
 *   }}
 *   selected={false}
 *   onNodeClick={(nodeId) => console.log("Clicked:", nodeId)}
 * />
 * ```
 *
 * @example Interactive mode with selection
 * ```tsx
 * <LineageNode
 *   id="model.my_model"
 *   data={{ label: "my_model", changeStatus: "added" }}
 *   interactive
 *   selectMode="selecting"
 *   isNodeSelected={selectedNodes.has("model.my_model")}
 *   onSelect={(nodeId) => toggleSelection(nodeId)}
 * />
 * ```
 *
 * @example Action result mode
 * ```tsx
 * <LineageNode
 *   id="model.my_model"
 *   data={{ label: "my_model", changeStatus: "modified" }}
 *   selectMode="action_result"
 *   actionTag={<ActionTag status="running" progress={{ percentage: 0.5 }} />}
 * />
 * ```
 */
declare function LineageNodeComponent({
  id,
  data,
  selected,
  interactive,
  selectMode,
  isNodeSelected,
  isFocused,
  isHighlighted,
  showContent,
  actionTag,
  showChangeAnalysis,
  changeCategory,
  runsAggregatedTag,
  hasParents,
  hasChildren,
  columnCount,
  columnHeight,
  isDark,
  onNodeClick,
  onNodeDoubleClick,
  onSelect,
  onContextMenu,
  onShowImpactRadius
}: LineageNodeProps): react_jsx_runtime64.JSX.Element;
declare const LineageNode: react37.MemoExoticComponent<typeof LineageNodeComponent>;
//#endregion
export { EdgeChangeStatus as a, LineageEdgeProps as c, NodeChangeStatus as i, LineageNodeData as n, LineageEdge as o, LineageNodeProps as r, LineageEdgeData as s, LineageNode as t };
//# sourceMappingURL=index-B3Jgu2eV.d.ts.map