def describe(self):
    return self.deep_extend(super(bitvavo, self).describe(), {'id': 'bitvavo', 'name': 'Bitvavo', 'countries': ['NL'], 'rateLimit': 60, 'version': 'v2', 'certified': True, 'pro': True, 'has': {'CORS': None, 'spot': True, 'margin': False, 'swap': False, 'future': False, 'option': False, 'addMargin': False, 'cancelAllOrders': True, 'cancelOrder': True, 'createOrder': True, 'createReduceOnlyOrder': False, 'createStopLimitOrder': True, 'createStopMarketOrder': True, 'createStopOrder': True, 'editOrder': True, 'fetchBalance': True, 'fetchBorrowRate': False, 'fetchBorrowRateHistories': False, 'fetchBorrowRateHistory': False, 'fetchBorrowRates': False, 'fetchBorrowRatesPerSymbol': False, 'fetchCurrencies': True, 'fetchDepositAddress': True, 'fetchDeposits': True, 'fetchFundingHistory': False, 'fetchFundingRate': False, 'fetchFundingRateHistory': False, 'fetchFundingRates': False, 'fetchIndexOHLCV': False, 'fetchLeverage': False, 'fetchLeverageTiers': False, 'fetchMarkets': True, 'fetchMarkOHLCV': False, 'fetchMyTrades': True, 'fetchOHLCV': True, 'fetchOpenInterestHistory': False, 'fetchOpenOrders': True, 'fetchOrder': True, 'fetchOrderBook': True, 'fetchOrders': True, 'fetchPosition': False, 'fetchPositions': False, 'fetchPositionsRisk': False, 'fetchPremiumIndexOHLCV': False, 'fetchTicker': True, 'fetchTickers': True, 'fetchTime': True, 'fetchTrades': True, 'fetchTradingFee': False, 'fetchTradingFees': True, 'fetchTransfer': False, 'fetchTransfers': False, 'fetchWithdrawals': True, 'reduceMargin': False, 'setLeverage': False, 'setMarginMode': False, 'setPositionMode': False, 'transfer': False, 'withdraw': True}, 'timeframes': {'1m': '1m', '5m': '5m', '15m': '15m', '30m': '30m', '1h': '1h', '2h': '2h', '4h': '4h', '6h': '6h', '8h': '8h', '12h': '12h', '1d': '1d'}, 'urls': {'logo': 'https://user-images.githubusercontent.com/1294454/169202626-bd130fc5-fcf9-41bb-8d97-6093225c73cd.jpg', 'api': {'public': 'https://api.bitvavo.com', 'private': 'https://api.bitvavo.com'}, 'www': 'https://bitvavo.com/', 'doc': 'https://docs.bitvavo.com/', 'fees': 'https://bitvavo.com/en/fees', 'referral': 'https://bitvavo.com/?a=24F34952F7'}, 'api': {'public': {'get': {'time': 1, 'markets': 1, 'assets': 1, '{market}/book': 1, '{market}/trades': 5, '{market}/candles': 1, 'ticker/price': 1, 'ticker/book': 1, 'ticker/24h': {'cost': 1, 'noMarket': 25}}}, 'private': {'get': {'account': 1, 'order': 1, 'orders': 5, 'ordersOpen': {'cost': 1, 'noMarket': 25}, 'trades': 5, 'balance': 5, 'deposit': 1, 'depositHistory': 5, 'withdrawalHistory': 5}, 'post': {'order': 1, 'withdrawal': 1}, 'put': {'order': 1}, 'delete': {'order': 1, 'orders': 1}}}, 'fees': {'trading': {'tierBased': True, 'percentage': True, 'taker': self.parse_number('0.0025'), 'maker': self.parse_number('0.002'), 'tiers': {'taker': [[self.parse_number('0'), self.parse_number('0.0025')], [self.parse_number('100000'), self.parse_number('0.0020')], [self.parse_number('250000'), self.parse_number('0.0016')], [self.parse_number('500000'), self.parse_number('0.0012')], [self.parse_number('1000000'), self.parse_number('0.0010')], [self.parse_number('2500000'), self.parse_number('0.0008')], [self.parse_number('5000000'), self.parse_number('0.0006')], [self.parse_number('10000000'), self.parse_number('0.0005')], [self.parse_number('25000000'), self.parse_number('0.0004')]], 'maker': [[self.parse_number('0'), self.parse_number('0.0015')], [self.parse_number('100000'), self.parse_number('0.0010')], [self.parse_number('250000'), self.parse_number('0.0008')], [self.parse_number('500000'), self.parse_number('0.0006')], [self.parse_number('1000000'), self.parse_number('0.0005')], [self.parse_number('2500000'), self.parse_number('0.0004')], [self.parse_number('5000000'), self.parse_number('0.0004')], [self.parse_number('10000000'), self.parse_number('0.0003')], [self.parse_number('25000000'), self.parse_number('0.0003')]]}}}, 'requiredCredentials': {'apiKey': True, 'secret': True}, 'exceptions': {'exact': {'101': ExchangeError, '102': BadRequest, '103': RateLimitExceeded, '104': RateLimitExceeded, '105': PermissionDenied, '107': ExchangeNotAvailable, '108': ExchangeNotAvailable, '109': ExchangeNotAvailable, '110': BadRequest, '200': BadRequest, '201': BadRequest, '202': BadRequest, '203': BadSymbol, '204': BadRequest, '205': BadRequest, '206': BadRequest, '210': InvalidOrder, '211': InvalidOrder, '212': InvalidOrder, '213': InvalidOrder, '214': InvalidOrder, '215': InvalidOrder, '216': InsufficientFunds, '217': InvalidOrder, '230': ExchangeError, '231': ExchangeError, '232': BadRequest, '233': InvalidOrder, '234': InvalidOrder, '235': ExchangeError, '236': BadRequest, '240': OrderNotFound, '300': AuthenticationError, '301': AuthenticationError, '302': AuthenticationError, '303': AuthenticationError, '304': AuthenticationError, '305': AuthenticationError, '306': AuthenticationError, '307': PermissionDenied, '308': AuthenticationError, '309': AuthenticationError, '310': PermissionDenied, '311': PermissionDenied, '312': PermissionDenied, '315': BadRequest, '317': AccountSuspended, '400': ExchangeError, '401': ExchangeError, '402': PermissionDenied, '403': PermissionDenied, '404': OnMaintenance, '405': ExchangeError, '406': BadRequest, '407': ExchangeError, '408': InsufficientFunds, '409': InvalidAddress, '410': ExchangeError, '411': BadRequest, '412': InvalidAddress, '413': InvalidAddress, '414': ExchangeError}, 'broad': {'start parameter is invalid': BadRequest, 'symbol parameter is invalid': BadSymbol, 'amount parameter is invalid': InvalidOrder, 'orderId parameter is invalid': InvalidOrder}}, 'options': {'BITVAVO-ACCESS-WINDOW': 10000, 'fetchCurrencies': {'expires': 1000}}, 'precisionMode': SIGNIFICANT_DIGITS, 'commonCurrencies': {'MIOTA': 'IOTA'}})
def describe(self):
    return self.deep_extend(super(bitvavo, self).describe(), {'id': 'bitvavo', 'name': 'Bitvavo', 'countries': ['NL'], 'rateLimit': 60, 'version': 'v2', 'certified': True, 'pro': True, 'has': {'CORS': None, 'spot': True, 'margin': False, 'swap': False, 'future': False, 'option': False, 'addMargin': False, 'cancelAllOrders': True, 'cancelOrder': True, 'createOrder': True, 'createReduceOnlyOrder': False, 'createStopLimitOrder': True, 'createStopMarketOrder': True, 'createStopOrder': True, 'editOrder': True, 'fetchBalance': True, 'fetchBorrowRate': False, 'fetchBorrowRateHistories': False, 'fetchBorrowRateHistory': False, 'fetchBorrowRates': False, 'fetchBorrowRatesPerSymbol': False, 'fetchCurrencies': True, 'fetchDepositAddress': True, 'fetchDeposits': True, 'fetchFundingHistory': False, 'fetchFundingRate': False, 'fetchFundingRateHistory': False, 'fetchFundingRates': False, 'fetchIndexOHLCV': False, 'fetchLeverage': False, 'fetchLeverageTiers': False, 'fetchMarkets': True, 'fetchMarkOHLCV': False, 'fetchMyTrades': True, 'fetchOHLCV': True, 'fetchOpenInterestHistory': False, 'fetchOpenOrders': True, 'fetchOrder': True, 'fetchOrderBook': True, 'fetchOrders': True, 'fetchPosition': False, 'fetchPositions': False, 'fetchPositionsRisk': False, 'fetchPremiumIndexOHLCV': False, 'fetchTicker': True, 'fetchTickers': True, 'fetchTime': True, 'fetchTrades': True, 'fetchTradingFee': False, 'fetchTradingFees': True, 'fetchTransfer': False, 'fetchTransfers': False, 'fetchWithdrawals': True, 'reduceMargin': False, 'setLeverage': False, 'setMarginMode': False, 'setPositionMode': False, 'transfer': False, 'withdraw': True}, 'timeframes': {'1m': '1m', '5m': '5m', '15m': '15m', '30m': '30m', '1h': '1h', '2h': '2h', '4h': '4h', '6h': '6h', '8h': '8h', '12h': '12h', '1d': '1d'}, 'urls': {'logo': 'https://user-images.githubusercontent.com/1294454/169202626-bd130fc5-fcf9-41bb-8d97-6093225c73cd.jpg', 'api': {'public': 'https://api.bitvavo.com', 'private': 'https://api.bitvavo.com'}, 'www': 'https://bitvavo.com/', 'doc': 'https://docs.bitvavo.com/', 'fees': 'https://bitvavo.com/en/fees', 'referral': 'https://bitvavo.com/?a=24F34952F7'}, 'api': {'public': {'get': {'time': 1, 'markets': 1, 'assets': 1, '{market}/book': 1, '{market}/trades': 5, '{market}/candles': 1, 'ticker/price': 1, 'ticker/book': 1, 'ticker/24h': {'cost': 1, 'noMarket': 25}}}, 'private': {'get': {'account': 1, 'order': 1, 'orders': 5, 'ordersOpen': {'cost': 1, 'noMarket': 25}, 'trades': 5, 'balance': 5, 'deposit': 1, 'depositHistory': 5, 'withdrawalHistory': 5}, 'post': {'order': 1, 'withdrawal': 1}, 'put': {'order': 1}, 'delete': {'order': 1, 'orders': 1}}}, 'fees': {'trading': {'tierBased': True, 'percentage': True, 'taker': self.parse_number('0.0025'), 'maker': self.parse_number('0.002'), 'tiers': {'taker': [[self.parse_number('0'), self.parse_number('0.0025')], [self.parse_number('100000'), self.parse_number('0.0020')], [self.parse_number('250000'), self.parse_number('0.0016')], [self.parse_number('500000'), self.parse_number('0.0012')], [self.parse_number('1000000'), self.parse_number('0.0010')], [self.parse_number('2500000'), self.parse_number('0.0008')], [self.parse_number('5000000'), self.parse_number('0.0006')], [self.parse_number('10000000'), self.parse_number('0.0005')], [self.parse_number('25000000'), self.parse_number('0.0004')]], 'maker': [[self.parse_number('0'), self.parse_number('0.0015')], [self.parse_number('100000'), self.parse_number('0.0010')], [self.parse_number('250000'), self.parse_number('0.0008')], [self.parse_number('500000'), self.parse_number('0.0006')], [self.parse_number('1000000'), self.parse_number('0.0005')], [self.parse_number('2500000'), self.parse_number('0.0004')], [self.parse_number('5000000'), self.parse_number('0.0004')], [self.parse_number('10000000'), self.parse_number('0.0003')], [self.parse_number('25000000'), self.parse_number('0.0003')]]}}}, 'requiredCredentials': {'apiKey': True, 'secret': True}, 'exceptions': {'exact': {'101': ExchangeError, '102': BadRequest, '103': RateLimitExceeded, '104': RateLimitExceeded, '105': PermissionDenied, '107': ExchangeNotAvailable, '108': ExchangeNotAvailable, '109': ExchangeNotAvailable, '110': BadRequest, '200': BadRequest, '201': BadRequest, '202': BadRequest, '203': BadSymbol, '204': BadRequest, '205': BadRequest, '206': BadRequest, '210': InvalidOrder, '211': InvalidOrder, '212': InvalidOrder, '213': InvalidOrder, '214': InvalidOrder, '215': InvalidOrder, '216': InsufficientFunds, '217': InvalidOrder, '230': ExchangeError, '231': ExchangeError, '232': BadRequest, '233': InvalidOrder, '234': InvalidOrder, '235': ExchangeError, '236': BadRequest, '240': OrderNotFound, '300': AuthenticationError, '301': AuthenticationError, '302': AuthenticationError, '303': AuthenticationError, '304': AuthenticationError, '305': AuthenticationError, '306': AuthenticationError, '307': PermissionDenied, '308': AuthenticationError, '309': AuthenticationError, '310': PermissionDenied, '311': PermissionDenied, '312': PermissionDenied, '315': BadRequest, '317': AccountSuspended, '400': ExchangeError, '401': ExchangeError, '402': PermissionDenied, '403': PermissionDenied, '404': OnMaintenance, '405': ExchangeError, '406': BadRequest, '407': ExchangeError, '408': InsufficientFunds, '409': InvalidAddress, '410': ExchangeError, '411': BadRequest, '412': InvalidAddress, '413': InvalidAddress, '414': ExchangeError}, 'broad': {'start parameter is invalid': BadRequest, 'symbol parameter is invalid': BadSymbol, 'amount parameter is invalid': InvalidOrder, 'orderId parameter is invalid': InvalidOrder}}, 'options': {'BITVAVO-ACCESS-WINDOW': 10000, 'fetchCurrencies': {'expires': 1000}}, 'precisionMode': SIGNIFICANT_DIGITS, 'commonCurrencies': {'MIOTA': 'IOTA'}})