"""
Node definitions for the Cluster4NPU pipeline system.

This package contains all node implementations for the ML pipeline system,
including input sources, preprocessing, model inference, postprocessing,
and output destinations.

Available Nodes:
    - InputNode: Data source node (cameras, files, streams)
    - PreprocessNode: Data preprocessing and transformation
    - ModelNode: AI model inference operations
    - PostprocessNode: Output processing and filtering
    - OutputNode: Data sink and export operations

Usage:
    from cluster4npu_ui.core.nodes import InputNode, ModelNode, OutputNode
    
    # Create a simple pipeline
    input_node = InputNode()
    model_node = ModelNode()
    output_node = OutputNode()
"""

from .base_node import BaseNodeWithProperties, create_node_property_widget
from .input_node import InputNode
from .preprocess_node import PreprocessNode
from .model_node import ModelNode
from .postprocess_node import PostprocessNode
from .output_node import OutputNode

# Available node types for UI registration
NODE_TYPES = {
    'Input Node': InputNode,
    'Preprocess Node': PreprocessNode,
    'Model Node': ModelNode,
    'Postprocess Node': PostprocessNode,
    'Output Node': OutputNode
}

# Node categories for UI organization
NODE_CATEGORIES = {
    'Data Sources': [InputNode],
    'Processing': [PreprocessNode, PostprocessNode],
    'Inference': [ModelNode],
    'Output': [OutputNode]
}

__all__ = [
    'BaseNodeWithProperties',
    'create_node_property_widget',
    'InputNode',
    'PreprocessNode', 
    'ModelNode',
    'PostprocessNode',
    'OutputNode',
    'NODE_TYPES',
    'NODE_CATEGORIES'
]