# coding: utf-8

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

from typing import List, Dict  # noqa: F401

from opera.api.openapi.models.base_model_ import Model
from opera.api.openapi import util


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

    Do not edit the class manually.
    """

    def __init__(self, added=None, changed=None, deleted=None):  # noqa: E501
        """Diff - a model defined in OpenAPI

        :param added: The added of this Diff.  # noqa: E501
        :type added: List[str]
        :param changed: The changed of this Diff.  # noqa: E501
        :type changed: object
        :param deleted: The deleted of this Diff.  # noqa: E501
        :type deleted: List[str]
        """
        self.openapi_types = {
            'added': List[str],
            'changed': object,
            'deleted': List[str]
        }

        self.attribute_map = {
            'added': 'added',
            'changed': 'changed',
            'deleted': 'deleted'
        }

        self._added = added
        self._changed = changed
        self._deleted = deleted

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

        :param dikt: A dict.
        :type: dict
        :return: The Diff of this Diff.  # noqa: E501
        :rtype: Diff
        """
        return util.deserialize_model(dikt, cls)

    @property
    def added(self):
        """Gets the added of this Diff.


        :return: The added of this Diff.
        :rtype: List[str]
        """
        return self._added

    @added.setter
    def added(self, added):
        """Sets the added of this Diff.


        :param added: The added of this Diff.
        :type added: List[str]
        """
        if added is None:
            raise ValueError("Invalid value for `added`, must not be `None`")  # noqa: E501

        self._added = added

    @property
    def changed(self):
        """Gets the changed of this Diff.


        :return: The changed of this Diff.
        :rtype: object
        """
        return self._changed

    @changed.setter
    def changed(self, changed):
        """Sets the changed of this Diff.


        :param changed: The changed of this Diff.
        :type changed: object
        """
        if changed is None:
            raise ValueError("Invalid value for `changed`, must not be `None`")  # noqa: E501

        self._changed = changed

    @property
    def deleted(self):
        """Gets the deleted of this Diff.


        :return: The deleted of this Diff.
        :rtype: List[str]
        """
        return self._deleted

    @deleted.setter
    def deleted(self, deleted):
        """Sets the deleted of this Diff.


        :param deleted: The deleted of this Diff.
        :type deleted: List[str]
        """
        if deleted is None:
            raise ValueError("Invalid value for `deleted`, must not be `None`")  # noqa: E501

        self._deleted = deleted
