"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from .assessmentsummary import AssessmentSummary, AssessmentSummaryTypedDict
from .controlassessment import ControlAssessment, ControlAssessmentTypedDict
from datetime import datetime
from nabla_py.types import BaseModel
from typing import List, Literal
from typing_extensions import TypedDict


Framework = Literal[
    "NIST 800-53",
    "NIST 800-171",
    "NIST 800-172",
    "CMMC",
    "FIPS 140-2",
    "FIPS 140-3",
    "NIST SP 800-193",
]
r"""Compliance framework name"""


class ComplianceAssessmentTypedDict(TypedDict):
    id: str
    framework: Framework
    r"""Compliance framework name"""
    version: str
    r"""Framework version"""
    timestamp: datetime
    controls: List[ControlAssessmentTypedDict]
    summary: AssessmentSummaryTypedDict


class ComplianceAssessment(BaseModel):
    id: str

    framework: Framework
    r"""Compliance framework name"""

    version: str
    r"""Framework version"""

    timestamp: datetime

    controls: List[ControlAssessment]

    summary: AssessmentSummary
