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

from __future__ import annotations
from datetime import datetime
from enum import Enum
from que_media.types import BaseModel
from typing import List
from typing_extensions import TypedDict


class Default(str, Enum):
    r"""Default trust policy when no specific rule applies."""

    ALLOW = "allow"
    DENY = "deny"


class PolicyTypedDict(TypedDict):
    r"""Trust policy configuration defining default trust behavior."""

    default: Default
    r"""Default trust policy when no specific rule applies."""


class Policy(BaseModel):
    r"""Trust policy configuration defining default trust behavior."""

    default: Default
    r"""Default trust policy when no specific rule applies."""


class DataTypedDict(TypedDict):
    r"""The trust list data containing certificates and policies."""

    manufacturers: List[str]
    r"""List of trusted hardware manufacturers whose devices can create trusted provenance."""
    cas: List[str]
    r"""List of trusted Certificate Authority certificates in PEM format."""
    policy: PolicyTypedDict
    r"""Trust policy configuration defining default trust behavior."""


class Data(BaseModel):
    r"""The trust list data containing certificates and policies."""

    manufacturers: List[str]
    r"""List of trusted hardware manufacturers whose devices can create trusted provenance."""

    cas: List[str]
    r"""List of trusted Certificate Authority certificates in PEM format."""

    policy: Policy
    r"""Trust policy configuration defining default trust behavior."""


class TrustListResponseTypedDict(TypedDict):
    r"""The current C2PA trust list containing trusted certificate authorities, hardware manufacturers, and trust policies used for manifest verification."""

    version: str
    r"""Version identifier for this trust list bundle."""
    issued_at: datetime
    r"""Timestamp when this trust list was issued."""
    data: DataTypedDict
    r"""The trust list data containing certificates and policies."""


class TrustListResponse(BaseModel):
    r"""The current C2PA trust list containing trusted certificate authorities, hardware manufacturers, and trust policies used for manifest verification."""

    version: str
    r"""Version identifier for this trust list bundle."""

    issued_at: datetime
    r"""Timestamp when this trust list was issued."""

    data: Data
    r"""The trust list data containing certificates and policies."""
