async def fetch_markets(self, params={}):
    '\n        retrieves data on all markets for bitvavo\n        :param dict params: extra parameters specific to the exchange api endpoint\n        :returns [dict]: an array of objects representing market data\n        '
    response = (await self.publicGetMarkets(params))
    currencies = (await self.fetch_currencies_from_cache(params))
    currenciesById = self.index_by(currencies, 'symbol')
    result = []
    for i in range(0, len(response)):
        market = response[i]
        id = self.safe_string(market, 'market')
        baseId = self.safe_string(market, 'base')
        quoteId = self.safe_string(market, 'quote')
        base = self.safe_currency_code(baseId)
        quote = self.safe_currency_code(quoteId)
        status = self.safe_string(market, 'status')
        baseCurrency = self.safe_value(currenciesById, baseId)
        amountPrecision = None
        if (baseCurrency is not None):
            amountPrecision = self.safe_integer(baseCurrency, 'decimals', 8)
        result.append({'id': id, 'symbol': ((base + '/') + quote), 'base': base, 'quote': quote, 'settle': None, 'baseId': baseId, 'quoteId': quoteId, 'settleId': None, 'type': 'spot', 'spot': True, 'margin': False, 'swap': False, 'future': False, 'option': False, 'active': (status == 'trading'), 'contract': False, 'linear': None, 'inverse': None, 'contractSize': None, 'expiry': None, 'expiryDatetime': None, 'strike': None, 'optionType': None, 'precision': {'amount': amountPrecision, 'price': self.safe_integer(market, 'pricePrecision')}, 'limits': {'leverage': {'min': None, 'max': None}, 'amount': {'min': self.safe_number(market, 'minOrderInBaseAsset'), 'max': None}, 'price': {'min': None, 'max': None}, 'cost': {'min': self.safe_number(market, 'minOrderInQuoteAsset'), 'max': None}}, 'info': market})
    return result
retrieves data on all markets for bitvavo
:param dict params: extra parameters specific to the exchange api endpoint
:returns [dict]: an array of objects representing market data
async def fetch_markets(self, params={}):
    '\n        retrieves data on all markets for bitvavo\n        :param dict params: extra parameters specific to the exchange api endpoint\n        :returns [dict]: an array of objects representing market data\n        '
    response = (await self.publicGetMarkets(params))
    currencies = (await self.fetch_currencies_from_cache(params))
    currenciesById = self.index_by(currencies, 'symbol')
    result = []
    for i in range(0, len(response)):
        market = response[i]
        id = self.safe_string(market, 'market')
        baseId = self.safe_string(market, 'base')
        quoteId = self.safe_string(market, 'quote')
        base = self.safe_currency_code(baseId)
        quote = self.safe_currency_code(quoteId)
        status = self.safe_string(market, 'status')
        baseCurrency = self.safe_value(currenciesById, baseId)
        amountPrecision = None
        if (baseCurrency is not None):
            amountPrecision = self.safe_integer(baseCurrency, 'decimals', 8)
        result.append({'id': id, 'symbol': ((base + '/') + quote), 'base': base, 'quote': quote, 'settle': None, 'baseId': baseId, 'quoteId': quoteId, 'settleId': None, 'type': 'spot', 'spot': True, 'margin': False, 'swap': False, 'future': False, 'option': False, 'active': (status == 'trading'), 'contract': False, 'linear': None, 'inverse': None, 'contractSize': None, 'expiry': None, 'expiryDatetime': None, 'strike': None, 'optionType': None, 'precision': {'amount': amountPrecision, 'price': self.safe_integer(market, 'pricePrecision')}, 'limits': {'leverage': {'min': None, 'max': None}, 'amount': {'min': self.safe_number(market, 'minOrderInBaseAsset'), 'max': None}, 'price': {'min': None, 'max': None}, 'cost': {'min': self.safe_number(market, 'minOrderInQuoteAsset'), 'max': None}}, 'info': market})
    return result