# coding: utf-8

"""
    Vidispine API

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    The version of the OpenAPI document: 5.x
    Contact: info@vidispine.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six
from . import *

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

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    openapi_types = {
        'object_tracking': 'ComplexJobOTIFType',
        'time_base': 'TimeBaseType',
        'codec_tag': 'int',
        'codec_name': 'str',
        'setting': 'list[KeyValuePairType]',
        'edl': 'EDLType',
        'codec_tag_string': 'str',
        'start': 'TimeCodeType',
        'codec': 'str',
        'bitrate': 'int',
        'id': 'list[int]',
        'preset': 'list[str]',
        'metadata': 'list[KeyValuePairType]',
        'thumbnail_uri': 'list[str]'
    }

    attribute_map = {
        'object_tracking': 'objectTracking',
        'time_base': 'timeBase',
        'codec_tag': 'codecTag',
        'codec_name': 'codecName',
        'setting': 'setting',
        'edl': 'edl',
        'codec_tag_string': 'codecTagString',
        'start': 'start',
        'codec': 'codec',
        'bitrate': 'bitrate',
        'id': 'id',
        'preset': 'preset',
        'metadata': 'metadata',
        'thumbnail_uri': 'thumbnailUri'
    }

    def __init__(self, object_tracking=None, time_base=None, codec_tag=None, codec_name=None, setting=None, edl=None, codec_tag_string=None, start=None, codec=None, bitrate=None, id=None, preset=None, metadata=None, thumbnail_uri=None):  # noqa: E501
        """ComplexJobAudioOutputType - a model defined in OpenAPI"""  # noqa: E501

        self._object_tracking = None
        self._time_base = None
        self._codec_tag = None
        self._codec_name = None
        self._setting = None
        self._edl = None
        self._codec_tag_string = None
        self._start = None
        self._codec = None
        self._bitrate = None
        self._id = None
        self._preset = None
        self._metadata = None
        self._thumbnail_uri = None
        self.discriminator = None

        if object_tracking is not None:
            self.object_tracking = object_tracking
        if time_base is not None:
            self.time_base = time_base
        if codec_tag is not None:
            self.codec_tag = codec_tag
        if codec_name is not None:
            self.codec_name = codec_name
        if setting is not None:
            self.setting = setting
        if edl is not None:
            self.edl = edl
        if codec_tag_string is not None:
            self.codec_tag_string = codec_tag_string
        if start is not None:
            self.start = start
        if codec is not None:
            self.codec = codec
        if bitrate is not None:
            self.bitrate = bitrate
        if id is not None:
            self.id = id
        if preset is not None:
            self.preset = preset
        if metadata is not None:
            self.metadata = metadata
        if thumbnail_uri is not None:
            self.thumbnail_uri = thumbnail_uri

    @property
    def object_tracking(self):
        """Gets the object_tracking of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The object_tracking of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: ComplexJobOTIFType
        """
        return self._object_tracking

    @object_tracking.setter
    def object_tracking(self, object_tracking):
        """Sets the object_tracking of this ComplexJobAudioOutputType.


        :param object_tracking: The object_tracking of this ComplexJobAudioOutputType.  # noqa: E501
        :type: ComplexJobOTIFType
        """

        self._object_tracking = object_tracking

    @property
    def time_base(self):
        """Gets the time_base of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The time_base of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: TimeBaseType
        """
        return self._time_base

    @time_base.setter
    def time_base(self, time_base):
        """Sets the time_base of this ComplexJobAudioOutputType.


        :param time_base: The time_base of this ComplexJobAudioOutputType.  # noqa: E501
        :type: TimeBaseType
        """

        self._time_base = time_base

    @property
    def codec_tag(self):
        """Gets the codec_tag of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The codec_tag of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: int
        """
        return self._codec_tag

    @codec_tag.setter
    def codec_tag(self, codec_tag):
        """Sets the codec_tag of this ComplexJobAudioOutputType.


        :param codec_tag: The codec_tag of this ComplexJobAudioOutputType.  # noqa: E501
        :type: int
        """

        self._codec_tag = codec_tag

    @property
    def codec_name(self):
        """Gets the codec_name of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The codec_name of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: str
        """
        return self._codec_name

    @codec_name.setter
    def codec_name(self, codec_name):
        """Sets the codec_name of this ComplexJobAudioOutputType.


        :param codec_name: The codec_name of this ComplexJobAudioOutputType.  # noqa: E501
        :type: str
        """

        self._codec_name = codec_name

    @property
    def setting(self):
        """Gets the setting of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The setting of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: list[KeyValuePairType]
        """
        return self._setting

    @setting.setter
    def setting(self, setting):
        """Sets the setting of this ComplexJobAudioOutputType.


        :param setting: The setting of this ComplexJobAudioOutputType.  # noqa: E501
        :type: list[KeyValuePairType]
        """

        self._setting = setting

    @property
    def edl(self):
        """Gets the edl of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The edl of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: EDLType
        """
        return self._edl

    @edl.setter
    def edl(self, edl):
        """Sets the edl of this ComplexJobAudioOutputType.


        :param edl: The edl of this ComplexJobAudioOutputType.  # noqa: E501
        :type: EDLType
        """

        self._edl = edl

    @property
    def codec_tag_string(self):
        """Gets the codec_tag_string of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The codec_tag_string of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: str
        """
        return self._codec_tag_string

    @codec_tag_string.setter
    def codec_tag_string(self, codec_tag_string):
        """Sets the codec_tag_string of this ComplexJobAudioOutputType.


        :param codec_tag_string: The codec_tag_string of this ComplexJobAudioOutputType.  # noqa: E501
        :type: str
        """

        self._codec_tag_string = codec_tag_string

    @property
    def start(self):
        """Gets the start of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The start of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: TimeCodeType
        """
        return self._start

    @start.setter
    def start(self, start):
        """Sets the start of this ComplexJobAudioOutputType.


        :param start: The start of this ComplexJobAudioOutputType.  # noqa: E501
        :type: TimeCodeType
        """

        self._start = start

    @property
    def codec(self):
        """Gets the codec of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The codec of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: str
        """
        return self._codec

    @codec.setter
    def codec(self, codec):
        """Sets the codec of this ComplexJobAudioOutputType.


        :param codec: The codec of this ComplexJobAudioOutputType.  # noqa: E501
        :type: str
        """

        self._codec = codec

    @property
    def bitrate(self):
        """Gets the bitrate of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The bitrate of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: int
        """
        return self._bitrate

    @bitrate.setter
    def bitrate(self, bitrate):
        """Sets the bitrate of this ComplexJobAudioOutputType.


        :param bitrate: The bitrate of this ComplexJobAudioOutputType.  # noqa: E501
        :type: int
        """

        self._bitrate = bitrate

    @property
    def id(self):
        """Gets the id of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The id of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: list[int]
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this ComplexJobAudioOutputType.


        :param id: The id of this ComplexJobAudioOutputType.  # noqa: E501
        :type: list[int]
        """

        self._id = id

    @property
    def preset(self):
        """Gets the preset of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The preset of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: list[str]
        """
        return self._preset

    @preset.setter
    def preset(self, preset):
        """Sets the preset of this ComplexJobAudioOutputType.


        :param preset: The preset of this ComplexJobAudioOutputType.  # noqa: E501
        :type: list[str]
        """

        self._preset = preset

    @property
    def metadata(self):
        """Gets the metadata of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The metadata of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: list[KeyValuePairType]
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata):
        """Sets the metadata of this ComplexJobAudioOutputType.


        :param metadata: The metadata of this ComplexJobAudioOutputType.  # noqa: E501
        :type: list[KeyValuePairType]
        """

        self._metadata = metadata

    @property
    def thumbnail_uri(self):
        """Gets the thumbnail_uri of this ComplexJobAudioOutputType.  # noqa: E501


        :return: The thumbnail_uri of this ComplexJobAudioOutputType.  # noqa: E501
        :rtype: list[str]
        """
        return self._thumbnail_uri

    @thumbnail_uri.setter
    def thumbnail_uri(self, thumbnail_uri):
        """Sets the thumbnail_uri of this ComplexJobAudioOutputType.


        :param thumbnail_uri: The thumbnail_uri of this ComplexJobAudioOutputType.  # noqa: E501
        :type: list[str]
        """

        self._thumbnail_uri = thumbnail_uri

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, ComplexJobAudioOutputType):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
