ccxt 4.3.29__py2.py3-none-any.whl → 4.3.31__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/abstract/binance.py +2 -0
  3. ccxt/abstract/binancecoinm.py +2 -0
  4. ccxt/abstract/binanceus.py +2 -0
  5. ccxt/abstract/binanceusdm.py +2 -0
  6. ccxt/ace.py +14 -14
  7. ccxt/alpaca.py +16 -16
  8. ccxt/ascendex.py +46 -46
  9. ccxt/async_support/__init__.py +1 -1
  10. ccxt/async_support/ace.py +14 -14
  11. ccxt/async_support/alpaca.py +16 -16
  12. ccxt/async_support/ascendex.py +46 -46
  13. ccxt/async_support/base/exchange.py +23 -23
  14. ccxt/async_support/base/ws/aiohttp_client.py +1 -0
  15. ccxt/async_support/base/ws/future.py +27 -29
  16. ccxt/async_support/bigone.py +32 -32
  17. ccxt/async_support/binance.py +105 -96
  18. ccxt/async_support/bingx.py +22 -22
  19. ccxt/async_support/bit2c.py +13 -13
  20. ccxt/async_support/bitbank.py +19 -19
  21. ccxt/async_support/bitbns.py +17 -17
  22. ccxt/async_support/bitfinex.py +24 -24
  23. ccxt/async_support/bitfinex2.py +142 -109
  24. ccxt/async_support/bitflyer.py +23 -23
  25. ccxt/async_support/bitget.py +76 -76
  26. ccxt/async_support/bithumb.py +20 -20
  27. ccxt/async_support/bitmart.py +55 -55
  28. ccxt/async_support/bitmex.py +41 -41
  29. ccxt/async_support/bitopro.py +30 -30
  30. ccxt/async_support/bitrue.py +37 -37
  31. ccxt/async_support/bitso.py +30 -30
  32. ccxt/async_support/bitstamp.py +31 -31
  33. ccxt/async_support/bitteam.py +26 -26
  34. ccxt/async_support/bitvavo.py +27 -27
  35. ccxt/async_support/bl3p.py +8 -8
  36. ccxt/async_support/blockchaincom.py +24 -24
  37. ccxt/async_support/blofin.py +37 -37
  38. ccxt/async_support/btcalpha.py +19 -19
  39. ccxt/async_support/btcbox.py +11 -11
  40. ccxt/async_support/btcmarkets.py +22 -22
  41. ccxt/async_support/btcturk.py +13 -13
  42. ccxt/async_support/bybit.py +96 -96
  43. ccxt/async_support/cex.py +21 -21
  44. ccxt/async_support/coinbase.py +53 -53
  45. ccxt/async_support/coinbaseexchange.py +29 -29
  46. ccxt/async_support/coinbaseinternational.py +32 -32
  47. ccxt/async_support/coincheck.py +14 -14
  48. ccxt/async_support/coinex.py +424 -448
  49. ccxt/async_support/coinlist.py +35 -35
  50. ccxt/async_support/coinmate.py +22 -22
  51. ccxt/async_support/coinmetro.py +22 -22
  52. ccxt/async_support/coinone.py +18 -18
  53. ccxt/async_support/coinsph.py +32 -32
  54. ccxt/async_support/coinspot.py +8 -8
  55. ccxt/async_support/cryptocom.py +43 -43
  56. ccxt/async_support/currencycom.py +33 -33
  57. ccxt/async_support/delta.py +35 -35
  58. ccxt/async_support/deribit.py +54 -54
  59. ccxt/async_support/digifinex.py +56 -56
  60. ccxt/async_support/exmo.py +34 -34
  61. ccxt/async_support/gate.py +60 -60
  62. ccxt/async_support/gemini.py +24 -24
  63. ccxt/async_support/hitbtc.py +51 -51
  64. ccxt/async_support/hollaex.py +29 -29
  65. ccxt/async_support/htx.py +73 -73
  66. ccxt/async_support/huobijp.py +30 -30
  67. ccxt/async_support/hyperliquid.py +58 -58
  68. ccxt/async_support/idex.py +33 -33
  69. ccxt/async_support/independentreserve.py +12 -12
  70. ccxt/async_support/indodax.py +21 -21
  71. ccxt/async_support/kraken.py +46 -51
  72. ccxt/async_support/krakenfutures.py +29 -29
  73. ccxt/async_support/kucoin.py +51 -51
  74. ccxt/async_support/kucoinfutures.py +33 -33
  75. ccxt/async_support/kuna.py +27 -27
  76. ccxt/async_support/latoken.py +27 -27
  77. ccxt/async_support/lbank.py +35 -35
  78. ccxt/async_support/luno.py +19 -19
  79. ccxt/async_support/lykke.py +20 -20
  80. ccxt/async_support/mercado.py +17 -17
  81. ccxt/async_support/mexc.py +64 -64
  82. ccxt/async_support/ndax.py +38 -38
  83. ccxt/async_support/novadax.py +26 -26
  84. ccxt/async_support/oceanex.py +21 -21
  85. ccxt/async_support/okcoin.py +35 -35
  86. ccxt/async_support/okx.py +85 -85
  87. ccxt/async_support/onetrading.py +32 -32
  88. ccxt/async_support/p2b.py +14 -14
  89. ccxt/async_support/paymium.py +12 -12
  90. ccxt/async_support/phemex.py +50 -50
  91. ccxt/async_support/poloniex.py +35 -35
  92. ccxt/async_support/poloniexfutures.py +25 -21
  93. ccxt/async_support/probit.py +30 -30
  94. ccxt/async_support/timex.py +22 -22
  95. ccxt/async_support/tokocrypto.py +26 -26
  96. ccxt/async_support/tradeogre.py +12 -12
  97. ccxt/async_support/upbit.py +28 -28
  98. ccxt/async_support/wavesexchange.py +33 -33
  99. ccxt/async_support/wazirx.py +21 -21
  100. ccxt/async_support/whitebit.py +80 -40
  101. ccxt/async_support/woo.py +51 -51
  102. ccxt/async_support/woofipro.py +46 -46
  103. ccxt/async_support/yobit.py +20 -20
  104. ccxt/async_support/zaif.py +12 -12
  105. ccxt/async_support/zonda.py +22 -22
  106. ccxt/base/exchange.py +39 -35
  107. ccxt/base/types.py +13 -0
  108. ccxt/bigone.py +32 -32
  109. ccxt/binance.py +105 -96
  110. ccxt/bingx.py +22 -22
  111. ccxt/bit2c.py +13 -13
  112. ccxt/bitbank.py +19 -19
  113. ccxt/bitbns.py +17 -17
  114. ccxt/bitfinex.py +24 -24
  115. ccxt/bitfinex2.py +142 -109
  116. ccxt/bitflyer.py +23 -23
  117. ccxt/bitget.py +76 -76
  118. ccxt/bithumb.py +20 -20
  119. ccxt/bitmart.py +55 -55
  120. ccxt/bitmex.py +41 -41
  121. ccxt/bitopro.py +30 -30
  122. ccxt/bitrue.py +37 -37
  123. ccxt/bitso.py +30 -30
  124. ccxt/bitstamp.py +31 -31
  125. ccxt/bitteam.py +26 -26
  126. ccxt/bitvavo.py +27 -27
  127. ccxt/bl3p.py +8 -8
  128. ccxt/blockchaincom.py +24 -24
  129. ccxt/blofin.py +37 -37
  130. ccxt/btcalpha.py +19 -19
  131. ccxt/btcbox.py +11 -11
  132. ccxt/btcmarkets.py +22 -22
  133. ccxt/btcturk.py +13 -13
  134. ccxt/bybit.py +96 -96
  135. ccxt/cex.py +21 -21
  136. ccxt/coinbase.py +53 -53
  137. ccxt/coinbaseexchange.py +29 -29
  138. ccxt/coinbaseinternational.py +32 -32
  139. ccxt/coincheck.py +14 -14
  140. ccxt/coinex.py +424 -448
  141. ccxt/coinlist.py +35 -35
  142. ccxt/coinmate.py +22 -22
  143. ccxt/coinmetro.py +22 -22
  144. ccxt/coinone.py +18 -18
  145. ccxt/coinsph.py +32 -32
  146. ccxt/coinspot.py +8 -8
  147. ccxt/cryptocom.py +43 -43
  148. ccxt/currencycom.py +33 -33
  149. ccxt/delta.py +35 -35
  150. ccxt/deribit.py +54 -54
  151. ccxt/digifinex.py +56 -56
  152. ccxt/exmo.py +34 -34
  153. ccxt/gate.py +60 -60
  154. ccxt/gemini.py +24 -24
  155. ccxt/hitbtc.py +51 -51
  156. ccxt/hollaex.py +29 -29
  157. ccxt/htx.py +73 -73
  158. ccxt/huobijp.py +30 -30
  159. ccxt/hyperliquid.py +58 -58
  160. ccxt/idex.py +33 -33
  161. ccxt/independentreserve.py +12 -12
  162. ccxt/indodax.py +21 -21
  163. ccxt/kraken.py +46 -51
  164. ccxt/krakenfutures.py +29 -29
  165. ccxt/kucoin.py +51 -51
  166. ccxt/kucoinfutures.py +33 -33
  167. ccxt/kuna.py +27 -27
  168. ccxt/latoken.py +27 -27
  169. ccxt/lbank.py +35 -35
  170. ccxt/luno.py +19 -19
  171. ccxt/lykke.py +20 -20
  172. ccxt/mercado.py +17 -17
  173. ccxt/mexc.py +64 -64
  174. ccxt/ndax.py +38 -38
  175. ccxt/novadax.py +26 -26
  176. ccxt/oceanex.py +21 -21
  177. ccxt/okcoin.py +35 -35
  178. ccxt/okx.py +85 -85
  179. ccxt/onetrading.py +32 -32
  180. ccxt/p2b.py +14 -14
  181. ccxt/paymium.py +12 -12
  182. ccxt/phemex.py +50 -50
  183. ccxt/poloniex.py +35 -35
  184. ccxt/poloniexfutures.py +25 -21
  185. ccxt/pro/__init__.py +1 -1
  186. ccxt/pro/alpaca.py +8 -8
  187. ccxt/pro/ascendex.py +4 -4
  188. ccxt/pro/binance.py +56 -56
  189. ccxt/pro/bingx.py +5 -5
  190. ccxt/pro/bitfinex.py +6 -6
  191. ccxt/pro/bitfinex2.py +10 -10
  192. ccxt/pro/bitget.py +17 -17
  193. ccxt/pro/bithumb.py +6 -6
  194. ccxt/pro/bitmart.py +8 -8
  195. ccxt/pro/bitmex.py +16 -16
  196. ccxt/pro/bitopro.py +4 -4
  197. ccxt/pro/bitrue.py +8 -8
  198. ccxt/pro/bitstamp.py +5 -5
  199. ccxt/pro/bitvavo.py +14 -14
  200. ccxt/pro/blockchaincom.py +7 -7
  201. ccxt/pro/bybit.py +12 -12
  202. ccxt/pro/cex.py +19 -19
  203. ccxt/pro/coinbase.py +2 -2
  204. ccxt/pro/coinbaseexchange.py +10 -10
  205. ccxt/pro/coinbaseinternational.py +4 -4
  206. ccxt/pro/coincheck.py +2 -2
  207. ccxt/pro/coinex.py +15 -15
  208. ccxt/pro/coinone.py +4 -4
  209. ccxt/pro/cryptocom.py +11 -11
  210. ccxt/pro/currencycom.py +4 -4
  211. ccxt/pro/deribit.py +9 -9
  212. ccxt/pro/exmo.py +9 -9
  213. ccxt/pro/gate.py +12 -12
  214. ccxt/pro/gemini.py +11 -11
  215. ccxt/pro/hitbtc.py +13 -13
  216. ccxt/pro/hollaex.py +6 -6
  217. ccxt/pro/htx.py +15 -15
  218. ccxt/pro/huobijp.py +16 -16
  219. ccxt/pro/hyperliquid.py +9 -9
  220. ccxt/pro/idex.py +12 -12
  221. ccxt/pro/independentreserve.py +2 -2
  222. ccxt/pro/kraken.py +14 -14
  223. ccxt/pro/krakenfutures.py +12 -12
  224. ccxt/pro/kucoin.py +12 -12
  225. ccxt/pro/kucoinfutures.py +16 -16
  226. ccxt/pro/lbank.py +12 -12
  227. ccxt/pro/luno.py +4 -4
  228. ccxt/pro/mexc.py +14 -14
  229. ccxt/pro/ndax.py +12 -12
  230. ccxt/pro/okcoin.py +6 -6
  231. ccxt/pro/okx.py +30 -30
  232. ccxt/pro/onetrading.py +13 -13
  233. ccxt/pro/p2b.py +2 -2
  234. ccxt/pro/phemex.py +9 -9
  235. ccxt/pro/poloniex.py +9 -9
  236. ccxt/pro/poloniexfutures.py +10 -10
  237. ccxt/pro/probit.py +8 -8
  238. ccxt/pro/upbit.py +1 -1
  239. ccxt/pro/wazirx.py +10 -10
  240. ccxt/pro/whitebit.py +8 -8
  241. ccxt/pro/woo.py +14 -14
  242. ccxt/pro/woofipro.py +14 -14
  243. ccxt/probit.py +30 -30
  244. ccxt/test/base/test_shared_methods.py +1 -0
  245. ccxt/timex.py +22 -22
  246. ccxt/tokocrypto.py +26 -26
  247. ccxt/tradeogre.py +12 -12
  248. ccxt/upbit.py +28 -28
  249. ccxt/wavesexchange.py +33 -33
  250. ccxt/wazirx.py +21 -21
  251. ccxt/whitebit.py +80 -40
  252. ccxt/woo.py +51 -51
  253. ccxt/woofipro.py +46 -46
  254. ccxt/yobit.py +20 -20
  255. ccxt/zaif.py +12 -12
  256. ccxt/zonda.py +22 -22
  257. {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/METADATA +4 -4
  258. {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/RECORD +260 -260
  259. {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/WHEEL +0 -0
  260. {ccxt-4.3.29.dist-info → ccxt-4.3.31.dist-info}/top_level.txt +0 -0
ccxt/bitfinex.py CHANGED
@@ -409,7 +409,7 @@ class bitfinex(Exchange, ImplicitAPI):
409
409
  },
410
410
  })
411
411
 
412
- def fetch_transaction_fees(self, codes: List[str] = None, params={}):
412
+ def fetch_transaction_fees(self, codes: Strings = None, params={}):
413
413
  """
414
414
  * @deprecated
415
415
  please use fetchDepositWithdrawFees instead
@@ -419,7 +419,7 @@ class bitfinex(Exchange, ImplicitAPI):
419
419
  :returns dict[]: a list of `fees structures <https://docs.ccxt.com/#/?id=fee-structure>`
420
420
  """
421
421
  self.load_markets()
422
- result = {}
422
+ result: dict = {}
423
423
  response = self.privatePostAccountFees(params)
424
424
  #
425
425
  # {
@@ -528,7 +528,7 @@ class bitfinex(Exchange, ImplicitAPI):
528
528
  # "trade_last": null
529
529
  # }
530
530
  #
531
- result = {}
531
+ result: dict = {}
532
532
  fiat = self.safe_value(self.options, 'fiat', {})
533
533
  makerFee = self.safe_number(response, 'maker_fee')
534
534
  takerFee = self.safe_number(response, 'taker_fee')
@@ -704,7 +704,7 @@ class bitfinex(Exchange, ImplicitAPI):
704
704
  # "currency": "btc",
705
705
  # "amount": "0.0005",
706
706
  # "available": "0.0005"}],
707
- result = {'info': response}
707
+ result: dict = {'info': response}
708
708
  isDerivative = requestedType == 'derivatives'
709
709
  for i in range(0, len(response)):
710
710
  balance = response[i]
@@ -749,7 +749,7 @@ class bitfinex(Exchange, ImplicitAPI):
749
749
  fromCurrencyId = self.convert_derivatives_id(currency['id'], fromAccount)
750
750
  toCurrencyId = self.convert_derivatives_id(currency['id'], toAccount)
751
751
  requestedAmount = self.currency_to_precision(code, amount)
752
- request = {
752
+ request: dict = {
753
753
  'amount': requestedAmount,
754
754
  'currency': fromCurrencyId,
755
755
  'currency_to': toCurrencyId,
@@ -795,7 +795,7 @@ class bitfinex(Exchange, ImplicitAPI):
795
795
  }
796
796
 
797
797
  def parse_transfer_status(self, status: Str) -> Str:
798
- statuses = {
798
+ statuses: dict = {
799
799
  'SUCCESS': 'ok',
800
800
  }
801
801
  return self.safe_string(statuses, status, status)
@@ -820,7 +820,7 @@ class bitfinex(Exchange, ImplicitAPI):
820
820
  """
821
821
  self.load_markets()
822
822
  market = self.market(symbol)
823
- request = {
823
+ request: dict = {
824
824
  'symbol': market['id'],
825
825
  }
826
826
  if limit is not None:
@@ -839,7 +839,7 @@ class bitfinex(Exchange, ImplicitAPI):
839
839
  self.load_markets()
840
840
  symbols = self.market_symbols(symbols)
841
841
  response = self.publicGetTickers(params)
842
- result = {}
842
+ result: dict = {}
843
843
  for i in range(0, len(response)):
844
844
  ticker = self.parse_ticker({'result': response[i]})
845
845
  symbol = ticker['symbol']
@@ -856,7 +856,7 @@ class bitfinex(Exchange, ImplicitAPI):
856
856
  """
857
857
  self.load_markets()
858
858
  market = self.market(symbol)
859
- request = {
859
+ request: dict = {
860
860
  'symbol': market['id'],
861
861
  }
862
862
  ticker = self.publicGetPubtickerSymbol(self.extend(request, params))
@@ -915,7 +915,7 @@ class bitfinex(Exchange, ImplicitAPI):
915
915
  'info': ticker,
916
916
  }, market)
917
917
 
918
- def parse_trade(self, trade, market: Market = None) -> Trade:
918
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
919
919
  #
920
920
  # fetchTrades(public) v1
921
921
  #
@@ -996,7 +996,7 @@ class bitfinex(Exchange, ImplicitAPI):
996
996
  """
997
997
  self.load_markets()
998
998
  market = self.market(symbol)
999
- request = {
999
+ request: dict = {
1000
1000
  'symbol': market['id'],
1001
1001
  'limit_trades': limit,
1002
1002
  }
@@ -1031,7 +1031,7 @@ class bitfinex(Exchange, ImplicitAPI):
1031
1031
  raise ArgumentsRequired(self.id + ' fetchMyTrades() requires a symbol argument')
1032
1032
  self.load_markets()
1033
1033
  market = self.market(symbol)
1034
- request = {
1034
+ request: dict = {
1035
1035
  'symbol': market['id'],
1036
1036
  }
1037
1037
  if limit is not None:
@@ -1062,7 +1062,7 @@ class bitfinex(Exchange, ImplicitAPI):
1062
1062
  # although they claim that type needs to be 'exchange limit' or 'exchange market'
1063
1063
  # in fact that's not the case for swap markets
1064
1064
  type = self.safe_string_lower(self.options['orderTypes'], type, type)
1065
- request = {
1065
+ request: dict = {
1066
1066
  'symbol': market['id'],
1067
1067
  'side': side,
1068
1068
  'amount': self.amount_to_precision(symbol, amount),
@@ -1082,7 +1082,7 @@ class bitfinex(Exchange, ImplicitAPI):
1082
1082
 
1083
1083
  def edit_order(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}):
1084
1084
  self.load_markets()
1085
- order = {
1085
+ order: dict = {
1086
1086
  'order_id': int(id),
1087
1087
  }
1088
1088
  if price is not None:
@@ -1108,7 +1108,7 @@ class bitfinex(Exchange, ImplicitAPI):
1108
1108
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1109
1109
  """
1110
1110
  self.load_markets()
1111
- request = {
1111
+ request: dict = {
1112
1112
  'order_id': int(id),
1113
1113
  }
1114
1114
  return self.privatePostOrderCancel(self.extend(request, params))
@@ -1123,7 +1123,7 @@ class bitfinex(Exchange, ImplicitAPI):
1123
1123
  """
1124
1124
  return self.privatePostOrderCancelAll(params)
1125
1125
 
1126
- def parse_order(self, order, market: Market = None) -> Order:
1126
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1127
1127
  #
1128
1128
  # {
1129
1129
  # "id": 57334010955,
@@ -1224,7 +1224,7 @@ class bitfinex(Exchange, ImplicitAPI):
1224
1224
  """
1225
1225
  self.load_markets()
1226
1226
  symbol = self.symbol(symbol)
1227
- request = {}
1227
+ request: dict = {}
1228
1228
  if limit is not None:
1229
1229
  request['limit'] = limit
1230
1230
  response = self.privatePostOrdersHist(self.extend(request, params))
@@ -1243,7 +1243,7 @@ class bitfinex(Exchange, ImplicitAPI):
1243
1243
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1244
1244
  """
1245
1245
  self.load_markets()
1246
- request = {
1246
+ request: dict = {
1247
1247
  'order_id': int(id),
1248
1248
  }
1249
1249
  response = self.privatePostOrderStatus(self.extend(request, params))
@@ -1287,7 +1287,7 @@ class bitfinex(Exchange, ImplicitAPI):
1287
1287
  limit = min(limit, 10000)
1288
1288
  market = self.market(symbol)
1289
1289
  v2id = 't' + market['id']
1290
- request = {
1290
+ request: dict = {
1291
1291
  'symbol': v2id,
1292
1292
  'timeframe': self.safe_string(self.timeframes, timeframe, timeframe),
1293
1293
  'sort': 1,
@@ -1320,7 +1320,7 @@ class bitfinex(Exchange, ImplicitAPI):
1320
1320
  :returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
1321
1321
  """
1322
1322
  self.load_markets()
1323
- request = {
1323
+ request: dict = {
1324
1324
  'renew': 1,
1325
1325
  }
1326
1326
  return self.fetch_deposit_address(code, self.extend(request, params))
@@ -1336,7 +1336,7 @@ class bitfinex(Exchange, ImplicitAPI):
1336
1336
  self.load_markets()
1337
1337
  # todo rewrite for https://api-pub.bitfinex.com//v2/conf/pub:map:tx:method
1338
1338
  name = self.get_currency_name(code)
1339
- request = {
1339
+ request: dict = {
1340
1340
  'method': name,
1341
1341
  'wallet_name': 'exchange',
1342
1342
  'renew': 0, # a value of 1 will generate a new address
@@ -1400,7 +1400,7 @@ class bitfinex(Exchange, ImplicitAPI):
1400
1400
  #
1401
1401
  return self.parse_transactions(response, currency, since, limit)
1402
1402
 
1403
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1403
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1404
1404
  #
1405
1405
  # crypto
1406
1406
  #
@@ -1478,7 +1478,7 @@ class bitfinex(Exchange, ImplicitAPI):
1478
1478
  }
1479
1479
 
1480
1480
  def parse_transaction_status(self, status):
1481
- statuses = {
1481
+ statuses: dict = {
1482
1482
  'SENDING': 'pending',
1483
1483
  'CANCELED': 'canceled',
1484
1484
  'ZEROCONFIRMED': 'failed', # ZEROCONFIRMED happens e.g. in a double spend attempt(I had one in my movementsnot )
@@ -1503,7 +1503,7 @@ class bitfinex(Exchange, ImplicitAPI):
1503
1503
  # todo rewrite for https://api-pub.bitfinex.com//v2/conf/pub:map:tx:method
1504
1504
  name = self.get_currency_name(code)
1505
1505
  currency = self.currency(code)
1506
- request = {
1506
+ request: dict = {
1507
1507
  'withdraw_type': name,
1508
1508
  'walletselected': 'exchange',
1509
1509
  'amount': self.number_to_string(amount),