# coding: utf-8

"""
    MailSlurp API

    MailSlurp is an API for sending and receiving emails and SMS from dynamically allocated email addresses and phone numbers. It's designed for developers and QA teams to test applications, process inbound emails, send templated notifications, attachments, and more.  ## Resources  - [Homepage](https://www.mailslurp.com) - Get an [API KEY](https://app.mailslurp.com/sign-up/) - Generated [SDK Clients](https://docs.mailslurp.com/) - [Examples](https://github.com/mailslurp/examples) repository  # noqa: E501

    The version of the OpenAPI document: 6.5.2
    Contact: contact@mailslurp.dev
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from mailslurp_client.configuration import Configuration


class EmailIntelligenceOptions(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 = {
        'targets': 'list[str]',
        'page': 'int',
        'size': 'int',
        'ignore_cache': 'bool',
        'include_email_validation': 'bool',
        'tests': 'EmailIntelligenceTestsOptions'
    }

    attribute_map = {
        'targets': 'targets',
        'page': 'page',
        'size': 'size',
        'ignore_cache': 'ignoreCache',
        'include_email_validation': 'includeEmailValidation',
        'tests': 'tests'
    }

    def __init__(self, targets=None, page=None, size=None, ignore_cache=None, include_email_validation=None, tests=None, local_vars_configuration=None):  # noqa: E501
        """EmailIntelligenceOptions - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._targets = None
        self._page = None
        self._size = None
        self._ignore_cache = None
        self._include_email_validation = None
        self._tests = None
        self.discriminator = None

        self.targets = targets
        self.page = page
        self.size = size
        self.ignore_cache = ignore_cache
        self.include_email_validation = include_email_validation
        self.tests = tests

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

        Email addresses or domains to score.  # noqa: E501

        :return: The targets of this EmailIntelligenceOptions.  # noqa: E501
        :rtype: list[str]
        """
        return self._targets

    @targets.setter
    def targets(self, targets):
        """Sets the targets of this EmailIntelligenceOptions.

        Email addresses or domains to score.  # noqa: E501

        :param targets: The targets of this EmailIntelligenceOptions.  # noqa: E501
        :type: list[str]
        """
        if self.local_vars_configuration.client_side_validation and targets is None:  # noqa: E501
            raise ValueError("Invalid value for `targets`, must not be `None`")  # noqa: E501

        self._targets = targets

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

        Zero-based page index for processing a subset of the target list.  # noqa: E501

        :return: The page of this EmailIntelligenceOptions.  # noqa: E501
        :rtype: int
        """
        return self._page

    @page.setter
    def page(self, page):
        """Sets the page of this EmailIntelligenceOptions.

        Zero-based page index for processing a subset of the target list.  # noqa: E501

        :param page: The page of this EmailIntelligenceOptions.  # noqa: E501
        :type: int
        """
        if (self.local_vars_configuration.client_side_validation and
                page is not None and page < 0):  # noqa: E501
            raise ValueError("Invalid value for `page`, must be a value greater than or equal to `0`")  # noqa: E501

        self._page = page

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

        Page size for processing a subset of the target list.  # noqa: E501

        :return: The size of this EmailIntelligenceOptions.  # noqa: E501
        :rtype: int
        """
        return self._size

    @size.setter
    def size(self, size):
        """Sets the size of this EmailIntelligenceOptions.

        Page size for processing a subset of the target list.  # noqa: E501

        :param size: The size of this EmailIntelligenceOptions.  # noqa: E501
        :type: int
        """
        if (self.local_vars_configuration.client_side_validation and
                size is not None and size > 500):  # noqa: E501
            raise ValueError("Invalid value for `size`, must be a value less than or equal to `500`")  # noqa: E501
        if (self.local_vars_configuration.client_side_validation and
                size is not None and size < 1):  # noqa: E501
            raise ValueError("Invalid value for `size`, must be a value greater than or equal to `1`")  # noqa: E501

        self._size = size

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

        Ignore cached intelligence values and force recomputation.  # noqa: E501

        :return: The ignore_cache of this EmailIntelligenceOptions.  # noqa: E501
        :rtype: bool
        """
        return self._ignore_cache

    @ignore_cache.setter
    def ignore_cache(self, ignore_cache):
        """Sets the ignore_cache of this EmailIntelligenceOptions.

        Ignore cached intelligence values and force recomputation.  # noqa: E501

        :param ignore_cache: The ignore_cache of this EmailIntelligenceOptions.  # noqa: E501
        :type: bool
        """

        self._ignore_cache = ignore_cache

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

        Also run mailbox safety verification using the existing verification client for email inputs.  # noqa: E501

        :return: The include_email_validation of this EmailIntelligenceOptions.  # noqa: E501
        :rtype: bool
        """
        return self._include_email_validation

    @include_email_validation.setter
    def include_email_validation(self, include_email_validation):
        """Sets the include_email_validation of this EmailIntelligenceOptions.

        Also run mailbox safety verification using the existing verification client for email inputs.  # noqa: E501

        :param include_email_validation: The include_email_validation of this EmailIntelligenceOptions.  # noqa: E501
        :type: bool
        """

        self._include_email_validation = include_email_validation

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


        :return: The tests of this EmailIntelligenceOptions.  # noqa: E501
        :rtype: EmailIntelligenceTestsOptions
        """
        return self._tests

    @tests.setter
    def tests(self, tests):
        """Sets the tests of this EmailIntelligenceOptions.


        :param tests: The tests of this EmailIntelligenceOptions.  # noqa: E501
        :type: EmailIntelligenceTestsOptions
        """

        self._tests = tests

    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, EmailIntelligenceOptions):
            return False

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
