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

from __future__ import annotations
from .principalappuser import Principalappuser, PrincipalappuserTypedDict
from acuvity.types import BaseModel
from typing import List, Optional
from typing_extensions import NotRequired, TypedDict


class PrincipalappTypedDict(TypedDict):
    r"""Describes the principal information of an application."""

    component: NotRequired[str]
    r"""The component of the application request."""
    labels: NotRequired[List[str]]
    r"""The list of labels attached to an application request."""
    name: NotRequired[str]
    r"""The name of the application."""
    user: NotRequired[PrincipalappuserTypedDict]
    r"""Describes the optional principal information of the user of an application which
    is being derived from a bearer token of a request.
    """


class Principalapp(BaseModel):
    r"""Describes the principal information of an application."""

    component: Optional[str] = None
    r"""The component of the application request."""

    labels: Optional[List[str]] = None
    r"""The list of labels attached to an application request."""

    name: Optional[str] = None
    r"""The name of the application."""

    user: Optional[Principalappuser] = None
    r"""Describes the optional principal information of the user of an application which
    is being derived from a bearer token of a request.
    """
