# -*- coding: utf-8 -*-

"""
coingeckopublicapiv3

This file was automatically generated by APIMATIC v3.0 (
 https://www.apimatic.io ).
"""
from coingeckopublicapiv3.api_helper import APIHelper
from coingeckopublicapiv3.models.ath import Ath
from coingeckopublicapiv3.models.ath_change_percentage import AthChangePercentage
from coingeckopublicapiv3.models.ath_date import AthDate
from coingeckopublicapiv3.models.atl import Atl
from coingeckopublicapiv3.models.atl_change_percentage import AtlChangePercentage
from coingeckopublicapiv3.models.atl_date import AtlDate
from coingeckopublicapiv3.models.current_price import CurrentPrice
from coingeckopublicapiv3.models.fully_diluted_valuation import FullyDilutedValuation
from coingeckopublicapiv3.models.high_24_h import High24h
from coingeckopublicapiv3.models.low_24_h import Low24h
from coingeckopublicapiv3.models.market_cap import MarketCap
from coingeckopublicapiv3.models.market_cap_change_24_h_in_currency import MarketCapChange24hInCurrency
from coingeckopublicapiv3.models.market_cap_change_percentage_24_h_in_currency import MarketCapChangePercentage24hInCurrency
from coingeckopublicapiv3.models.price_change_percentage_1_h_in_currency import PriceChangePercentage1hInCurrency
from coingeckopublicapiv3.models.price_change_percentage_1_y_in_currency import PriceChangePercentage1yInCurrency
from coingeckopublicapiv3.models.price_change_percentage_14_d_in_currency import PriceChangePercentage14dInCurrency
from coingeckopublicapiv3.models.price_change_percentage_200_d_in_currency import PriceChangePercentage200dInCurrency
from coingeckopublicapiv3.models.price_change_percentage_24_h_in_currency import PriceChangePercentage24hInCurrency
from coingeckopublicapiv3.models.price_change_percentage_30_d_in_currency import PriceChangePercentage30dInCurrency
from coingeckopublicapiv3.models.price_change_percentage_60_d_in_currency import PriceChangePercentage60dInCurrency
from coingeckopublicapiv3.models.price_change_percentage_7_d_in_currency import PriceChangePercentage7dInCurrency
from coingeckopublicapiv3.models.total_volume import TotalVolume


class MarketData(object):

    """Implementation of the 'MarketData' model.

    coin market data

    Attributes:
        current_price (CurrentPrice): coin current price in currency
        total_value_locked (float): total value locked
        mcap_to_tvl_ratio (float): market cap to total value locked ratio
        fdv_to_tvl_ratio (float): fully diluted valuation to total value
            locked ratio
        roi (float): coin return on investment
        ath (Ath): coin all time high (ATH) in currency
        ath_change_percentage (AthChangePercentage): coin all time high (ATH)
            change in percentage
        ath_date (AthDate): coin all time high (ATH) date
        atl (Atl): coin all time low (atl) in currency
        atl_change_percentage (AtlChangePercentage): coin all time low (atl)
            change in percentage
        atl_date (AtlDate): coin all time low (atl) date
        market_cap (MarketCap): coin market cap in currency
        market_cap_rank (float): coin rank by market cap
        fully_diluted_valuation (FullyDilutedValuation): coin fully diluted
            valuation (fdv) in currency
        market_cap_fdv_ratio (float): market cap to fully diluted valuation
            ratio
        total_volume (TotalVolume): coin total trading volume in currency
        high_24_h (High24h): coin 24hr price high in currency
        low_24_h (Low24h): coin 24hr price low in currency
        price_change_24_h (float): coin 24hr price change in currency
        price_change_percentage_24_h (float): coin 24hr price change in
            percentage
        price_change_percentage_7_d (float): coin 7d price change in percentage
        price_change_percentage_14_d (float): coin 14d price change in
            percentage
        price_change_percentage_30_d (float): coin 30d price change in
            percentage
        price_change_percentage_60_d (float): coin 60d price change in
            percentage
        price_change_percentage_200_d (float): coin 200d price change in
            percentage
        price_change_percentage_1_y (float): coin 1y price change in percentage
        market_cap_change_24_h (float): coin 24hr market cap change in currency
        market_cap_change_percentage_24_h (float): coin 24hr market cap change
            in percentage
        price_change_percentage_1_h_in_currency
            (PriceChangePercentage1hInCurrency): coin 1h price change in
            currency
        price_change_percentage_24_h_in_currency
            (PriceChangePercentage24hInCurrency): coin 24hr price change in
            currency
        price_change_percentage_7_d_in_currency
            (PriceChangePercentage7dInCurrency): coin 7d price change in
            currency
        price_change_percentage_14_d_in_currency
            (PriceChangePercentage14dInCurrency): coin 14d price change in
            currency
        price_change_percentage_30_d_in_currency
            (PriceChangePercentage30dInCurrency): coin 30d price change in
            currency
        price_change_percentage_60_d_in_currency
            (PriceChangePercentage60dInCurrency): coin 60d price change in
            currency
        price_change_percentage_200_d_in_currency
            (PriceChangePercentage200dInCurrency): coin 200d price change in
            currency
        price_change_percentage_1_y_in_currency
            (PriceChangePercentage1yInCurrency): coin 1y price change in
            currency
        market_cap_change_24_h_in_currency (MarketCapChange24hInCurrency):
            coin 24hr market cap change in currency
        market_cap_change_percentage_24_h_in_currency
            (MarketCapChangePercentage24hInCurrency): coin 24hr market cap
            change in percentage
        total_supply (float): coin total supply
        max_supply (float): coin max supply
        circulating_supply (float): coin circulating supply
        last_updated (datetime): coin market data last updated timestamp

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "current_price": 'current_price',
        "total_value_locked": 'total_value_locked',
        "mcap_to_tvl_ratio": 'mcap_to_tvl_ratio',
        "fdv_to_tvl_ratio": 'fdv_to_tvl_ratio',
        "roi": 'roi',
        "ath": 'ath',
        "ath_change_percentage": 'ath_change_percentage',
        "ath_date": 'ath_date',
        "atl": 'atl',
        "atl_change_percentage": 'atl_change_percentage',
        "atl_date": 'atl_date',
        "market_cap": 'market_cap',
        "market_cap_rank": 'market_cap_rank',
        "fully_diluted_valuation": 'fully_diluted_valuation',
        "market_cap_fdv_ratio": 'market_cap_fdv_ratio',
        "total_volume": 'total_volume',
        "high_24_h": 'high_24h',
        "low_24_h": 'low_24h',
        "price_change_24_h": 'price_change_24h',
        "price_change_percentage_24_h": 'price_change_percentage_24h',
        "price_change_percentage_7_d": 'price_change_percentage_7d',
        "price_change_percentage_14_d": 'price_change_percentage_14d',
        "price_change_percentage_30_d": 'price_change_percentage_30d',
        "price_change_percentage_60_d": 'price_change_percentage_60d',
        "price_change_percentage_200_d": 'price_change_percentage_200d',
        "price_change_percentage_1_y": 'price_change_percentage_1y',
        "market_cap_change_24_h": 'market_cap_change_24h',
        "market_cap_change_percentage_24_h": 'market_cap_change_percentage_24h',
        "price_change_percentage_1_h_in_currency": 'price_change_percentage_1h_in_currency',
        "price_change_percentage_24_h_in_currency": 'price_change_percentage_24h_in_currency',
        "price_change_percentage_7_d_in_currency": 'price_change_percentage_7d_in_currency',
        "price_change_percentage_14_d_in_currency": 'price_change_percentage_14d_in_currency',
        "price_change_percentage_30_d_in_currency": 'price_change_percentage_30d_in_currency',
        "price_change_percentage_60_d_in_currency": 'price_change_percentage_60d_in_currency',
        "price_change_percentage_200_d_in_currency": 'price_change_percentage_200d_in_currency',
        "price_change_percentage_1_y_in_currency": 'price_change_percentage_1y_in_currency',
        "market_cap_change_24_h_in_currency": 'market_cap_change_24h_in_currency',
        "market_cap_change_percentage_24_h_in_currency": 'market_cap_change_percentage_24h_in_currency',
        "total_supply": 'total_supply',
        "max_supply": 'max_supply',
        "circulating_supply": 'circulating_supply',
        "last_updated": 'last_updated'
    }

    _optionals = [
        'current_price',
        'total_value_locked',
        'mcap_to_tvl_ratio',
        'fdv_to_tvl_ratio',
        'roi',
        'ath',
        'ath_change_percentage',
        'ath_date',
        'atl',
        'atl_change_percentage',
        'atl_date',
        'market_cap',
        'market_cap_rank',
        'fully_diluted_valuation',
        'market_cap_fdv_ratio',
        'total_volume',
        'high_24_h',
        'low_24_h',
        'price_change_24_h',
        'price_change_percentage_24_h',
        'price_change_percentage_7_d',
        'price_change_percentage_14_d',
        'price_change_percentage_30_d',
        'price_change_percentage_60_d',
        'price_change_percentage_200_d',
        'price_change_percentage_1_y',
        'market_cap_change_24_h',
        'market_cap_change_percentage_24_h',
        'price_change_percentage_1_h_in_currency',
        'price_change_percentage_24_h_in_currency',
        'price_change_percentage_7_d_in_currency',
        'price_change_percentage_14_d_in_currency',
        'price_change_percentage_30_d_in_currency',
        'price_change_percentage_60_d_in_currency',
        'price_change_percentage_200_d_in_currency',
        'price_change_percentage_1_y_in_currency',
        'market_cap_change_24_h_in_currency',
        'market_cap_change_percentage_24_h_in_currency',
        'total_supply',
        'max_supply',
        'circulating_supply',
        'last_updated',
    ]

    def __init__(self,
                 current_price=APIHelper.SKIP,
                 total_value_locked=APIHelper.SKIP,
                 mcap_to_tvl_ratio=APIHelper.SKIP,
                 fdv_to_tvl_ratio=APIHelper.SKIP,
                 roi=APIHelper.SKIP,
                 ath=APIHelper.SKIP,
                 ath_change_percentage=APIHelper.SKIP,
                 ath_date=APIHelper.SKIP,
                 atl=APIHelper.SKIP,
                 atl_change_percentage=APIHelper.SKIP,
                 atl_date=APIHelper.SKIP,
                 market_cap=APIHelper.SKIP,
                 market_cap_rank=APIHelper.SKIP,
                 fully_diluted_valuation=APIHelper.SKIP,
                 market_cap_fdv_ratio=APIHelper.SKIP,
                 total_volume=APIHelper.SKIP,
                 high_24_h=APIHelper.SKIP,
                 low_24_h=APIHelper.SKIP,
                 price_change_24_h=APIHelper.SKIP,
                 price_change_percentage_24_h=APIHelper.SKIP,
                 price_change_percentage_7_d=APIHelper.SKIP,
                 price_change_percentage_14_d=APIHelper.SKIP,
                 price_change_percentage_30_d=APIHelper.SKIP,
                 price_change_percentage_60_d=APIHelper.SKIP,
                 price_change_percentage_200_d=APIHelper.SKIP,
                 price_change_percentage_1_y=APIHelper.SKIP,
                 market_cap_change_24_h=APIHelper.SKIP,
                 market_cap_change_percentage_24_h=APIHelper.SKIP,
                 price_change_percentage_1_h_in_currency=APIHelper.SKIP,
                 price_change_percentage_24_h_in_currency=APIHelper.SKIP,
                 price_change_percentage_7_d_in_currency=APIHelper.SKIP,
                 price_change_percentage_14_d_in_currency=APIHelper.SKIP,
                 price_change_percentage_30_d_in_currency=APIHelper.SKIP,
                 price_change_percentage_60_d_in_currency=APIHelper.SKIP,
                 price_change_percentage_200_d_in_currency=APIHelper.SKIP,
                 price_change_percentage_1_y_in_currency=APIHelper.SKIP,
                 market_cap_change_24_h_in_currency=APIHelper.SKIP,
                 market_cap_change_percentage_24_h_in_currency=APIHelper.SKIP,
                 total_supply=APIHelper.SKIP,
                 max_supply=APIHelper.SKIP,
                 circulating_supply=APIHelper.SKIP,
                 last_updated=APIHelper.SKIP):
        """Constructor for the MarketData class"""

        # Initialize members of the class
        if current_price is not APIHelper.SKIP:
            self.current_price = current_price 
        if total_value_locked is not APIHelper.SKIP:
            self.total_value_locked = total_value_locked 
        if mcap_to_tvl_ratio is not APIHelper.SKIP:
            self.mcap_to_tvl_ratio = mcap_to_tvl_ratio 
        if fdv_to_tvl_ratio is not APIHelper.SKIP:
            self.fdv_to_tvl_ratio = fdv_to_tvl_ratio 
        if roi is not APIHelper.SKIP:
            self.roi = roi 
        if ath is not APIHelper.SKIP:
            self.ath = ath 
        if ath_change_percentage is not APIHelper.SKIP:
            self.ath_change_percentage = ath_change_percentage 
        if ath_date is not APIHelper.SKIP:
            self.ath_date = ath_date 
        if atl is not APIHelper.SKIP:
            self.atl = atl 
        if atl_change_percentage is not APIHelper.SKIP:
            self.atl_change_percentage = atl_change_percentage 
        if atl_date is not APIHelper.SKIP:
            self.atl_date = atl_date 
        if market_cap is not APIHelper.SKIP:
            self.market_cap = market_cap 
        if market_cap_rank is not APIHelper.SKIP:
            self.market_cap_rank = market_cap_rank 
        if fully_diluted_valuation is not APIHelper.SKIP:
            self.fully_diluted_valuation = fully_diluted_valuation 
        if market_cap_fdv_ratio is not APIHelper.SKIP:
            self.market_cap_fdv_ratio = market_cap_fdv_ratio 
        if total_volume is not APIHelper.SKIP:
            self.total_volume = total_volume 
        if high_24_h is not APIHelper.SKIP:
            self.high_24_h = high_24_h 
        if low_24_h is not APIHelper.SKIP:
            self.low_24_h = low_24_h 
        if price_change_24_h is not APIHelper.SKIP:
            self.price_change_24_h = price_change_24_h 
        if price_change_percentage_24_h is not APIHelper.SKIP:
            self.price_change_percentage_24_h = price_change_percentage_24_h 
        if price_change_percentage_7_d is not APIHelper.SKIP:
            self.price_change_percentage_7_d = price_change_percentage_7_d 
        if price_change_percentage_14_d is not APIHelper.SKIP:
            self.price_change_percentage_14_d = price_change_percentage_14_d 
        if price_change_percentage_30_d is not APIHelper.SKIP:
            self.price_change_percentage_30_d = price_change_percentage_30_d 
        if price_change_percentage_60_d is not APIHelper.SKIP:
            self.price_change_percentage_60_d = price_change_percentage_60_d 
        if price_change_percentage_200_d is not APIHelper.SKIP:
            self.price_change_percentage_200_d = price_change_percentage_200_d 
        if price_change_percentage_1_y is not APIHelper.SKIP:
            self.price_change_percentage_1_y = price_change_percentage_1_y 
        if market_cap_change_24_h is not APIHelper.SKIP:
            self.market_cap_change_24_h = market_cap_change_24_h 
        if market_cap_change_percentage_24_h is not APIHelper.SKIP:
            self.market_cap_change_percentage_24_h = market_cap_change_percentage_24_h 
        if price_change_percentage_1_h_in_currency is not APIHelper.SKIP:
            self.price_change_percentage_1_h_in_currency = price_change_percentage_1_h_in_currency 
        if price_change_percentage_24_h_in_currency is not APIHelper.SKIP:
            self.price_change_percentage_24_h_in_currency = price_change_percentage_24_h_in_currency 
        if price_change_percentage_7_d_in_currency is not APIHelper.SKIP:
            self.price_change_percentage_7_d_in_currency = price_change_percentage_7_d_in_currency 
        if price_change_percentage_14_d_in_currency is not APIHelper.SKIP:
            self.price_change_percentage_14_d_in_currency = price_change_percentage_14_d_in_currency 
        if price_change_percentage_30_d_in_currency is not APIHelper.SKIP:
            self.price_change_percentage_30_d_in_currency = price_change_percentage_30_d_in_currency 
        if price_change_percentage_60_d_in_currency is not APIHelper.SKIP:
            self.price_change_percentage_60_d_in_currency = price_change_percentage_60_d_in_currency 
        if price_change_percentage_200_d_in_currency is not APIHelper.SKIP:
            self.price_change_percentage_200_d_in_currency = price_change_percentage_200_d_in_currency 
        if price_change_percentage_1_y_in_currency is not APIHelper.SKIP:
            self.price_change_percentage_1_y_in_currency = price_change_percentage_1_y_in_currency 
        if market_cap_change_24_h_in_currency is not APIHelper.SKIP:
            self.market_cap_change_24_h_in_currency = market_cap_change_24_h_in_currency 
        if market_cap_change_percentage_24_h_in_currency is not APIHelper.SKIP:
            self.market_cap_change_percentage_24_h_in_currency = market_cap_change_percentage_24_h_in_currency 
        if total_supply is not APIHelper.SKIP:
            self.total_supply = total_supply 
        if max_supply is not APIHelper.SKIP:
            self.max_supply = max_supply 
        if circulating_supply is not APIHelper.SKIP:
            self.circulating_supply = circulating_supply 
        if last_updated is not APIHelper.SKIP:
            self.last_updated = APIHelper.apply_datetime_converter(last_updated, APIHelper.RFC3339DateTime) if last_updated else None 

    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Creates an instance of this model from a dictionary

        Args:
            dictionary (dictionary): A dictionary representation of the object
            as obtained from the deserialization of the server's response. The
            keys MUST match property names in the API description.

        Returns:
            object: An instance of this structure class.

        """

        if not isinstance(dictionary, dict) or dictionary is None:
            return None

        # Extract variables from the dictionary
        current_price = CurrentPrice.from_dictionary(dictionary.get('current_price')) if 'current_price' in dictionary.keys() else APIHelper.SKIP
        total_value_locked = dictionary.get("total_value_locked") if dictionary.get("total_value_locked") else APIHelper.SKIP
        mcap_to_tvl_ratio = dictionary.get("mcap_to_tvl_ratio") if dictionary.get("mcap_to_tvl_ratio") else APIHelper.SKIP
        fdv_to_tvl_ratio = dictionary.get("fdv_to_tvl_ratio") if dictionary.get("fdv_to_tvl_ratio") else APIHelper.SKIP
        roi = dictionary.get("roi") if dictionary.get("roi") else APIHelper.SKIP
        ath = Ath.from_dictionary(dictionary.get('ath')) if 'ath' in dictionary.keys() else APIHelper.SKIP
        ath_change_percentage = AthChangePercentage.from_dictionary(dictionary.get('ath_change_percentage')) if 'ath_change_percentage' in dictionary.keys() else APIHelper.SKIP
        ath_date = AthDate.from_dictionary(dictionary.get('ath_date')) if 'ath_date' in dictionary.keys() else APIHelper.SKIP
        atl = Atl.from_dictionary(dictionary.get('atl')) if 'atl' in dictionary.keys() else APIHelper.SKIP
        atl_change_percentage = AtlChangePercentage.from_dictionary(dictionary.get('atl_change_percentage')) if 'atl_change_percentage' in dictionary.keys() else APIHelper.SKIP
        atl_date = AtlDate.from_dictionary(dictionary.get('atl_date')) if 'atl_date' in dictionary.keys() else APIHelper.SKIP
        market_cap = MarketCap.from_dictionary(dictionary.get('market_cap')) if 'market_cap' in dictionary.keys() else APIHelper.SKIP
        market_cap_rank = dictionary.get("market_cap_rank") if dictionary.get("market_cap_rank") else APIHelper.SKIP
        fully_diluted_valuation = FullyDilutedValuation.from_dictionary(dictionary.get('fully_diluted_valuation')) if 'fully_diluted_valuation' in dictionary.keys() else APIHelper.SKIP
        market_cap_fdv_ratio = dictionary.get("market_cap_fdv_ratio") if dictionary.get("market_cap_fdv_ratio") else APIHelper.SKIP
        total_volume = TotalVolume.from_dictionary(dictionary.get('total_volume')) if 'total_volume' in dictionary.keys() else APIHelper.SKIP
        high_24_h = High24h.from_dictionary(dictionary.get('high_24h')) if 'high_24h' in dictionary.keys() else APIHelper.SKIP
        low_24_h = Low24h.from_dictionary(dictionary.get('low_24h')) if 'low_24h' in dictionary.keys() else APIHelper.SKIP
        price_change_24_h = dictionary.get("price_change_24h") if dictionary.get("price_change_24h") else APIHelper.SKIP
        price_change_percentage_24_h = dictionary.get("price_change_percentage_24h") if dictionary.get("price_change_percentage_24h") else APIHelper.SKIP
        price_change_percentage_7_d = dictionary.get("price_change_percentage_7d") if dictionary.get("price_change_percentage_7d") else APIHelper.SKIP
        price_change_percentage_14_d = dictionary.get("price_change_percentage_14d") if dictionary.get("price_change_percentage_14d") else APIHelper.SKIP
        price_change_percentage_30_d = dictionary.get("price_change_percentage_30d") if dictionary.get("price_change_percentage_30d") else APIHelper.SKIP
        price_change_percentage_60_d = dictionary.get("price_change_percentage_60d") if dictionary.get("price_change_percentage_60d") else APIHelper.SKIP
        price_change_percentage_200_d = dictionary.get("price_change_percentage_200d") if dictionary.get("price_change_percentage_200d") else APIHelper.SKIP
        price_change_percentage_1_y = dictionary.get("price_change_percentage_1y") if dictionary.get("price_change_percentage_1y") else APIHelper.SKIP
        market_cap_change_24_h = dictionary.get("market_cap_change_24h") if dictionary.get("market_cap_change_24h") else APIHelper.SKIP
        market_cap_change_percentage_24_h = dictionary.get("market_cap_change_percentage_24h") if dictionary.get("market_cap_change_percentage_24h") else APIHelper.SKIP
        price_change_percentage_1_h_in_currency = PriceChangePercentage1hInCurrency.from_dictionary(dictionary.get('price_change_percentage_1h_in_currency')) if 'price_change_percentage_1h_in_currency' in dictionary.keys() else APIHelper.SKIP
        price_change_percentage_24_h_in_currency = PriceChangePercentage24hInCurrency.from_dictionary(dictionary.get('price_change_percentage_24h_in_currency')) if 'price_change_percentage_24h_in_currency' in dictionary.keys() else APIHelper.SKIP
        price_change_percentage_7_d_in_currency = PriceChangePercentage7dInCurrency.from_dictionary(dictionary.get('price_change_percentage_7d_in_currency')) if 'price_change_percentage_7d_in_currency' in dictionary.keys() else APIHelper.SKIP
        price_change_percentage_14_d_in_currency = PriceChangePercentage14dInCurrency.from_dictionary(dictionary.get('price_change_percentage_14d_in_currency')) if 'price_change_percentage_14d_in_currency' in dictionary.keys() else APIHelper.SKIP
        price_change_percentage_30_d_in_currency = PriceChangePercentage30dInCurrency.from_dictionary(dictionary.get('price_change_percentage_30d_in_currency')) if 'price_change_percentage_30d_in_currency' in dictionary.keys() else APIHelper.SKIP
        price_change_percentage_60_d_in_currency = PriceChangePercentage60dInCurrency.from_dictionary(dictionary.get('price_change_percentage_60d_in_currency')) if 'price_change_percentage_60d_in_currency' in dictionary.keys() else APIHelper.SKIP
        price_change_percentage_200_d_in_currency = PriceChangePercentage200dInCurrency.from_dictionary(dictionary.get('price_change_percentage_200d_in_currency')) if 'price_change_percentage_200d_in_currency' in dictionary.keys() else APIHelper.SKIP
        price_change_percentage_1_y_in_currency = PriceChangePercentage1yInCurrency.from_dictionary(dictionary.get('price_change_percentage_1y_in_currency')) if 'price_change_percentage_1y_in_currency' in dictionary.keys() else APIHelper.SKIP
        market_cap_change_24_h_in_currency = MarketCapChange24hInCurrency.from_dictionary(dictionary.get('market_cap_change_24h_in_currency')) if 'market_cap_change_24h_in_currency' in dictionary.keys() else APIHelper.SKIP
        market_cap_change_percentage_24_h_in_currency = MarketCapChangePercentage24hInCurrency.from_dictionary(dictionary.get('market_cap_change_percentage_24h_in_currency')) if 'market_cap_change_percentage_24h_in_currency' in dictionary.keys() else APIHelper.SKIP
        total_supply = dictionary.get("total_supply") if dictionary.get("total_supply") else APIHelper.SKIP
        max_supply = dictionary.get("max_supply") if dictionary.get("max_supply") else APIHelper.SKIP
        circulating_supply = dictionary.get("circulating_supply") if dictionary.get("circulating_supply") else APIHelper.SKIP
        last_updated = APIHelper.RFC3339DateTime.from_value(dictionary.get("last_updated")).datetime if dictionary.get("last_updated") else APIHelper.SKIP
        # Return an object of this model
        return cls(current_price,
                   total_value_locked,
                   mcap_to_tvl_ratio,
                   fdv_to_tvl_ratio,
                   roi,
                   ath,
                   ath_change_percentage,
                   ath_date,
                   atl,
                   atl_change_percentage,
                   atl_date,
                   market_cap,
                   market_cap_rank,
                   fully_diluted_valuation,
                   market_cap_fdv_ratio,
                   total_volume,
                   high_24_h,
                   low_24_h,
                   price_change_24_h,
                   price_change_percentage_24_h,
                   price_change_percentage_7_d,
                   price_change_percentage_14_d,
                   price_change_percentage_30_d,
                   price_change_percentage_60_d,
                   price_change_percentage_200_d,
                   price_change_percentage_1_y,
                   market_cap_change_24_h,
                   market_cap_change_percentage_24_h,
                   price_change_percentage_1_h_in_currency,
                   price_change_percentage_24_h_in_currency,
                   price_change_percentage_7_d_in_currency,
                   price_change_percentage_14_d_in_currency,
                   price_change_percentage_30_d_in_currency,
                   price_change_percentage_60_d_in_currency,
                   price_change_percentage_200_d_in_currency,
                   price_change_percentage_1_y_in_currency,
                   market_cap_change_24_h_in_currency,
                   market_cap_change_percentage_24_h_in_currency,
                   total_supply,
                   max_supply,
                   circulating_supply,
                   last_updated)

    def __repr__(self):
        return (f'{self.__class__.__name__}('
                f'current_price={(self.current_price if hasattr(self, "current_price") else None)!r}, '
                f'total_value_locked={(self.total_value_locked if hasattr(self, "total_value_locked") else None)!r}, '
                f'mcap_to_tvl_ratio={(self.mcap_to_tvl_ratio if hasattr(self, "mcap_to_tvl_ratio") else None)!r}, '
                f'fdv_to_tvl_ratio={(self.fdv_to_tvl_ratio if hasattr(self, "fdv_to_tvl_ratio") else None)!r}, '
                f'roi={(self.roi if hasattr(self, "roi") else None)!r}, '
                f'ath={(self.ath if hasattr(self, "ath") else None)!r}, '
                f'ath_change_percentage={(self.ath_change_percentage if hasattr(self, "ath_change_percentage") else None)!r}, '
                f'ath_date={(self.ath_date if hasattr(self, "ath_date") else None)!r}, '
                f'atl={(self.atl if hasattr(self, "atl") else None)!r}, '
                f'atl_change_percentage={(self.atl_change_percentage if hasattr(self, "atl_change_percentage") else None)!r}, '
                f'atl_date={(self.atl_date if hasattr(self, "atl_date") else None)!r}, '
                f'market_cap={(self.market_cap if hasattr(self, "market_cap") else None)!r}, '
                f'market_cap_rank={(self.market_cap_rank if hasattr(self, "market_cap_rank") else None)!r}, '
                f'fully_diluted_valuation={(self.fully_diluted_valuation if hasattr(self, "fully_diluted_valuation") else None)!r}, '
                f'market_cap_fdv_ratio={(self.market_cap_fdv_ratio if hasattr(self, "market_cap_fdv_ratio") else None)!r}, '
                f'total_volume={(self.total_volume if hasattr(self, "total_volume") else None)!r}, '
                f'high_24_h={(self.high_24_h if hasattr(self, "high_24_h") else None)!r}, '
                f'low_24_h={(self.low_24_h if hasattr(self, "low_24_h") else None)!r}, '
                f'price_change_24_h={(self.price_change_24_h if hasattr(self, "price_change_24_h") else None)!r}, '
                f'price_change_percentage_24_h={(self.price_change_percentage_24_h if hasattr(self, "price_change_percentage_24_h") else None)!r}, '
                f'price_change_percentage_7_d={(self.price_change_percentage_7_d if hasattr(self, "price_change_percentage_7_d") else None)!r}, '
                f'price_change_percentage_14_d={(self.price_change_percentage_14_d if hasattr(self, "price_change_percentage_14_d") else None)!r}, '
                f'price_change_percentage_30_d={(self.price_change_percentage_30_d if hasattr(self, "price_change_percentage_30_d") else None)!r}, '
                f'price_change_percentage_60_d={(self.price_change_percentage_60_d if hasattr(self, "price_change_percentage_60_d") else None)!r}, '
                f'price_change_percentage_200_d={(self.price_change_percentage_200_d if hasattr(self, "price_change_percentage_200_d") else None)!r}, '
                f'price_change_percentage_1_y={(self.price_change_percentage_1_y if hasattr(self, "price_change_percentage_1_y") else None)!r}, '
                f'market_cap_change_24_h={(self.market_cap_change_24_h if hasattr(self, "market_cap_change_24_h") else None)!r}, '
                f'market_cap_change_percentage_24_h={(self.market_cap_change_percentage_24_h if hasattr(self, "market_cap_change_percentage_24_h") else None)!r}, '
                f'price_change_percentage_1_h_in_currency={(self.price_change_percentage_1_h_in_currency if hasattr(self, "price_change_percentage_1_h_in_currency") else None)!r}, '
                f'price_change_percentage_24_h_in_currency={(self.price_change_percentage_24_h_in_currency if hasattr(self, "price_change_percentage_24_h_in_currency") else None)!r}, '
                f'price_change_percentage_7_d_in_currency={(self.price_change_percentage_7_d_in_currency if hasattr(self, "price_change_percentage_7_d_in_currency") else None)!r}, '
                f'price_change_percentage_14_d_in_currency={(self.price_change_percentage_14_d_in_currency if hasattr(self, "price_change_percentage_14_d_in_currency") else None)!r}, '
                f'price_change_percentage_30_d_in_currency={(self.price_change_percentage_30_d_in_currency if hasattr(self, "price_change_percentage_30_d_in_currency") else None)!r}, '
                f'price_change_percentage_60_d_in_currency={(self.price_change_percentage_60_d_in_currency if hasattr(self, "price_change_percentage_60_d_in_currency") else None)!r}, '
                f'price_change_percentage_200_d_in_currency={(self.price_change_percentage_200_d_in_currency if hasattr(self, "price_change_percentage_200_d_in_currency") else None)!r}, '
                f'price_change_percentage_1_y_in_currency={(self.price_change_percentage_1_y_in_currency if hasattr(self, "price_change_percentage_1_y_in_currency") else None)!r}, '
                f'market_cap_change_24_h_in_currency={(self.market_cap_change_24_h_in_currency if hasattr(self, "market_cap_change_24_h_in_currency") else None)!r}, '
                f'market_cap_change_percentage_24_h_in_currency={(self.market_cap_change_percentage_24_h_in_currency if hasattr(self, "market_cap_change_percentage_24_h_in_currency") else None)!r}, '
                f'total_supply={(self.total_supply if hasattr(self, "total_supply") else None)!r}, '
                f'max_supply={(self.max_supply if hasattr(self, "max_supply") else None)!r}, '
                f'circulating_supply={(self.circulating_supply if hasattr(self, "circulating_supply") else None)!r}, '
                f'last_updated={(self.last_updated if hasattr(self, "last_updated") else None)!r})')

    def __str__(self):
        return (f'{self.__class__.__name__}('
                f'current_price={(self.current_price if hasattr(self, "current_price") else None)!s}, '
                f'total_value_locked={(self.total_value_locked if hasattr(self, "total_value_locked") else None)!s}, '
                f'mcap_to_tvl_ratio={(self.mcap_to_tvl_ratio if hasattr(self, "mcap_to_tvl_ratio") else None)!s}, '
                f'fdv_to_tvl_ratio={(self.fdv_to_tvl_ratio if hasattr(self, "fdv_to_tvl_ratio") else None)!s}, '
                f'roi={(self.roi if hasattr(self, "roi") else None)!s}, '
                f'ath={(self.ath if hasattr(self, "ath") else None)!s}, '
                f'ath_change_percentage={(self.ath_change_percentage if hasattr(self, "ath_change_percentage") else None)!s}, '
                f'ath_date={(self.ath_date if hasattr(self, "ath_date") else None)!s}, '
                f'atl={(self.atl if hasattr(self, "atl") else None)!s}, '
                f'atl_change_percentage={(self.atl_change_percentage if hasattr(self, "atl_change_percentage") else None)!s}, '
                f'atl_date={(self.atl_date if hasattr(self, "atl_date") else None)!s}, '
                f'market_cap={(self.market_cap if hasattr(self, "market_cap") else None)!s}, '
                f'market_cap_rank={(self.market_cap_rank if hasattr(self, "market_cap_rank") else None)!s}, '
                f'fully_diluted_valuation={(self.fully_diluted_valuation if hasattr(self, "fully_diluted_valuation") else None)!s}, '
                f'market_cap_fdv_ratio={(self.market_cap_fdv_ratio if hasattr(self, "market_cap_fdv_ratio") else None)!s}, '
                f'total_volume={(self.total_volume if hasattr(self, "total_volume") else None)!s}, '
                f'high_24_h={(self.high_24_h if hasattr(self, "high_24_h") else None)!s}, '
                f'low_24_h={(self.low_24_h if hasattr(self, "low_24_h") else None)!s}, '
                f'price_change_24_h={(self.price_change_24_h if hasattr(self, "price_change_24_h") else None)!s}, '
                f'price_change_percentage_24_h={(self.price_change_percentage_24_h if hasattr(self, "price_change_percentage_24_h") else None)!s}, '
                f'price_change_percentage_7_d={(self.price_change_percentage_7_d if hasattr(self, "price_change_percentage_7_d") else None)!s}, '
                f'price_change_percentage_14_d={(self.price_change_percentage_14_d if hasattr(self, "price_change_percentage_14_d") else None)!s}, '
                f'price_change_percentage_30_d={(self.price_change_percentage_30_d if hasattr(self, "price_change_percentage_30_d") else None)!s}, '
                f'price_change_percentage_60_d={(self.price_change_percentage_60_d if hasattr(self, "price_change_percentage_60_d") else None)!s}, '
                f'price_change_percentage_200_d={(self.price_change_percentage_200_d if hasattr(self, "price_change_percentage_200_d") else None)!s}, '
                f'price_change_percentage_1_y={(self.price_change_percentage_1_y if hasattr(self, "price_change_percentage_1_y") else None)!s}, '
                f'market_cap_change_24_h={(self.market_cap_change_24_h if hasattr(self, "market_cap_change_24_h") else None)!s}, '
                f'market_cap_change_percentage_24_h={(self.market_cap_change_percentage_24_h if hasattr(self, "market_cap_change_percentage_24_h") else None)!s}, '
                f'price_change_percentage_1_h_in_currency={(self.price_change_percentage_1_h_in_currency if hasattr(self, "price_change_percentage_1_h_in_currency") else None)!s}, '
                f'price_change_percentage_24_h_in_currency={(self.price_change_percentage_24_h_in_currency if hasattr(self, "price_change_percentage_24_h_in_currency") else None)!s}, '
                f'price_change_percentage_7_d_in_currency={(self.price_change_percentage_7_d_in_currency if hasattr(self, "price_change_percentage_7_d_in_currency") else None)!s}, '
                f'price_change_percentage_14_d_in_currency={(self.price_change_percentage_14_d_in_currency if hasattr(self, "price_change_percentage_14_d_in_currency") else None)!s}, '
                f'price_change_percentage_30_d_in_currency={(self.price_change_percentage_30_d_in_currency if hasattr(self, "price_change_percentage_30_d_in_currency") else None)!s}, '
                f'price_change_percentage_60_d_in_currency={(self.price_change_percentage_60_d_in_currency if hasattr(self, "price_change_percentage_60_d_in_currency") else None)!s}, '
                f'price_change_percentage_200_d_in_currency={(self.price_change_percentage_200_d_in_currency if hasattr(self, "price_change_percentage_200_d_in_currency") else None)!s}, '
                f'price_change_percentage_1_y_in_currency={(self.price_change_percentage_1_y_in_currency if hasattr(self, "price_change_percentage_1_y_in_currency") else None)!s}, '
                f'market_cap_change_24_h_in_currency={(self.market_cap_change_24_h_in_currency if hasattr(self, "market_cap_change_24_h_in_currency") else None)!s}, '
                f'market_cap_change_percentage_24_h_in_currency={(self.market_cap_change_percentage_24_h_in_currency if hasattr(self, "market_cap_change_percentage_24_h_in_currency") else None)!s}, '
                f'total_supply={(self.total_supply if hasattr(self, "total_supply") else None)!s}, '
                f'max_supply={(self.max_supply if hasattr(self, "max_supply") else None)!s}, '
                f'circulating_supply={(self.circulating_supply if hasattr(self, "circulating_supply") else None)!s}, '
                f'last_updated={(self.last_updated if hasattr(self, "last_updated") else None)!s})')
