"""Structured red-team pentest report models."""

from __future__ import annotations

from pydantic import BaseModel, Field


class PentestPhase(BaseModel):
    name: str
    status: str
    findings: int = 0
    details: dict = Field(default_factory=dict)


class PentestLimits(BaseModel):
    tools_discovered: int = 0
    attack_chains_available: bool = True
    coverage: str = "full"


class PentestReport(BaseModel):
    target: str
    verdict: str
    score: int
    absolute_risk: int | None = None
    phases: list[PentestPhase] = Field(default_factory=list)
    attack_paths: list[dict] = Field(default_factory=list)
    top_findings: list[dict] = Field(default_factory=list)
    fuzz_findings: list[dict] = Field(default_factory=list)
    recommendations: list[str] = Field(default_factory=list)
    static_report: dict = Field(default_factory=dict)
    pentest_limits: PentestLimits = Field(default_factory=PentestLimits)
