# 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 import util


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

    Do not edit the class manually.
    """

    def __init__(self, account_number: str=None, amount: int=None, currency: str=None, available: bool=None):  # noqa: E501
        """FundsResponse - a model defined in Swagger

        :param account_number: The account_number of this FundsResponse.  # noqa: E501
        :type account_number: str
        :param amount: The amount of this FundsResponse.  # noqa: E501
        :type amount: int
        :param currency: The currency of this FundsResponse.  # noqa: E501
        :type currency: str
        :param available: The available of this FundsResponse.  # noqa: E501
        :type available: bool
        """
        self.swagger_types = {
            'account_number': str,
            'amount': int,
            'currency': str,
            'available': bool
        }

        self.attribute_map = {
            'account_number': 'accountNumber',
            'amount': 'amount',
            'currency': 'currency',
            'available': 'available'
        }

        self._account_number = account_number
        self._amount = amount
        self._currency = currency
        self._available = available

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

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

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

        The IBAN for which funds were checked  # noqa: E501

        :return: The account_number of this FundsResponse.
        :rtype: str
        """
        return self._account_number

    @account_number.setter
    def account_number(self, account_number: str):
        """Sets the account_number of this FundsResponse.

        The IBAN for which funds were checked  # noqa: E501

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

        self._account_number = account_number

    @property
    def amount(self) -> int:
        """Gets the amount of this FundsResponse.

        The amount of the funds checked  # noqa: E501

        :return: The amount of this FundsResponse.
        :rtype: int
        """
        return self._amount

    @amount.setter
    def amount(self, amount: int):
        """Sets the amount of this FundsResponse.

        The amount of the funds checked  # noqa: E501

        :param amount: The amount of this FundsResponse.
        :type amount: int
        """

        self._amount = amount

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

        The currency of the funds checked  # noqa: E501

        :return: The currency of this FundsResponse.
        :rtype: str
        """
        return self._currency

    @currency.setter
    def currency(self, currency: str):
        """Sets the currency of this FundsResponse.

        The currency of the funds checked  # noqa: E501

        :param currency: The currency of this FundsResponse.
        :type currency: str
        """

        self._currency = currency

    @property
    def available(self) -> bool:
        """Gets the available of this FundsResponse.

        The response if the amount was available true/false  # noqa: E501

        :return: The available of this FundsResponse.
        :rtype: bool
        """
        return self._available

    @available.setter
    def available(self, available: bool):
        """Sets the available of this FundsResponse.

        The response if the amount was available true/false  # noqa: E501

        :param available: The available of this FundsResponse.
        :type available: bool
        """

        self._available = available
