# coding: utf-8

"""
    Refinery Calc API Documentation

    Integrate the powerful Refinery Calc Engine into your process using this API.  # noqa: E501

    OpenAPI spec version: 1.0
    Contact: support@refinerycalc.com.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class OutputTypes(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_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.
    """
    swagger_types = {
        'balance': 'list[OutputDetails]',
        'complexity': 'list[OutputDetails]',
        'constraints': 'list[OutputDetails]',
        'crude_names': 'list[OutputDetails]',
        'crude_percent': 'list[OutputDetails]',
        'crude_pricing': 'list[OutputDetails]',
        'crude_quality': 'list[OutputDetails]',
        'crudes_and_feeds': 'list[OutputDetails]',
        'delete_category': 'list[OutputDetails]',
        'economics': 'list[OutputDetails]',
        'end_points_f': 'list[OutputDetails]',
        'expense_factors': 'list[OutputDetails]',
        'fcc_hydrk_conv': 'list[OutputDetails]',
        'feeds_pricing': 'list[OutputDetails]',
        'gasoline_blending': 'list[OutputDetails]',
        'general': 'list[OutputDetails]',
        'hydrogen': 'list[OutputDetails]',
        'product_pricing': 'list[OutputDetails]',
        'products': 'list[OutputDetails]',
        'refinery_layout_svg': 'list[OutputDetails]',
        'sustainability': 'list[OutputDetails]',
        'unit_balance': 'list[OutputDetails]'
    }

    attribute_map = {
        'balance': 'balance',
        'complexity': 'complexity',
        'constraints': 'constraints',
        'crude_names': 'crudeNames',
        'crude_percent': 'crudePercent',
        'crude_pricing': 'crudePricing',
        'crude_quality': 'crudeQuality',
        'crudes_and_feeds': 'crudesAndFeeds',
        'delete_category': 'deleteCategory',
        'economics': 'economics',
        'end_points_f': 'endPointsF',
        'expense_factors': 'expenseFactors',
        'fcc_hydrk_conv': 'fccHydrkConv',
        'feeds_pricing': 'feedsPricing',
        'gasoline_blending': 'gasolineBlending',
        'general': 'general',
        'hydrogen': 'hydrogen',
        'product_pricing': 'productPricing',
        'products': 'products',
        'refinery_layout_svg': 'refineryLayoutSVG',
        'sustainability': 'sustainability',
        'unit_balance': 'unitBalance'
    }

    def __init__(self, balance=None, complexity=None, constraints=None, crude_names=None, crude_percent=None, crude_pricing=None, crude_quality=None, crudes_and_feeds=None, delete_category=None, economics=None, end_points_f=None, expense_factors=None, fcc_hydrk_conv=None, feeds_pricing=None, gasoline_blending=None, general=None, hydrogen=None, product_pricing=None, products=None, refinery_layout_svg=None, sustainability=None, unit_balance=None):  # noqa: E501
        """OutputTypes - a model defined in Swagger"""  # noqa: E501
        self._balance = None
        self._complexity = None
        self._constraints = None
        self._crude_names = None
        self._crude_percent = None
        self._crude_pricing = None
        self._crude_quality = None
        self._crudes_and_feeds = None
        self._delete_category = None
        self._economics = None
        self._end_points_f = None
        self._expense_factors = None
        self._fcc_hydrk_conv = None
        self._feeds_pricing = None
        self._gasoline_blending = None
        self._general = None
        self._hydrogen = None
        self._product_pricing = None
        self._products = None
        self._refinery_layout_svg = None
        self._sustainability = None
        self._unit_balance = None
        self.discriminator = None
        if balance is not None:
            self.balance = balance
        if complexity is not None:
            self.complexity = complexity
        if constraints is not None:
            self.constraints = constraints
        if crude_names is not None:
            self.crude_names = crude_names
        if crude_percent is not None:
            self.crude_percent = crude_percent
        if crude_pricing is not None:
            self.crude_pricing = crude_pricing
        if crude_quality is not None:
            self.crude_quality = crude_quality
        if crudes_and_feeds is not None:
            self.crudes_and_feeds = crudes_and_feeds
        if delete_category is not None:
            self.delete_category = delete_category
        if economics is not None:
            self.economics = economics
        if end_points_f is not None:
            self.end_points_f = end_points_f
        if expense_factors is not None:
            self.expense_factors = expense_factors
        if fcc_hydrk_conv is not None:
            self.fcc_hydrk_conv = fcc_hydrk_conv
        if feeds_pricing is not None:
            self.feeds_pricing = feeds_pricing
        if gasoline_blending is not None:
            self.gasoline_blending = gasoline_blending
        if general is not None:
            self.general = general
        if hydrogen is not None:
            self.hydrogen = hydrogen
        if product_pricing is not None:
            self.product_pricing = product_pricing
        if products is not None:
            self.products = products
        if refinery_layout_svg is not None:
            self.refinery_layout_svg = refinery_layout_svg
        if sustainability is not None:
            self.sustainability = sustainability
        if unit_balance is not None:
            self.unit_balance = unit_balance

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


        :return: The balance of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._balance

    @balance.setter
    def balance(self, balance):
        """Sets the balance of this OutputTypes.


        :param balance: The balance of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._balance = balance

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


        :return: The complexity of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._complexity

    @complexity.setter
    def complexity(self, complexity):
        """Sets the complexity of this OutputTypes.


        :param complexity: The complexity of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._complexity = complexity

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


        :return: The constraints of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._constraints

    @constraints.setter
    def constraints(self, constraints):
        """Sets the constraints of this OutputTypes.


        :param constraints: The constraints of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._constraints = constraints

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


        :return: The crude_names of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._crude_names

    @crude_names.setter
    def crude_names(self, crude_names):
        """Sets the crude_names of this OutputTypes.


        :param crude_names: The crude_names of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._crude_names = crude_names

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


        :return: The crude_percent of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._crude_percent

    @crude_percent.setter
    def crude_percent(self, crude_percent):
        """Sets the crude_percent of this OutputTypes.


        :param crude_percent: The crude_percent of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._crude_percent = crude_percent

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


        :return: The crude_pricing of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._crude_pricing

    @crude_pricing.setter
    def crude_pricing(self, crude_pricing):
        """Sets the crude_pricing of this OutputTypes.


        :param crude_pricing: The crude_pricing of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._crude_pricing = crude_pricing

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


        :return: The crude_quality of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._crude_quality

    @crude_quality.setter
    def crude_quality(self, crude_quality):
        """Sets the crude_quality of this OutputTypes.


        :param crude_quality: The crude_quality of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._crude_quality = crude_quality

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


        :return: The crudes_and_feeds of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._crudes_and_feeds

    @crudes_and_feeds.setter
    def crudes_and_feeds(self, crudes_and_feeds):
        """Sets the crudes_and_feeds of this OutputTypes.


        :param crudes_and_feeds: The crudes_and_feeds of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._crudes_and_feeds = crudes_and_feeds

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


        :return: The delete_category of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._delete_category

    @delete_category.setter
    def delete_category(self, delete_category):
        """Sets the delete_category of this OutputTypes.


        :param delete_category: The delete_category of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._delete_category = delete_category

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


        :return: The economics of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._economics

    @economics.setter
    def economics(self, economics):
        """Sets the economics of this OutputTypes.


        :param economics: The economics of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._economics = economics

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


        :return: The end_points_f of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._end_points_f

    @end_points_f.setter
    def end_points_f(self, end_points_f):
        """Sets the end_points_f of this OutputTypes.


        :param end_points_f: The end_points_f of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._end_points_f = end_points_f

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


        :return: The expense_factors of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._expense_factors

    @expense_factors.setter
    def expense_factors(self, expense_factors):
        """Sets the expense_factors of this OutputTypes.


        :param expense_factors: The expense_factors of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._expense_factors = expense_factors

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


        :return: The fcc_hydrk_conv of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._fcc_hydrk_conv

    @fcc_hydrk_conv.setter
    def fcc_hydrk_conv(self, fcc_hydrk_conv):
        """Sets the fcc_hydrk_conv of this OutputTypes.


        :param fcc_hydrk_conv: The fcc_hydrk_conv of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._fcc_hydrk_conv = fcc_hydrk_conv

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


        :return: The feeds_pricing of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._feeds_pricing

    @feeds_pricing.setter
    def feeds_pricing(self, feeds_pricing):
        """Sets the feeds_pricing of this OutputTypes.


        :param feeds_pricing: The feeds_pricing of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._feeds_pricing = feeds_pricing

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


        :return: The gasoline_blending of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._gasoline_blending

    @gasoline_blending.setter
    def gasoline_blending(self, gasoline_blending):
        """Sets the gasoline_blending of this OutputTypes.


        :param gasoline_blending: The gasoline_blending of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._gasoline_blending = gasoline_blending

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


        :return: The general of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._general

    @general.setter
    def general(self, general):
        """Sets the general of this OutputTypes.


        :param general: The general of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._general = general

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


        :return: The hydrogen of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._hydrogen

    @hydrogen.setter
    def hydrogen(self, hydrogen):
        """Sets the hydrogen of this OutputTypes.


        :param hydrogen: The hydrogen of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._hydrogen = hydrogen

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


        :return: The product_pricing of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._product_pricing

    @product_pricing.setter
    def product_pricing(self, product_pricing):
        """Sets the product_pricing of this OutputTypes.


        :param product_pricing: The product_pricing of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._product_pricing = product_pricing

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


        :return: The products of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._products

    @products.setter
    def products(self, products):
        """Sets the products of this OutputTypes.


        :param products: The products of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._products = products

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


        :return: The refinery_layout_svg of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._refinery_layout_svg

    @refinery_layout_svg.setter
    def refinery_layout_svg(self, refinery_layout_svg):
        """Sets the refinery_layout_svg of this OutputTypes.


        :param refinery_layout_svg: The refinery_layout_svg of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._refinery_layout_svg = refinery_layout_svg

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


        :return: The sustainability of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._sustainability

    @sustainability.setter
    def sustainability(self, sustainability):
        """Sets the sustainability of this OutputTypes.


        :param sustainability: The sustainability of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._sustainability = sustainability

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


        :return: The unit_balance of this OutputTypes.  # noqa: E501
        :rtype: list[OutputDetails]
        """
        return self._unit_balance

    @unit_balance.setter
    def unit_balance(self, unit_balance):
        """Sets the unit_balance of this OutputTypes.


        :param unit_balance: The unit_balance of this OutputTypes.  # noqa: E501
        :type: list[OutputDetails]
        """

        self._unit_balance = unit_balance

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

        for attr, _ in six.iteritems(self.swagger_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
        if issubclass(OutputTypes, dict):
            for key, value in self.items():
                result[key] = 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, OutputTypes):
            return False

        return self.__dict__ == other.__dict__

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