"""Domain models for CleverAgents - auto-generated from Phase 0 stubs."""

from pydantic import BaseModel, ConfigDict, Field


class StreamedChangeSection(BaseModel):
    """Data contract for StreamedChangeSection."""

    start_line: int = Field(..., alias="startLine")
    end_line: int = Field(..., alias="endLine")
    start_line_string: str = Field(..., alias="startLineString")
    end_line_string: str = Field(..., alias="endLineString")

    model_config = ConfigDict(
        str_strip_whitespace=True,
        validate_assignment=True,
        arbitrary_types_allowed=False,
        populate_by_name=True,
        use_enum_values=True,
    )


class StreamedChangeWithLineNums(BaseModel):
    """Data contract for StreamedChangeWithLineNums."""

    old: StreamedChangeSection = Field(...)
    start_line_included: bool = Field(..., alias="startLineIncluded")
    end_line_included: bool = Field(..., alias="endLineIncluded")
    new: str = Field(...)

    model_config = ConfigDict(
        str_strip_whitespace=True,
        validate_assignment=True,
        arbitrary_types_allowed=False,
        populate_by_name=True,
        use_enum_values=True,
    )
