# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from tapi_server.models.base_model_ import Model
from tapi_server.models.tapi_photonic_media_application_identifier import TapiPhotonicMediaApplicationIdentifier  # noqa: F401,E501
from tapi_server.models.tapi_photonic_media_central_frequency import TapiPhotonicMediaCentralFrequency  # noqa: F401,E501
from tapi_server.models.tapi_photonic_media_modulation_technique import TapiPhotonicMediaModulationTechnique  # noqa: F401,E501
from tapi_server.models.tapi_photonic_media_total_power_threshold_pac import TapiPhotonicMediaTotalPowerThresholdPac  # noqa: F401,E501
from tapi_server import util


class TapiPhotonicMediaOtsiCapabilityPac(Model):
    """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

    Do not edit the class manually.
    """

    def __init__(self, supportable_lower_central_frequency=None, supportable_application_identifier=None, supportable_modulation=None, total_power_warn_threshold=None, supportable_upper_central_frequency=None):  # noqa: E501
        """TapiPhotonicMediaOtsiCapabilityPac - a model defined in OpenAPI

        :param supportable_lower_central_frequency: The supportable_lower_central_frequency of this TapiPhotonicMediaOtsiCapabilityPac.  # noqa: E501
        :type supportable_lower_central_frequency: List[TapiPhotonicMediaCentralFrequency]
        :param supportable_application_identifier: The supportable_application_identifier of this TapiPhotonicMediaOtsiCapabilityPac.  # noqa: E501
        :type supportable_application_identifier: List[TapiPhotonicMediaApplicationIdentifier]
        :param supportable_modulation: The supportable_modulation of this TapiPhotonicMediaOtsiCapabilityPac.  # noqa: E501
        :type supportable_modulation: List[TapiPhotonicMediaModulationTechnique]
        :param total_power_warn_threshold: The total_power_warn_threshold of this TapiPhotonicMediaOtsiCapabilityPac.  # noqa: E501
        :type total_power_warn_threshold: TapiPhotonicMediaTotalPowerThresholdPac
        :param supportable_upper_central_frequency: The supportable_upper_central_frequency of this TapiPhotonicMediaOtsiCapabilityPac.  # noqa: E501
        :type supportable_upper_central_frequency: List[TapiPhotonicMediaCentralFrequency]
        """
        self.openapi_types = {
            'supportable_lower_central_frequency': List[TapiPhotonicMediaCentralFrequency],
            'supportable_application_identifier': List[TapiPhotonicMediaApplicationIdentifier],
            'supportable_modulation': List[TapiPhotonicMediaModulationTechnique],
            'total_power_warn_threshold': TapiPhotonicMediaTotalPowerThresholdPac,
            'supportable_upper_central_frequency': List[TapiPhotonicMediaCentralFrequency]
        }

        self.attribute_map = {
            'supportable_lower_central_frequency': 'supportable-lower-central-frequency',
            'supportable_application_identifier': 'supportable-application-identifier',
            'supportable_modulation': 'supportable-modulation',
            'total_power_warn_threshold': 'total-power-warn-threshold',
            'supportable_upper_central_frequency': 'supportable-upper-central-frequency'
        }

        self._supportable_lower_central_frequency = supportable_lower_central_frequency
        self._supportable_application_identifier = supportable_application_identifier
        self._supportable_modulation = supportable_modulation
        self._total_power_warn_threshold = total_power_warn_threshold
        self._supportable_upper_central_frequency = supportable_upper_central_frequency

    @classmethod
    def from_dict(cls, dikt) -> 'TapiPhotonicMediaOtsiCapabilityPac':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The tapi.photonic.media.OtsiCapabilityPac of this TapiPhotonicMediaOtsiCapabilityPac.  # noqa: E501
        :rtype: TapiPhotonicMediaOtsiCapabilityPac
        """
        return util.deserialize_model(dikt, cls)

    @property
    def supportable_lower_central_frequency(self):
        """Gets the supportable_lower_central_frequency of this TapiPhotonicMediaOtsiCapabilityPac.

        The lower frequency of the channel spectrum  # noqa: E501

        :return: The supportable_lower_central_frequency of this TapiPhotonicMediaOtsiCapabilityPac.
        :rtype: List[TapiPhotonicMediaCentralFrequency]
        """
        return self._supportable_lower_central_frequency

    @supportable_lower_central_frequency.setter
    def supportable_lower_central_frequency(self, supportable_lower_central_frequency):
        """Sets the supportable_lower_central_frequency of this TapiPhotonicMediaOtsiCapabilityPac.

        The lower frequency of the channel spectrum  # noqa: E501

        :param supportable_lower_central_frequency: The supportable_lower_central_frequency of this TapiPhotonicMediaOtsiCapabilityPac.
        :type supportable_lower_central_frequency: List[TapiPhotonicMediaCentralFrequency]
        """

        self._supportable_lower_central_frequency = supportable_lower_central_frequency

    @property
    def supportable_application_identifier(self):
        """Gets the supportable_application_identifier of this TapiPhotonicMediaOtsiCapabilityPac.

        The list of supportable ApplicationIdentifiers.  # noqa: E501

        :return: The supportable_application_identifier of this TapiPhotonicMediaOtsiCapabilityPac.
        :rtype: List[TapiPhotonicMediaApplicationIdentifier]
        """
        return self._supportable_application_identifier

    @supportable_application_identifier.setter
    def supportable_application_identifier(self, supportable_application_identifier):
        """Sets the supportable_application_identifier of this TapiPhotonicMediaOtsiCapabilityPac.

        The list of supportable ApplicationIdentifiers.  # noqa: E501

        :param supportable_application_identifier: The supportable_application_identifier of this TapiPhotonicMediaOtsiCapabilityPac.
        :type supportable_application_identifier: List[TapiPhotonicMediaApplicationIdentifier]
        """

        self._supportable_application_identifier = supportable_application_identifier

    @property
    def supportable_modulation(self):
        """Gets the supportable_modulation of this TapiPhotonicMediaOtsiCapabilityPac.

        This parameter defines the modulation used at the source  # noqa: E501

        :return: The supportable_modulation of this TapiPhotonicMediaOtsiCapabilityPac.
        :rtype: List[TapiPhotonicMediaModulationTechnique]
        """
        return self._supportable_modulation

    @supportable_modulation.setter
    def supportable_modulation(self, supportable_modulation):
        """Sets the supportable_modulation of this TapiPhotonicMediaOtsiCapabilityPac.

        This parameter defines the modulation used at the source  # noqa: E501

        :param supportable_modulation: The supportable_modulation of this TapiPhotonicMediaOtsiCapabilityPac.
        :type supportable_modulation: List[TapiPhotonicMediaModulationTechnique]
        """

        self._supportable_modulation = supportable_modulation

    @property
    def total_power_warn_threshold(self):
        """Gets the total_power_warn_threshold of this TapiPhotonicMediaOtsiCapabilityPac.


        :return: The total_power_warn_threshold of this TapiPhotonicMediaOtsiCapabilityPac.
        :rtype: TapiPhotonicMediaTotalPowerThresholdPac
        """
        return self._total_power_warn_threshold

    @total_power_warn_threshold.setter
    def total_power_warn_threshold(self, total_power_warn_threshold):
        """Sets the total_power_warn_threshold of this TapiPhotonicMediaOtsiCapabilityPac.


        :param total_power_warn_threshold: The total_power_warn_threshold of this TapiPhotonicMediaOtsiCapabilityPac.
        :type total_power_warn_threshold: TapiPhotonicMediaTotalPowerThresholdPac
        """

        self._total_power_warn_threshold = total_power_warn_threshold

    @property
    def supportable_upper_central_frequency(self):
        """Gets the supportable_upper_central_frequency of this TapiPhotonicMediaOtsiCapabilityPac.

        The Upper frequency of the channel spectrum  # noqa: E501

        :return: The supportable_upper_central_frequency of this TapiPhotonicMediaOtsiCapabilityPac.
        :rtype: List[TapiPhotonicMediaCentralFrequency]
        """
        return self._supportable_upper_central_frequency

    @supportable_upper_central_frequency.setter
    def supportable_upper_central_frequency(self, supportable_upper_central_frequency):
        """Sets the supportable_upper_central_frequency of this TapiPhotonicMediaOtsiCapabilityPac.

        The Upper frequency of the channel spectrum  # noqa: E501

        :param supportable_upper_central_frequency: The supportable_upper_central_frequency of this TapiPhotonicMediaOtsiCapabilityPac.
        :type supportable_upper_central_frequency: List[TapiPhotonicMediaCentralFrequency]
        """

        self._supportable_upper_central_frequency = supportable_upper_central_frequency
