"""Element handle classes for the output rendering framework.

Each handle type wraps a specific element kind and provides typed write
methods.  Handles are format-agnostic — producer code writes to handles
without knowledge of the active materialisation strategy.

Based on the Output Rendering Framework specification (v3_spec.md §Output
Rendering Framework / Element Handles).
"""

from cleveragents.cli.output.handles._base import ElementHandle
from cleveragents.cli.output.handles._concrete import (
    ActionHintHandle,
    CodeHandle,
    DiffHandle,
    ProgressHandle,
    SeparatorHandle,
    TextHandle,
    TreeHandle,
)
from cleveragents.cli.output.handles._models import (
    MAX_ELEMENTS_PER_SESSION,
    MAX_TABLE_ROWS,
    MAX_TREE_DEPTH,
    ActionHint,
    CodeBlock,
    ColumnDef,
    DiffBlock,
    DiffHunk,
    DiffLine,
    ElementClosed,
    ElementClosedError,
    ElementCreated,
    ElementEvent,
    ElementSnapshot,
    ElementUpdated,
    Panel,
    PanelEntry,
    ProgressIndicator,
    ProgressStep,
    Separator,
    SessionEnd,
    StatusMessage,
    Table,
    TextBlock,
    Tree,
    TreeNode,
)
from cleveragents.cli.output.handles._panel_table import (
    PanelHandle,
    StatusHandle,
    TableHandle,
)

__all__ = [
    "MAX_ELEMENTS_PER_SESSION",
    "MAX_TABLE_ROWS",
    "MAX_TREE_DEPTH",
    "ActionHint",
    "ActionHintHandle",
    "CodeBlock",
    "CodeHandle",
    "ColumnDef",
    "DiffBlock",
    "DiffHandle",
    "DiffHunk",
    "DiffLine",
    "ElementClosed",
    "ElementClosedError",
    "ElementCreated",
    "ElementEvent",
    "ElementHandle",
    "ElementSnapshot",
    "ElementUpdated",
    "Panel",
    "PanelEntry",
    "PanelHandle",
    "ProgressHandle",
    "ProgressIndicator",
    "ProgressStep",
    "Separator",
    "SeparatorHandle",
    "SessionEnd",
    "StatusHandle",
    "StatusMessage",
    "Table",
    "TableHandle",
    "TextBlock",
    "TextHandle",
    "Tree",
    "TreeHandle",
    "TreeNode",
]
