# This file was auto-generated by Fern from our API Definition.

import typing_extensions
from ..types.component_component_type import ComponentComponentType
import typing_extensions
from .device_component_details_application_details import DeviceComponentDetailsApplicationDetailsParams
from .device_component_details_card_reader_details import DeviceComponentDetailsCardReaderDetailsParams
from .device_component_details_battery_details import DeviceComponentDetailsBatteryDetailsParams
from .device_component_details_wi_fi_details import DeviceComponentDetailsWiFiDetailsParams
from .device_component_details_ethernet_details import DeviceComponentDetailsEthernetDetailsParams


class ComponentParams(typing_extensions.TypedDict):
    """
    The wrapper object for the component entries of a given component type.
    """

    type: ComponentComponentType
    """
    The type of this component. Each component type has expected properties expressed
    in a structured format within its corresponding `*_details` field.
    See [ComponentType](#type-componenttype) for possible values
    """

    application_details: typing_extensions.NotRequired[DeviceComponentDetailsApplicationDetailsParams]
    """
    Structured data for an `Application`, set for Components of type `APPLICATION`.
    """

    card_reader_details: typing_extensions.NotRequired[DeviceComponentDetailsCardReaderDetailsParams]
    """
    Structured data for a `CardReader`, set for Components of type `CARD_READER`.
    """

    battery_details: typing_extensions.NotRequired[DeviceComponentDetailsBatteryDetailsParams]
    """
    Structured data for a `Battery`, set for Components of type `BATTERY`.
    """

    wifi_details: typing_extensions.NotRequired[DeviceComponentDetailsWiFiDetailsParams]
    """
    Structured data for a `WiFi` interface, set for Components of type `WIFI`.
    """

    ethernet_details: typing_extensions.NotRequired[DeviceComponentDetailsEthernetDetailsParams]
    """
    Structured data for an `Ethernet` interface, set for Components of type `ETHERNET`.
    """
