"""
This module is home to the Audio class
"""
from pyecobee.ecobee_object import EcobeeObject


class Audio(EcobeeObject):
    """
    This class has been auto generated by scraping
    https://www.ecobee.com/home/developer/api/documentation/v1/objects/Audio.shtml

    Attribute names have been generated by converting ecobee property
    names from camelCase to snake_case.

    A getter property has been generated for each attribute.
    A setter property has been generated for each attribute whose value
    of READONLY is "no".

    An __init__ argument without a default value has been generated if
    the value of REQUIRED is "yes".
    An __init__ argument with a default value of None has been generated
    if the value of REQUIRED is "no".
    """

    __slots__ = [
        '_playback_volume',
        '_microphone_enabled',
        '_sound_alert_volume',
        '_sound_tick_volume',
        '_voice_engines',
    ]

    attribute_name_map = {
        'playback_volume': 'playbackVolume',
        'playbackVolume': 'playback_volume',
        'microphone_enabled': 'microphoneEnabled',
        'microphoneEnabled': 'microphone_enabled',
        'sound_alert_volume': 'soundAlertVolume',
        'soundAlertVolume': 'sound_alert_volume',
        'sound_tick_volume': 'soundTickVolume',
        'soundTickVolume': 'sound_tick_volume',
        'voice_engines': 'voiceEngines',
        'voiceEngines': 'voice_engines',
    }

    attribute_type_map = {
        'playback_volume': 'int',
        'microphone_enabled': 'bool',
        'sound_alert_volume': 'int',
        'sound_tick_volume': 'int',
        'voice_engines': 'List[VoiceEngine]',
    }

    def __init__(
        self,
        playback_volume=None,
        microphone_enabled=None,
        sound_alert_volume=None,
        sound_tick_volume=None,
        voice_engines=None,
    ):
        """
        Construct an Audio instance
        """
        self._playback_volume = playback_volume
        self._microphone_enabled = microphone_enabled
        self._sound_alert_volume = sound_alert_volume
        self._sound_tick_volume = sound_tick_volume
        self._voice_engines = voice_engines

    @property
    def playback_volume(self):
        """
        Gets the playback_volume attribute of this Audio instance.

        :return: The value of the playback_volume attribute of this
        Audio instance.
        :rtype: int
        """

        return self._playback_volume

    @playback_volume.setter
    def playback_volume(self, playback_volume):
        """
        Sets the playback_volume attribute of this Audio instance.

        :param playback_volume: The playback_volume value to set for the
        playback_volume attribute of this Audio instance.
        :type: int
        """

        self._playback_volume = playback_volume

    @property
    def microphone_enabled(self):
        """
        Gets the microphone_enabled attribute of this Audio instance.

        :return: The value of the microphone_enabled attribute of this
        Audio instance.
        :rtype: bool
        """

        return self._microphone_enabled

    @microphone_enabled.setter
    def microphone_enabled(self, microphone_enabled):
        """
        Sets the microphone_enabled attribute of this Audio instance.

        :param microphone_enabled: The microphone_enabled value to set
        for the microphone_enabled attribute of this Audio instance.
        :type: bool
        """

        self._microphone_enabled = microphone_enabled

    @property
    def sound_alert_volume(self):
        """
        Gets the sound_alert_volume attribute of this Audio instance.

        :return: The value of the sound_alert_volume attribute of this
        Audio instance.
        :rtype: int
        """

        return self._sound_alert_volume

    @sound_alert_volume.setter
    def sound_alert_volume(self, sound_alert_volume):
        """
        Sets the sound_alert_volume attribute of this Audio instance.

        :param sound_alert_volume: The sound_alert_volume value to set
        for the sound_alert_volume attribute of this Audio instance.
        :type: int
        """

        self._sound_alert_volume = sound_alert_volume

    @property
    def sound_tick_volume(self):
        """
        Gets the sound_tick_volume attribute of this Audio instance.

        :return: The value of the sound_tick_volume attribute of this
        Audio instance.
        :rtype: int
        """

        return self._sound_tick_volume

    @sound_tick_volume.setter
    def sound_tick_volume(self, sound_tick_volume):
        """
        Sets the sound_tick_volume attribute of this Audio instance.

        :param sound_tick_volume: The sound_tick_volume value to set for
        the sound_tick_volume attribute of this Audio instance.
        :type: int
        """

        self._sound_tick_volume = sound_tick_volume

    @property
    def voice_engines(self):
        """
        Gets the voice_engines attribute of this Audio instance.

        :return: The value of the voice_engines attribute of this Audio
        instance.
        :rtype: List[VoiceEngine]
        """

        return self._voice_engines

"""
This module is home to the Audio class
"""
from pyecobee.ecobee_object import EcobeeObject


class Audio(EcobeeObject):
    """
    This class has been auto generated by scraping
    https://www.ecobee.com/home/developer/api/documentation/v1/objects/Audio.shtml

    Attribute names have been generated by converting ecobee property
    names from camelCase to snake_case.

    A getter property has been generated for each attribute.
    A setter property has been generated for each attribute whose value
    of READONLY is "no".

    An __init__ argument without a default value has been generated if
    the value of REQUIRED is "yes".
    An __init__ argument with a default value of None has been generated
    if the value of REQUIRED is "no".
    """

    __slots__ = [
        '_playback_volume',
        '_microphone_enabled',
        '_sound_alert_volume',
        '_sound_tick_volume',
        '_voice_engines',
    ]

    attribute_name_map = {
        'playback_volume': 'playbackVolume',
        'playbackVolume': 'playback_volume',
        'microphone_enabled': 'microphoneEnabled',
        'microphoneEnabled': 'microphone_enabled',
        'sound_alert_volume': 'soundAlertVolume',
        'soundAlertVolume': 'sound_alert_volume',
        'sound_tick_volume': 'soundTickVolume',
        'soundTickVolume': 'sound_tick_volume',
        'voice_engines': 'voiceEngines',
        'voiceEngines': 'voice_engines',
    }

    attribute_type_map = {
        'playback_volume': 'int',
        'microphone_enabled': 'bool',
        'sound_alert_volume': 'int',
        'sound_tick_volume': 'int',
        'voice_engines': 'List[VoiceEngine]',
    }

    def __init__(
        self,
        playback_volume=None,
        microphone_enabled=None,
        sound_alert_volume=None,
        sound_tick_volume=None,
        voice_engines=None,
    ):
        """
        Construct an Audio instance
        """
        self._playback_volume = playback_volume
        self._microphone_enabled = microphone_enabled
        self._sound_alert_volume = sound_alert_volume
        self._sound_tick_volume = sound_tick_volume
        self._voice_engines = voice_engines

    @property
    def playback_volume(self):
        """
        Gets the playback_volume attribute of this Audio instance.

        :return: The value of the playback_volume attribute of this
        Audio instance.
        :rtype: int
        """

        return self._playback_volume

    @playback_volume.setter
    def playback_volume(self, playback_volume):
        """
        Sets the playback_volume attribute of this Audio instance.

        :param playback_volume: The playback_volume value to set for the
        playback_volume attribute of this Audio instance.
        :type: int
        """

        self._playback_volume = playback_volume

    @property
    def microphone_enabled(self):
        """
        Gets the microphone_enabled attribute of this Audio instance.

        :return: The value of the microphone_enabled attribute of this
        Audio instance.
        :rtype: bool
        """

        return self._microphone_enabled

    @microphone_enabled.setter
    def microphone_enabled(self, microphone_enabled):
        """
        Sets the microphone_enabled attribute of this Audio instance.

        :param microphone_enabled: The microphone_enabled value to set
        for the microphone_enabled attribute of this Audio instance.
        :type: bool
        """

        self._microphone_enabled = microphone_enabled

    @property
    def sound_alert_volume(self):
        """
        Gets the sound_alert_volume attribute of this Audio instance.

        :return: The value of the sound_alert_volume attribute of this
        Audio instance.
        :rtype: int
        """

        return self._sound_alert_volume

    @sound_alert_volume.setter
    def sound_alert_volume(self, sound_alert_volume):
        """
        Sets the sound_alert_volume attribute of this Audio instance.

        :param sound_alert_volume: The sound_alert_volume value to set
        for the sound_alert_volume attribute of this Audio instance.
        :type: int
        """

        self._sound_alert_volume = sound_alert_volume

    @property
    def sound_tick_volume(self):
        """
        Gets the sound_tick_volume attribute of this Audio instance.

        :return: The value of the sound_tick_volume attribute of this
        Audio instance.
        :rtype: int
        """

        return self._sound_tick_volume

    @sound_tick_volume.setter
    def sound_tick_volume(self, sound_tick_volume):
        """
        Sets the sound_tick_volume attribute of this Audio instance.

        :param sound_tick_volume: The sound_tick_volume value to set for
        the sound_tick_volume attribute of this Audio instance.
        :type: int
        """

        self._sound_tick_volume = sound_tick_volume

    @property
    def voice_engines(self):
        """
        Gets the voice_engines attribute of this Audio instance.

        :return: The value of the voice_engines attribute of this Audio
        instance.
        :rtype: List[VoiceEngine]
        """

        return self._voice_engines

This module is home to the Audio class This class has been auto generated by scraping     https://www.ecobee.com/home/developer/api/documentation/v1/objects/Audio.shtml      Attribute names have been generated by converting ecobee property     names from camelCase to snake_case.      A getter property has been generated for each attribute.     A setter property has been generated for each attribute whose value     of READONLY is "no".      An __init__ argument without a default value has been generated if     the value of REQUIRED is "yes".     An __init__ argument with a default value of None has been generated     if the value of REQUIRED is "no". Construct an Audio instance Gets the playback_volume attribute of this Audio instance.          :return: The value of the playback_volume attribute of this         Audio instance.         :rtype: int Sets the playback_volume attribute of this Audio instance.          :param playback_volume: The playback_volume value to set for the         playback_volume attribute of this Audio instance.         :type: int Gets the microphone_enabled attribute of this Audio instance.          :return: The value of the microphone_enabled attribute of this         Audio instance.         :rtype: bool Sets the microphone_enabled attribute of this Audio instance.          :param microphone_enabled: The microphone_enabled value to set         for the microphone_enabled attribute of this Audio instance.         :type: bool Gets the sound_alert_volume attribute of this Audio instance.          :return: The value of the sound_alert_volume attribute of this         Audio instance.         :rtype: int Sets the sound_alert_volume attribute of this Audio instance.          :param sound_alert_volume: The sound_alert_volume value to set         for the sound_alert_volume attribute of this Audio instance.         :type: int Gets the sound_tick_volume attribute of this Audio instance.          :return: The value of the sound_tick_volume attribute of this         Audio instance.         :rtype: int Sets the sound_tick_volume attribute of this Audio instance.          :param sound_tick_volume: The sound_tick_volume value to set for         the sound_tick_volume attribute of this Audio instance.         :type: int Gets the voice_engines attribute of this Audio instance.          :return: The value of the voice_engines attribute of this Audio         instance.         :rtype: List[VoiceEngine]