# coding: utf-8

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

from typing import List, Dict  # noqa: F401

from swagger_server.models.base_model_ import Model
from swagger_server.models.day_offer_vector_euro_m_wh import DayOfferVectorEuroMWh  # noqa: F401,E501
from swagger_server.models.stacked_revenues_result_qlm_ps import StackedRevenuesResultQLMPs  # noqa: F401,E501
from swagger_server import util


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

    Do not edit the class manually.
    """
    def __init__(self, storage_unit: str=None, day_ahead_market_offer: DayOfferVectorEuroMWh=None, reserve_market_offer_up: DayOfferVectorEuroMWh=None, reserve_market_offer_down: DayOfferVectorEuroMWh=None, d_lm_ps: DayOfferVectorEuroMWh=None, q_lm_ps: StackedRevenuesResultQLMPs=None, balancing_market_offer_up: DayOfferVectorEuroMWh=None, balancing_market_offer_down: DayOfferVectorEuroMWh=None):  # noqa: E501
        """StackedRevenuesResultFlexOffer - a model defined in Swagger

        :param storage_unit: The storage_unit of this StackedRevenuesResultFlexOffer.  # noqa: E501
        :type storage_unit: str
        :param day_ahead_market_offer: The day_ahead_market_offer of this StackedRevenuesResultFlexOffer.  # noqa: E501
        :type day_ahead_market_offer: DayOfferVectorEuroMWh
        :param reserve_market_offer_up: The reserve_market_offer_up of this StackedRevenuesResultFlexOffer.  # noqa: E501
        :type reserve_market_offer_up: DayOfferVectorEuroMWh
        :param reserve_market_offer_down: The reserve_market_offer_down of this StackedRevenuesResultFlexOffer.  # noqa: E501
        :type reserve_market_offer_down: DayOfferVectorEuroMWh
        :param d_lm_ps: The d_lm_ps of this StackedRevenuesResultFlexOffer.  # noqa: E501
        :type d_lm_ps: DayOfferVectorEuroMWh
        :param q_lm_ps: The q_lm_ps of this StackedRevenuesResultFlexOffer.  # noqa: E501
        :type q_lm_ps: StackedRevenuesResultQLMPs
        :param balancing_market_offer_up: The balancing_market_offer_up of this StackedRevenuesResultFlexOffer.  # noqa: E501
        :type balancing_market_offer_up: DayOfferVectorEuroMWh
        :param balancing_market_offer_down: The balancing_market_offer_down of this StackedRevenuesResultFlexOffer.  # noqa: E501
        :type balancing_market_offer_down: DayOfferVectorEuroMWh
        """
        self.swagger_types = {
            'storage_unit': str,
            'day_ahead_market_offer': DayOfferVectorEuroMWh,
            'reserve_market_offer_up': DayOfferVectorEuroMWh,
            'reserve_market_offer_down': DayOfferVectorEuroMWh,
            'd_lm_ps': DayOfferVectorEuroMWh,
            'q_lm_ps': StackedRevenuesResultQLMPs,
            'balancing_market_offer_up': DayOfferVectorEuroMWh,
            'balancing_market_offer_down': DayOfferVectorEuroMWh
        }

        self.attribute_map = {
            'storage_unit': 'storage_unit',
            'day_ahead_market_offer': 'day_ahead_market_offer',
            'reserve_market_offer_up': 'reserve_market_offer_up',
            'reserve_market_offer_down': 'reserve_market_offer_down',
            'd_lm_ps': 'd-LMPs',
            'q_lm_ps': 'q-LMPs',
            'balancing_market_offer_up': 'balancing_market_offer_up',
            'balancing_market_offer_down': 'balancing_market_offer_down'
        }
        self._storage_unit = storage_unit
        self._day_ahead_market_offer = day_ahead_market_offer
        self._reserve_market_offer_up = reserve_market_offer_up
        self._reserve_market_offer_down = reserve_market_offer_down
        self._d_lm_ps = d_lm_ps
        self._q_lm_ps = q_lm_ps
        self._balancing_market_offer_up = balancing_market_offer_up
        self._balancing_market_offer_down = balancing_market_offer_down

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

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

    @property
    def storage_unit(self) -> str:
        """Gets the storage_unit of this StackedRevenuesResultFlexOffer.


        :return: The storage_unit of this StackedRevenuesResultFlexOffer.
        :rtype: str
        """
        return self._storage_unit

    @storage_unit.setter
    def storage_unit(self, storage_unit: str):
        """Sets the storage_unit of this StackedRevenuesResultFlexOffer.


        :param storage_unit: The storage_unit of this StackedRevenuesResultFlexOffer.
        :type storage_unit: str
        """

        self._storage_unit = storage_unit

    @property
    def day_ahead_market_offer(self) -> DayOfferVectorEuroMWh:
        """Gets the day_ahead_market_offer of this StackedRevenuesResultFlexOffer.


        :return: The day_ahead_market_offer of this StackedRevenuesResultFlexOffer.
        :rtype: DayOfferVectorEuroMWh
        """
        return self._day_ahead_market_offer

    @day_ahead_market_offer.setter
    def day_ahead_market_offer(self, day_ahead_market_offer: DayOfferVectorEuroMWh):
        """Sets the day_ahead_market_offer of this StackedRevenuesResultFlexOffer.


        :param day_ahead_market_offer: The day_ahead_market_offer of this StackedRevenuesResultFlexOffer.
        :type day_ahead_market_offer: DayOfferVectorEuroMWh
        """

        self._day_ahead_market_offer = day_ahead_market_offer

    @property
    def reserve_market_offer_up(self) -> DayOfferVectorEuroMWh:
        """Gets the reserve_market_offer_up of this StackedRevenuesResultFlexOffer.


        :return: The reserve_market_offer_up of this StackedRevenuesResultFlexOffer.
        :rtype: DayOfferVectorEuroMWh
        """
        return self._reserve_market_offer_up

    @reserve_market_offer_up.setter
    def reserve_market_offer_up(self, reserve_market_offer_up: DayOfferVectorEuroMWh):
        """Sets the reserve_market_offer_up of this StackedRevenuesResultFlexOffer.


        :param reserve_market_offer_up: The reserve_market_offer_up of this StackedRevenuesResultFlexOffer.
        :type reserve_market_offer_up: DayOfferVectorEuroMWh
        """

        self._reserve_market_offer_up = reserve_market_offer_up

    @property
    def reserve_market_offer_down(self) -> DayOfferVectorEuroMWh:
        """Gets the reserve_market_offer_down of this StackedRevenuesResultFlexOffer.


        :return: The reserve_market_offer_down of this StackedRevenuesResultFlexOffer.
        :rtype: DayOfferVectorEuroMWh
        """
        return self._reserve_market_offer_down

    @reserve_market_offer_down.setter
    def reserve_market_offer_down(self, reserve_market_offer_down: DayOfferVectorEuroMWh):
        """Sets the reserve_market_offer_down of this StackedRevenuesResultFlexOffer.


        :param reserve_market_offer_down: The reserve_market_offer_down of this StackedRevenuesResultFlexOffer.
        :type reserve_market_offer_down: DayOfferVectorEuroMWh
        """

        self._reserve_market_offer_down = reserve_market_offer_down

    @property
    def d_lm_ps(self) -> DayOfferVectorEuroMWh:
        """Gets the d_lm_ps of this StackedRevenuesResultFlexOffer.


        :return: The d_lm_ps of this StackedRevenuesResultFlexOffer.
        :rtype: DayOfferVectorEuroMWh
        """
        return self._d_lm_ps

    @d_lm_ps.setter
    def d_lm_ps(self, d_lm_ps: DayOfferVectorEuroMWh):
        """Sets the d_lm_ps of this StackedRevenuesResultFlexOffer.


        :param d_lm_ps: The d_lm_ps of this StackedRevenuesResultFlexOffer.
        :type d_lm_ps: DayOfferVectorEuroMWh
        """

        self._d_lm_ps = d_lm_ps

    @property
    def q_lm_ps(self) -> StackedRevenuesResultQLMPs:
        """Gets the q_lm_ps of this StackedRevenuesResultFlexOffer.


        :return: The q_lm_ps of this StackedRevenuesResultFlexOffer.
        :rtype: StackedRevenuesResultQLMPs
        """
        return self._q_lm_ps

    @q_lm_ps.setter
    def q_lm_ps(self, q_lm_ps: StackedRevenuesResultQLMPs):
        """Sets the q_lm_ps of this StackedRevenuesResultFlexOffer.


        :param q_lm_ps: The q_lm_ps of this StackedRevenuesResultFlexOffer.
        :type q_lm_ps: StackedRevenuesResultQLMPs
        """

        self._q_lm_ps = q_lm_ps

    @property
    def balancing_market_offer_up(self) -> DayOfferVectorEuroMWh:
        """Gets the balancing_market_offer_up of this StackedRevenuesResultFlexOffer.


        :return: The balancing_market_offer_up of this StackedRevenuesResultFlexOffer.
        :rtype: DayOfferVectorEuroMWh
        """
        return self._balancing_market_offer_up

    @balancing_market_offer_up.setter
    def balancing_market_offer_up(self, balancing_market_offer_up: DayOfferVectorEuroMWh):
        """Sets the balancing_market_offer_up of this StackedRevenuesResultFlexOffer.


        :param balancing_market_offer_up: The balancing_market_offer_up of this StackedRevenuesResultFlexOffer.
        :type balancing_market_offer_up: DayOfferVectorEuroMWh
        """

        self._balancing_market_offer_up = balancing_market_offer_up

    @property
    def balancing_market_offer_down(self) -> DayOfferVectorEuroMWh:
        """Gets the balancing_market_offer_down of this StackedRevenuesResultFlexOffer.


        :return: The balancing_market_offer_down of this StackedRevenuesResultFlexOffer.
        :rtype: DayOfferVectorEuroMWh
        """
        return self._balancing_market_offer_down

    @balancing_market_offer_down.setter
    def balancing_market_offer_down(self, balancing_market_offer_down: DayOfferVectorEuroMWh):
        """Sets the balancing_market_offer_down of this StackedRevenuesResultFlexOffer.


        :param balancing_market_offer_down: The balancing_market_offer_down of this StackedRevenuesResultFlexOffer.
        :type balancing_market_offer_down: DayOfferVectorEuroMWh
        """

        self._balancing_market_offer_down = balancing_market_offer_down
