@rabbitio/ui-kit 1.0.0-beta.111 → 1.0.0-beta.113

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 (204) hide show
  1. package/.env +1 -0
  2. package/.env.example +1 -1
  3. package/coverage/clover.xml +1686 -1723
  4. package/coverage/coverage-final.json +118 -118
  5. package/coverage/index.html +86 -86
  6. package/coverage/{rabbit-ui-kit → ui-kit}/index.html +3 -3
  7. package/coverage/{rabbit-ui-kit → ui-kit}/index.js.html +3 -3
  8. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js.html +3 -3
  9. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/adapters/analyticsAdapters/index.html +3 -3
  10. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/adapters/analyticsAdapters/metrikaAdapter.js.html +3 -3
  11. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/adapters/analyticsAdapters/mixpanelAdapter.js.html +3 -3
  12. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/adapters/axiosAdapter.js.html +3 -3
  13. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/adapters/index.html +3 -3
  14. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/adapters/qrUtils.js.html +3 -3
  15. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/external-apis/apiGroups.js.html +3 -3
  16. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/external-apis/emailAPI.js.html +3 -3
  17. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/external-apis/index.html +3 -3
  18. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/external-apis/ipAddressProviders.js.html +3 -3
  19. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/globalConstants.jsx.html +3 -3
  20. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/index.html +3 -3
  21. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/models/blockchain.js.html +6 -6
  22. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/models/coin.js.html +223 -223
  23. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/models/index.html +3 -3
  24. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/models/protocol.js.html +5 -5
  25. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/services/fiatCurrenciesService.js.html +3 -3
  26. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/services/index.html +3 -3
  27. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/utils/amountUtils.js.html +51 -51
  28. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/utils/cache.js.html +8 -8
  29. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/utils/errorUtils.js.html +15 -15
  30. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/utils/index.html +3 -3
  31. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/utils/logging/index.html +3 -3
  32. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/utils/logging/logger.js.html +24 -24
  33. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/utils/logging/logsStorage.js.html +5 -5
  34. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/utils/postponeExecution.js.html +3 -3
  35. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/utils/rabbitTicker.js.html +12 -12
  36. package/coverage/{rabbit-ui-kit → ui-kit}/src/common-apis/utils/safeStringify.js.html +29 -29
  37. package/coverage/{rabbit-ui-kit → ui-kit}/src/index.html +3 -3
  38. package/coverage/{rabbit-ui-kit → ui-kit}/src/index.js.html +3 -3
  39. package/coverage/{rabbit-ui-kit → ui-kit}/src/robust-api-caller/cacheAndConcurrentRequestsResolver.js.html +3 -3
  40. package/coverage/{rabbit-ui-kit → ui-kit}/src/robust-api-caller/cachedRobustExternalApiCallerService.js.html +3 -3
  41. package/coverage/{rabbit-ui-kit → ui-kit}/src/robust-api-caller/cancelProcessing.js.html +3 -3
  42. package/coverage/{rabbit-ui-kit → ui-kit}/src/robust-api-caller/concurrentCalculationsMetadataHolder.js.html +3 -3
  43. package/coverage/{rabbit-ui-kit → ui-kit}/src/robust-api-caller/externalApiProvider.js.html +3 -3
  44. package/coverage/{rabbit-ui-kit → ui-kit}/src/robust-api-caller/externalServicesStatsCollector.js.html +3 -3
  45. package/coverage/{rabbit-ui-kit → ui-kit}/src/robust-api-caller/index.html +3 -3
  46. package/coverage/{rabbit-ui-kit → ui-kit}/src/robust-api-caller/robustExternalAPICallerService.js.html +14 -14
  47. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/exolixSwapProvider.js.html +3 -3
  48. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/goexmeSwapProvider.js.html +566 -677
  49. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/index.html +29 -29
  50. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/letsExchangeSwapProvider.js.html +3 -3
  51. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/swapProvider.js.html +349 -349
  52. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +3 -3
  53. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/external-apis/utils.js.html +16 -16
  54. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/baseSwapCreationInfo.js.html +3 -3
  55. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/existingSwap.js.html +143 -143
  56. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/existingSwapWithFiatData.js.html +103 -103
  57. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/index.html +16 -16
  58. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/partner.js.html +3 -3
  59. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/models/swapProviderCoinInfo.js.html +75 -75
  60. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/services/index.html +3 -3
  61. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/services/publicSwapService.js.html +3 -3
  62. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/utils/index.html +3 -3
  63. package/coverage/{rabbit-ui-kit → ui-kit}/src/swaps-lib/utils/swapUtils.js.html +3 -3
  64. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/arrowIcon.jsx.html +3 -3
  65. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/arrowTosca.jsx.html +3 -3
  66. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/arrowWhite.jsx.html +3 -3
  67. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/darkRectangle.jsx.html +3 -3
  68. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/determinedError.jsx.html +3 -3
  69. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/failedValidationIcon.jsx.html +3 -3
  70. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/index.html +3 -3
  71. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/infoIcon.jsx.html +3 -3
  72. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/messageIcon.jsx.html +3 -3
  73. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/noticeQuestionIcon.jsx.html +3 -3
  74. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/successfulValidationIcon.jsx.html +3 -3
  75. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx.html +3 -3
  76. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/assets/wrappedImages/walletIcon.jsx.html +3 -3
  77. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/AssetIcon/AssetIcon.jsx.html +3 -3
  78. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/AssetIcon/index.html +3 -3
  79. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/AssetSelection/AssetSelection.jsx.html +3 -3
  80. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/AssetSelection/index.html +3 -3
  81. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +3 -3
  82. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/BackgroundTitle/index.html +3 -3
  83. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/InformationMessage/InformationMessage.jsx.html +3 -3
  84. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/InformationMessage/index.html +3 -3
  85. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/Input/Input.jsx.html +3 -3
  86. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/Input/index.html +3 -3
  87. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/LoadingDots/LoadingDots.jsx.html +3 -3
  88. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/LoadingDots/index.html +3 -3
  89. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/NoticeIcon/NoticeIcon.jsx.html +3 -3
  90. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/NoticeIcon/index.html +3 -3
  91. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/QrCode/QrCode.jsx.html +3 -3
  92. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/QrCode/index.html +3 -3
  93. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx.html +3 -3
  94. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/RateSelector/index.html +3 -3
  95. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/SupportChat/SupportChat.jsx.html +3 -3
  96. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/SupportChat/index.html +3 -3
  97. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/Textarea/Textarea.jsx.html +3 -3
  98. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/Textarea/index.html +3 -3
  99. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/TitleBox/TitleBox.jsx.html +3 -3
  100. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/TitleBox/index.html +3 -3
  101. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/Tooltip/Tooltip.jsx.html +3 -3
  102. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/Tooltip/index.html +3 -3
  103. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +3 -3
  104. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/TwoLinesOfText/index.html +3 -3
  105. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/Validation/Validation.jsx.html +3 -3
  106. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/Validation/index.html +3 -3
  107. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/buttons/Button/Button.jsx.html +3 -3
  108. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/buttons/Button/index.html +3 -3
  109. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/buttons/Close/Close.jsx.html +3 -3
  110. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/buttons/Close/index.html +3 -3
  111. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/buttons/LinkButton/LinkButton.jsx.html +3 -3
  112. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/buttons/LinkButton/index.html +3 -3
  113. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +3 -3
  114. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/atoms/buttons/RadioButtonWithText/index.html +3 -3
  115. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx.html +3 -3
  116. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/AmountInput/index.html +3 -3
  117. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx.html +3 -3
  118. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/CoinPicker/index.html +3 -3
  119. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx.html +3 -3
  120. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/ColoredNotice/index.html +3 -3
  121. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +3 -3
  122. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/LineWithIconLink/index.html +3 -3
  123. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx.html +3 -3
  124. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/LogoCarousel/index.html +3 -3
  125. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx.html +3 -3
  126. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/SearchableCoinsList/index.html +3 -3
  127. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +3 -3
  128. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/molecules/TitledLineWithIconLink/index.html +3 -3
  129. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +3 -3
  130. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/CoinPickerDialogStep/index.html +3 -3
  131. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/Dialog/Dialog.jsx.html +3 -3
  132. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +3 -3
  133. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/Dialog/DialogButtons/index.html +3 -3
  134. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +3 -3
  135. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/Dialog/DialogStep/index.html +3 -3
  136. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/Dialog/index.html +3 -3
  137. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx.html +3 -3
  138. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/SwapForm/index.html +3 -3
  139. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx.html +3 -3
  140. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/organisms/WaitlistSubscription/index.html +3 -3
  141. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +3 -3
  142. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/components/templates/DeterminedErrorDialogStep/index.html +3 -3
  143. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/hooks/index.html +3 -3
  144. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/hooks/useCallHandlingErrors.js.html +3 -3
  145. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/hooks/useIsHydrated.js.html +3 -3
  146. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/hooks/useReferredState.js.html +3 -3
  147. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/utils/index.html +3 -3
  148. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/utils/inputValueProviders.js.html +3 -3
  149. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/utils/searchCoins.js.html +3 -3
  150. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/utils/textUtils.js.html +3 -3
  151. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/utils/uiUtils.js.html +3 -3
  152. package/coverage/{rabbit-ui-kit → ui-kit}/src/ui-kit/utils/urlQueryUtils.js.html +3 -3
  153. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/BackgroundTitle.stories.jsx.html +3 -3
  154. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/LinesOfText.stories.jsx.html +3 -3
  155. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/LoadingDots.stories.jsx.html +3 -3
  156. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/QrCode.stories.jsx.html +3 -3
  157. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/RateSelector.stories.jsx.html +3 -3
  158. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/Validation.stories.jsx.html +3 -3
  159. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/Button.stories.jsx.html +3 -3
  160. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/Close.stories.jsx.html +3 -3
  161. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/LinkButton.stories.jsx.html +3 -3
  162. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/buttons/index.html +3 -3
  163. package/coverage/{rabbit-ui-kit → ui-kit}/stories/atoms/index.html +3 -3
  164. package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/AmountInput.stories.jsx.html +3 -3
  165. package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/CoinPicker.stories.jsx.html +3 -3
  166. package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/ColoredNotice.stories.jsx.html +3 -3
  167. package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/LineWithIconLink.stories.jsx.html +3 -3
  168. package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/LogoCarousel.stories.jsx.html +3 -3
  169. package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/TitledLineWithIconLink.stories.jsx.html +3 -3
  170. package/coverage/{rabbit-ui-kit → ui-kit}/stories/molecules/index.html +3 -3
  171. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/Dialog.stories.jsx.html +3 -3
  172. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +3 -3
  173. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogButtons/index.html +3 -3
  174. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +3 -3
  175. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/DialogStep/index.html +3 -3
  176. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/Dialog/index.html +3 -3
  177. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/WaitlistSubscription.stories.jsx.html +3 -3
  178. package/coverage/{rabbit-ui-kit → ui-kit}/stories/organisms/index.html +3 -3
  179. package/coverage/{rabbit-ui-kit → ui-kit}/stories/stubs/coins.jsx.html +3 -3
  180. package/coverage/{rabbit-ui-kit → ui-kit}/stories/stubs/exampleContent.jsx.html +3 -3
  181. package/coverage/{rabbit-ui-kit → ui-kit}/stories/stubs/index.html +3 -3
  182. package/coverage/{rabbit-ui-kit → ui-kit}/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +3 -3
  183. package/coverage/{rabbit-ui-kit → ui-kit}/stories/templates/index.html +3 -3
  184. package/dist/index.cjs +120 -169
  185. package/dist/index.cjs.map +1 -1
  186. package/dist/index.modern.js +36 -71
  187. package/dist/index.modern.js.map +1 -1
  188. package/dist/index.module.js +120 -169
  189. package/dist/index.module.js.map +1 -1
  190. package/dist/index.umd.js +120 -169
  191. package/dist/index.umd.js.map +1 -1
  192. package/package.json +1 -1
  193. package/src/swaps-lib/external-apis/goexmeSwapProvider.js +40 -77
  194. package/src/swaps-lib/models/existingSwap.js +1 -1
  195. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/_convertCurrencyMeta.test.js +80 -0
  196. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/_fetchSupportedCurrenciesIfNeeded.test.js +50 -123
  197. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/createSwap.test.js +177 -72
  198. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/getExistingSwapsDetailsAndStatus.test.js +151 -0
  199. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/getSwapInfo.test.js +140 -104
  200. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/helpers.test.js +26 -0
  201. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/integration/PairSupport.int.test.js +31 -60
  202. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/integration/_fetchSupportedCurrenciesIfNeeded.int.test.js +261 -126
  203. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/integration/createSwap.int.test.js +319 -225
  204. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/integration/getSwapInfo.int.test.js +137 -127
@@ -1,7 +1,8 @@
1
1
  import sinon from "sinon";
2
2
  import axios from "axios";
3
- import { describe, it, beforeEach, afterEach, expect } from "vitest";
4
3
  import should from "should";
4
+ import { describe, it, beforeEach, afterEach } from "vitest";
5
+ import BigNumber from "bignumber.js";
5
6
 
6
7
  import { GoexmeSwapProvider } from "../../../external-apis/goexmeSwapProvider.js";
7
8
  import { Cache } from "../../../../common-apis/utils/cache.js";
@@ -26,124 +27,159 @@ const ETH = new Coin(
26
27
  new Blockchain("Ethereum")
27
28
  );
28
29
 
29
- describe("goexmeSwapProvider::getSwapInfo", () => {
30
- const okRate = { result: true, rate: "15", minamount: "0.01", maxamount: "5" };
31
- let provider, axiosStub;
32
-
33
- beforeEach(() => {
34
- provider = new GoexmeSwapProvider("/", new Cache(), () => null, false);
35
- provider._supportedCoins = [
36
- { coin: BTC, code: "BTC", network: "BTC" },
37
- { coin: ETH, code: "ETH", network: "ETH" },
38
- ];
39
- provider._supportedCoinsLastUpdateTimestamp = Date.now();
40
- sinon.stub(provider, "_fetchSupportedCurrenciesIfNeeded").resolves();
41
- axiosStub = sinon.stub(axios, "get").callsFake(url => {
42
- if (url.includes("/pairs")) return Promise.resolve({ status: 200, data: { BTC: ["ETH"] } });
43
- if (url.includes("/rate")) return Promise.resolve({ status: 200, data: okRate });
44
- return Promise.resolve({ status: 200, data: {} });
30
+ describe("goexmeSwapProvider", function () {
31
+ describe("getSwapInfo", function () {
32
+ const okRate = { result: true, rate: "15", minamount: "0.01", maxamount: "5" };
33
+ let provider, axiosStub;
34
+
35
+ beforeEach(() => {
36
+ provider = new GoexmeSwapProvider("/", new Cache(), () => null, false);
37
+ provider._supportedCoins = [
38
+ { coin: BTC, code: "BTC", network: "BTC" },
39
+ { coin: ETH, code: "ETH", network: "ETH" },
40
+ ];
41
+ provider._supportedCoinsLastUpdateTimestamp = Date.now();
42
+ sinon.stub(provider, "_fetchSupportedCurrenciesIfNeeded").resolves();
43
+ axiosStub = sinon.stub(axios, "get").callsFake(url => {
44
+ if (url.includes("/pairs")) return Promise.resolve({ status: 200, data: { BTC: ["ETH"] } });
45
+ if (url.includes("/rate")) return Promise.resolve({ status: 200, data: okRate });
46
+ return Promise.resolve({ status: 200, data: {} });
47
+ });
45
48
  });
46
- });
47
49
 
48
- afterEach(() => sinon.restore());
50
+ afterEach(() => sinon.restore());
49
51
 
50
- it("returns NOT_SUPPORTED if pair absent", async () => {
51
- axiosStub.withArgs(sinon.match(/\/pairs/)).resolves({ status: 200, data: { BTC: ["USDT"] } });
52
- (await provider.getSwapInfo(BTC, ETH, "1")).reason.should.equal(SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED);
53
- });
52
+ it("Should return TOO_LOW and TOO_HIGH against min/max", async () => {
53
+ let info = await provider.getSwapInfo(BTC, ETH, "0.001");
54
+ info.reason.should.equal(SwapProvider.NO_SWAPS_REASONS.TOO_LOW);
55
+ info = await provider.getSwapInfo(BTC, ETH, "10");
56
+ info.reason.should.equal(SwapProvider.NO_SWAPS_REASONS.TOO_HIGH);
57
+ });
54
58
 
55
- it("returns TOO_LOW / TOO_HIGH against min/max", async () => {
56
- (await provider.getSwapInfo(BTC, ETH, "0.001")).reason.should.equal(SwapProvider.NO_SWAPS_REASONS.TOO_LOW);
57
- (await provider.getSwapInfo(BTC, ETH, "10")).reason.should.equal(SwapProvider.NO_SWAPS_REASONS.TOO_HIGH);
58
- });
59
+ it("Should handle case with no min/max limits", async () => {
60
+ axiosStub.withArgs(sinon.match(/\/rate/)).resolves({ status: 200, data: { result: true, rate: "15" } });
61
+ const info = await provider.getSwapInfo(BTC, ETH, "1");
62
+ info.result.should.be.true();
63
+ });
59
64
 
60
- it("handles case with no min/max limits", async () => {
61
- axiosStub.withArgs(sinon.match(/\/rate/)).resolves({ status: 200, data: { result: true, rate: "15" } });
62
- const r = await provider.getSwapInfo(BTC, ETH, "1");
63
- r.result.should.be.true();
64
- });
65
+ it("Should map HTTP 429 to REQUESTS_LIMIT_EXCEEDED", async () => {
66
+ axiosStub.withArgs(sinon.match(/\/rate/)).rejects({ response: { status: 429 } });
67
+ const info = await provider.getSwapInfo(BTC, ETH, "1");
68
+ info.reason.should.equal(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);
69
+ });
65
70
 
66
- it("maps 429 to REQUESTS_LIMIT_EXCEEDED", async () => {
67
- axiosStub.withArgs(sinon.match(/\/rate/)).rejects({ response: { status: 429 } });
68
- const r = await provider.getSwapInfo(BTC, ETH, "1");
69
- r.reason.should.equal(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);
70
- });
71
+ it("Should return valid structure on success", async () => {
72
+ const info = await provider.getSwapInfo(BTC, ETH, "1");
73
+ info.result.should.be.true();
74
+ parseFloat(info.rate).should.be.greaterThan(0);
75
+ });
71
76
 
72
- it("returns valid structure on success", async () => {
73
- const r = await provider.getSwapInfo(BTC, ETH, "1");
74
- r.result.should.be.true();
75
- parseFloat(r.rate).should.be.greaterThan(0);
76
- });
77
+ it("Should send proper params to /rate", async () => {
78
+ await provider.getSwapInfo(BTC, ETH, "1");
79
+ const call = axiosStub.args.find(a => a[0].includes("/rate"));
80
+ const params = call[1].params;
81
+ params.should.match({ from: "BTC", to: "ETH", amount: "1" });
82
+ });
77
83
 
78
- it("sends proper params to /rate", async () => {
79
- await provider.getSwapInfo(BTC, ETH, "1");
80
- const p = axiosStub.args.find(a => a[0].includes("/rate"))[1].params;
81
- p.should.match({ from: "BTC", to: "ETH", amount: "1" });
82
- });
84
+ it("Should throw when amount ≤ 0", async () => {
85
+ await provider.getSwapInfo(BTC, ETH, "0").should.be.rejected();
86
+ });
83
87
 
84
- it("throws on non-Coin params", async () => {
85
- await expect(provider.getSwapInfo({}, {}, "1")).rejects.toThrow();
86
- });
87
- });
88
+ it("Should return valid result when amount is empty string", async () => {
89
+ const info = await provider.getSwapInfo(BTC, ETH, "");
90
+ info.result.should.be.true();
91
+ });
88
92
 
89
- describe("goexmeSwapProvider::status mapping & existing swaps", () => {
90
- const raw = {
91
- status: "success",
92
- id: "swap1",
93
- date: "21-07-2023 04:17:30",
94
- from: "BTC",
95
- to: "ETH",
96
- depositAddress: "addr-in",
97
- destinationAddress: "addr-out",
98
- amountFrom: "1",
99
- amountTo: "0.01",
100
- result: true,
101
- };
102
- let provider, axiosStub;
103
-
104
- beforeEach(() => {
105
- provider = new GoexmeSwapProvider("/", new Cache(), () => null, false);
106
- provider._supportedCoins = [
107
- { coin: BTC, code: "BTC", network: "BTC" },
108
- { coin: ETH, code: "ETH", network: "ETH" },
109
- ];
110
- sinon.stub(provider, "_fetchSupportedCurrenciesIfNeeded").resolves();
111
- axiosStub = sinon.stub(axios, "get").resolves({ status: 200, data: raw });
112
- });
93
+ it("Should return valid result when amount is non-string", async () => {
94
+ const info = await provider.getSwapInfo(BTC, ETH, 1);
95
+ info.result.should.be.true();
96
+ });
113
97
 
114
- afterEach(() => sinon.restore());
98
+ it("Should include fix=true only when fixed quote requested", async () => {
99
+ await provider.getSwapInfo(BTC, ETH, "1", false);
100
+ axiosStub.lastCall.args[1].params.should.not.have.property("fix");
115
101
 
116
- it("maps every status string", () => {
117
- provider._mapGoexmeStatus("time_expired").should.equal(SwapProvider.SWAP_STATUSES.EXPIRED);
118
- provider._mapGoexmeStatus("deposit_received").should.equal(SwapProvider.SWAP_STATUSES.PAYMENT_RECEIVED);
119
- provider._mapGoexmeStatus("failed").should.equal(SwapProvider.SWAP_STATUSES.FAILED);
120
- provider._mapGoexmeStatus("exchanging").should.equal(SwapProvider.SWAP_STATUSES.EXCHANGING);
121
- provider._mapGoexmeStatus("reverted").should.equal(SwapProvider.SWAP_STATUSES.REFUNDED);
122
- });
102
+ await provider.getSwapInfo(BTC, ETH, "1", true);
103
+ axiosStub.lastCall.args[1].params.fix.should.be.true();
104
+ });
123
105
 
124
- it("throws on unknown status", () => {
125
- (() => provider._mapGoexmeStatus("weird")).should.throw(/Unknown Goexme status/);
126
- });
106
+ it("Should propagate unexpected network error unchanged", async () => {
107
+ const boom = new Error("net-boom");
108
+ axiosStub.rejects(boom);
109
+ await provider.getSwapInfo(BTC, ETH, "1").should.be.rejectedWith(boom);
110
+ });
127
111
 
128
- it("skips 404 responses", async () => {
129
- axiosStub.onFirstCall().resolves({ status: 404 });
130
- axiosStub.onSecondCall().resolves({ status: 200, data: raw });
131
- const res = await provider.getExistingSwapsDetailsAndStatus(["x", "swap1"]);
132
- res.swaps.should.have.length(1);
133
- res.swaps[0].swapId.should.equal("swap1");
134
- });
112
+ it("Should return NOT_SUPPORTED when provider responds { result:false } with 200", async () => {
113
+ axiosStub.withArgs(sinon.match(/\/rate/)).resolves({ status: 200, data: { result: false } });
114
+ const info = await provider.getSwapInfo(BTC, ETH, "1");
115
+ info.result.should.be.false();
116
+ info.reason.should.equal(SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED);
117
+ });
135
118
 
136
- it("filters out items when coins unsupported", async () => {
137
- axiosStub.resetBehavior();
138
- axiosStub.resolves({ status: 200, data: { ...raw, from: "LTC" } });
139
- const res = await provider.getExistingSwapsDetailsAndStatus(["swapX"]);
140
- res.swaps.should.eql([]);
141
- });
119
+ it("Should throw when fromCoin/toCoin are not Coin instances", async () => {
120
+ await provider.getSwapInfo({}, {}, "1").should.be.rejected();
121
+ });
142
122
 
143
- it("propagates 429", async () => {
144
- axiosStub.resetBehavior();
145
- axiosStub.rejects({ response: { status: 429 } });
146
- const r = await provider.getExistingSwapsDetailsAndStatus(["id"]);
147
- r.reason.should.equal(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);
123
+ it("Should throw when amountIsToReceive = true", async () => {
124
+ await provider.getSwapInfo(BTC, ETH, "1", false, null, true).should.be.rejected();
125
+ });
126
+
127
+ it("Should return NOT_SUPPORTED when either fromCoin or toCoin is unsupported", async () => {
128
+ const unsupported = new Coin(
129
+ "Unsupported",
130
+ "UNS",
131
+ "UNS",
132
+ 8,
133
+ null,
134
+ "unit",
135
+ null,
136
+ null,
137
+ 1,
138
+ null,
139
+ [],
140
+ null,
141
+ new Blockchain("Unsupported")
142
+ );
143
+ let info = await provider.getSwapInfo(unsupported, ETH, "1");
144
+ info.result.should.be.false();
145
+ info.reason.should.equal(SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED);
146
+
147
+ info = await provider.getSwapInfo(BTC, unsupported, "1");
148
+ info.result.should.be.false();
149
+ info.reason.should.equal(SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED);
150
+ });
151
+
152
+ it("Should return NOT_SUPPORTED when /rate responds with unexpected data shape", async () => {
153
+ axiosStub.withArgs(sinon.match(/\/rate/)).resolves({ status: 200, data: {} });
154
+ const info = await provider.getSwapInfo(BTC, ETH, "1");
155
+ info.result.should.be.false();
156
+ info.reason.should.equal(SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED);
157
+ });
158
+
159
+ it("Should copy provider .fix flag into info.fixed", async () => {
160
+ axiosStub.withArgs(sinon.match(/\/rate/)).resolves({
161
+ status: 200,
162
+ data: { result: true, rate: "15", minamount: "0.01", maxamount: "5", fix: true },
163
+ });
164
+ const info = await provider.getSwapInfo(BTC, ETH, "1");
165
+ info.result.should.be.true();
166
+ info.fixed.should.be.true();
167
+ });
168
+
169
+ it("Should return TOO_LOW and TOO_HIGH with correct smallestMin and greatestMax", async () => {
170
+ axiosStub.withArgs(sinon.match(/\/rate/)).resolves({
171
+ status: 200,
172
+ data: { result: true, rate: "15", minamount: "0.5", maxamount: "5" },
173
+ });
174
+ let info = await provider.getSwapInfo(BTC, ETH, "0.1");
175
+ info.result.should.be.false();
176
+ info.reason.should.equal(SwapProvider.NO_SWAPS_REASONS.TOO_LOW);
177
+ info.smallestMin.should.equal("0.50000000");
178
+
179
+ info = await provider.getSwapInfo(BTC, ETH, "10");
180
+ info.result.should.be.false();
181
+ info.reason.should.equal(SwapProvider.NO_SWAPS_REASONS.TOO_HIGH);
182
+ info.greatestMax.should.equal("5.00000000");
183
+ });
148
184
  });
149
185
  });
@@ -0,0 +1,26 @@
1
+ import should from "should";
2
+ import { describe, it } from "vitest";
3
+
4
+ import { GoexmeSwapProvider } from "../../../external-apis/goexmeSwapProvider.js";
5
+ import { Cache } from "../../../../common-apis/utils/cache.js";
6
+
7
+ describe("goexmeSwapProvider", function () {
8
+ describe("helpers", function () {
9
+ it("getSwapCreationInfoTtlMs should return 30000 ms", () => {
10
+ const provider = new GoexmeSwapProvider("/", new Cache());
11
+ provider.getSwapCreationInfoTtlMs().should.equal(30000);
12
+ });
13
+
14
+ it("_parseGoexmeDate should convert date string to epoch", () => {
15
+ const timestamp = GoexmeSwapProvider._parseGoexmeDate("01.02.2024 03:04:05");
16
+ timestamp.should.equal(Date.parse("2024-02-01T03:04:05Z"));
17
+ });
18
+
19
+ it("getPartnersList should return single partner", async () => {
20
+ const provider = new GoexmeSwapProvider("/", new Cache());
21
+ const partners = await provider.getPartnersList();
22
+ partners.should.have.length(1);
23
+ partners[0].should.have.property("name", "GoExme");
24
+ });
25
+ });
26
+ });
@@ -1,97 +1,68 @@
1
1
  import "dotenv/config";
2
- import { describe, it, beforeAll, expect } from "vitest";
2
+ import sinon from "sinon";
3
+ import should from "should";
4
+ import { describe, it, beforeAll, afterEach } from "vitest";
5
+ import axios from "axios";
6
+
3
7
  import { Cache } from "../../../../../common-apis/utils/cache.js";
4
8
  import { GoexmeSwapProvider } from "../../../../external-apis/goexmeSwapProvider.js";
5
9
 
6
10
  const GOEXME_API_KEY = process.env.GOEXME_API_KEY?.trim?.() || "";
7
11
  const maybeDescribe = GOEXME_API_KEY ? describe : describe.skip;
8
12
 
9
- /**
10
- * ------------------------------------------------------------------
11
- * Positive-case: every token below **must** be exchangable
12
- * against a major counterpart (BTC, or ETH for BTC)
13
- * ------------------------------------------------------------------
14
- */
15
13
  const ALLOWED_RABBIT_TICKERS = [
16
14
  "BNBBEP20",
17
15
  "BTC",
18
16
  "DOGE",
19
17
  "DOT",
20
18
  "ETH",
21
- // "GMTSOL",
22
19
  "LTC",
23
20
  "SOL",
24
21
  "TRX",
25
22
  "USDCERC20",
26
23
  "USDTERC20",
27
- // "USDTBEP20",
28
24
  "USDTSOL",
29
25
  "USDTTRC20",
30
- "XMR",
26
+ // "XMR", // XMR is not supported by Goexme (04.08.2025)
31
27
  "XRP",
32
28
  ];
33
29
 
34
- /**
35
- * ------------------------------------------------------------------
36
- * Negative-case: these tokens MUST NOT be supported by the adapter
37
- * ------------------------------------------------------------------
38
- */
39
30
  const FORBIDDEN_TICKERS = ["ADA", "1INCH", "TRUMP"];
40
31
 
41
- /**
42
- * ------------------------------------------------------------------
43
- * Helper treat “pair supported” broadly:
44
- * • response.result === true
45
- * • OR response.reason is TOO_LOW / TOO_HIGH
46
- * Any other outcome (NOT_SUPPORTED etc.) means the pair fails
47
- * ------------------------------------------------------------------
48
- */
49
- function isPairSupported(resp, provider) {
50
- const { TOO_LOW, TOO_HIGH } = provider.constructor.NO_SWAPS_REASONS;
51
- return resp.result === true || [TOO_LOW, TOO_HIGH].includes(resp.reason);
32
+ function checkPairSupported(response, providerInstance) {
33
+ const { TOO_LOW, TOO_HIGH } = providerInstance.constructor.NO_SWAPS_REASONS;
34
+ return response.result === true || [TOO_LOW, TOO_HIGH].includes(response.reason);
52
35
  }
53
36
 
54
- maybeDescribe("GoexmeSwapProvider – pairs availability (live)", () => {
55
- let provider;
56
-
57
- beforeAll(async () => {
58
- provider = new GoexmeSwapProvider("/", new Cache(), () => null, false, GOEXME_API_KEY);
59
- await provider._fetchSupportedCurrenciesIfNeeded();
60
- await provider._ensurePairsLoaded();
61
- });
37
+ maybeDescribe("external-apis/goexmeSwapProvider integration", function () {
38
+ describe("pair support (live)", function () {
39
+ let provider;
62
40
 
63
- /* ------------------------------------------------------------------
64
- * Positive tests one per *allowed* Rabbit-ticker
65
- * ---------------------------------------------------------------- */
66
- ALLOWED_RABBIT_TICKERS.forEach(ticker => {
67
- const fromTicker = ticker;
68
- // Use BTC as the counterpart for every token except BTC itself.
69
- const toTicker = ticker === "BTC" ? "ETH" : "BTC";
41
+ beforeAll(async function () {
42
+ provider = new GoexmeSwapProvider("/", new Cache(), () => null, false, GOEXME_API_KEY);
43
+ await provider._fetchSupportedCurrenciesIfNeeded();
44
+ });
70
45
 
71
- it(`supports swaps for ${fromTicker} → ${toTicker}`, async () => {
72
- const fromCoin = provider.getCoinByTickerIfPresent(fromTicker);
73
- const toCoin = provider.getCoinByTickerIfPresent(toTicker);
46
+ ALLOWED_RABBIT_TICKERS.forEach(fromTicker => {
47
+ const toTicker = fromTicker === "BTC" ? "ETH" : "BTC";
74
48
 
75
- // Sanity: both coins must be known to the adapter
76
- expect(fromCoin, "fromCoin missing").toBeTruthy();
77
- expect(toCoin, "toCoin missing").toBeTruthy();
49
+ it(`Should support swaps for ${fromTicker}→${toTicker}`, async function () {
50
+ const fromCoin = provider.getCoinByTickerIfPresent(fromTicker);
51
+ const toCoin = provider.getCoinByTickerIfPresent(toTicker);
78
52
 
79
- const resp = await provider.getSwapInfo(fromCoin, toCoin, "1", false);
53
+ should.exist(fromCoin);
54
+ should.exist(toCoin);
80
55
 
81
- expect(
82
- isPairSupported(resp, provider),
83
- `Pair ${fromTicker}/${toTicker} unexpectedly unsupported: ${JSON.stringify(resp)}`
84
- ).toBe(true);
56
+ const response = await provider.getSwapInfo(fromCoin, toCoin, "1", false);
57
+ checkPairSupported(response, provider).should.be.true();
58
+ });
85
59
  });
86
- });
87
60
 
88
- /* ------------------------------------------------------------------
89
- * Negative tests one per *forbidden* ticker
90
- * ---------------------------------------------------------------- */
91
- FORBIDDEN_TICKERS.forEach(ticker => {
92
- it(`does NOT support swaps involving forbidden token ${ticker}`, async () => {
93
- const coin = provider.getCoinByTickerIfPresent(ticker);
94
- expect(coin).toBeNull();
61
+ FORBIDDEN_TICKERS.forEach(ticker => {
62
+ it(`Should not support swaps involving forbidden token ${ticker}`, function () {
63
+ const coin = provider.getCoinByTickerIfPresent(ticker);
64
+ should(coin).be.null();
65
+ });
95
66
  });
96
67
  });
97
68
  });