@rabbitio/ui-kit 1.0.0-beta.123 → 1.0.0-beta.125

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 (219) hide show
  1. package/coverage/clover.xml +714 -670
  2. package/coverage/coverage-final.json +10 -10
  3. package/coverage/index.html +23 -23
  4. package/coverage/rabbit-ui-kit/index.html +1 -1
  5. package/coverage/rabbit-ui-kit/index.js.html +1 -1
  6. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js.html +1 -1
  7. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/index.html +1 -1
  8. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/metrikaAdapter.js.html +1 -1
  9. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/mixpanelAdapter.js.html +1 -1
  10. package/coverage/rabbit-ui-kit/src/common-apis/adapters/axiosAdapter.js.html +1 -1
  11. package/coverage/rabbit-ui-kit/src/common-apis/adapters/index.html +1 -1
  12. package/coverage/rabbit-ui-kit/src/common-apis/adapters/qrUtils.js.html +1 -1
  13. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/apiGroups.js.html +1 -1
  14. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/emailAPI.js.html +1 -1
  15. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/index.html +1 -1
  16. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/ipAddressProviders.js.html +1 -1
  17. package/coverage/rabbit-ui-kit/src/common-apis/globalConstants.jsx.html +1 -1
  18. package/coverage/rabbit-ui-kit/src/common-apis/index.html +1 -1
  19. package/coverage/rabbit-ui-kit/src/common-apis/models/blockchain.js.html +1 -1
  20. package/coverage/rabbit-ui-kit/src/common-apis/models/coin.js.html +1 -1
  21. package/coverage/rabbit-ui-kit/src/common-apis/models/index.html +1 -1
  22. package/coverage/rabbit-ui-kit/src/common-apis/models/protocol.js.html +1 -1
  23. package/coverage/rabbit-ui-kit/src/common-apis/services/fiatCurrenciesService.js.html +1 -1
  24. package/coverage/rabbit-ui-kit/src/common-apis/services/index.html +1 -1
  25. package/coverage/rabbit-ui-kit/src/common-apis/utils/amountUtils.js.html +40 -16
  26. package/coverage/rabbit-ui-kit/src/common-apis/utils/cache.js.html +6 -6
  27. package/coverage/rabbit-ui-kit/src/common-apis/utils/emailUtils.js.html +1 -1
  28. package/coverage/rabbit-ui-kit/src/common-apis/utils/errorUtils.js.html +1 -1
  29. package/coverage/rabbit-ui-kit/src/common-apis/utils/index.html +11 -11
  30. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/index.html +1 -1
  31. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logger.js.html +5 -5
  32. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logsStorage.js.html +3 -3
  33. package/coverage/rabbit-ui-kit/src/common-apis/utils/postponeExecution.js.html +1 -1
  34. package/coverage/rabbit-ui-kit/src/common-apis/utils/rabbitTicker.js.html +1 -1
  35. package/coverage/rabbit-ui-kit/src/common-apis/utils/safeStringify.js.html +1 -1
  36. package/coverage/rabbit-ui-kit/src/index.html +1 -1
  37. package/coverage/rabbit-ui-kit/src/index.js.html +1 -1
  38. package/coverage/rabbit-ui-kit/src/robust-api-caller/cacheAndConcurrentRequestsResolver.js.html +1 -1
  39. package/coverage/rabbit-ui-kit/src/robust-api-caller/cachedRobustExternalApiCallerService.js.html +1 -1
  40. package/coverage/rabbit-ui-kit/src/robust-api-caller/cancelProcessing.js.html +1 -1
  41. package/coverage/rabbit-ui-kit/src/robust-api-caller/concurrentCalculationsMetadataHolder.js.html +1 -1
  42. package/coverage/rabbit-ui-kit/src/robust-api-caller/externalApiProvider.js.html +1 -1
  43. package/coverage/rabbit-ui-kit/src/robust-api-caller/externalServicesStatsCollector.js.html +1 -1
  44. package/coverage/rabbit-ui-kit/src/robust-api-caller/index.html +1 -1
  45. package/coverage/rabbit-ui-kit/src/robust-api-caller/robustExternalAPICallerService.js.html +1 -1
  46. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/changeHeroSwapProvider.js.html +1 -1
  47. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/changeNowSwapProvider.js.html +1 -1
  48. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/exolixSwapProvider.js.html +4 -4
  49. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/goexmeSwapProvider.js.html +1 -1
  50. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/index.html +18 -18
  51. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/letsExchangeSwapProvider.js.html +1 -1
  52. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/retriableErrorsUtils.js.html +1 -1
  53. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +36 -36
  54. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +183 -93
  55. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/utils.js.html +14 -14
  56. package/coverage/rabbit-ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +1 -1
  57. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwap.js.html +1 -1
  58. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +1 -1
  59. package/coverage/rabbit-ui-kit/src/swaps-lib/models/index.html +1 -1
  60. package/coverage/rabbit-ui-kit/src/swaps-lib/models/partner.js.html +1 -1
  61. package/coverage/rabbit-ui-kit/src/swaps-lib/models/swapProviderCoinInfo.js.html +1 -1
  62. package/coverage/rabbit-ui-kit/src/swaps-lib/services/index.html +1 -1
  63. package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +1 -1
  64. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/index.html +1 -1
  65. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/swapUtils.js.html +1 -1
  66. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowIcon.jsx.html +1 -1
  67. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowTosca.jsx.html +1 -1
  68. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowWhite.jsx.html +1 -1
  69. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/darkRectangle.jsx.html +1 -1
  70. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/determinedError.jsx.html +1 -1
  71. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/failedValidationIcon.jsx.html +1 -1
  72. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/index.html +1 -1
  73. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/infoIcon.jsx.html +1 -1
  74. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/messageIcon.jsx.html +1 -1
  75. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/noticeQuestionIcon.jsx.html +1 -1
  76. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/successfulValidationIcon.jsx.html +1 -1
  77. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx.html +1 -1
  78. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/walletIcon.jsx.html +1 -1
  79. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetIcon/AssetIcon.jsx.html +1 -1
  80. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetIcon/index.html +1 -1
  81. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/AssetSelection.jsx.html +1 -1
  82. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/index.html +1 -1
  83. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +1 -1
  84. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/index.html +1 -1
  85. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/InformationMessage.jsx.html +1 -1
  86. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/index.html +1 -1
  87. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Input/Input.jsx.html +1 -1
  88. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Input/index.html +1 -1
  89. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/LoadingDots/LoadingDots.jsx.html +1 -1
  90. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/LoadingDots/index.html +1 -1
  91. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/NoticeIcon.jsx.html +1 -1
  92. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/index.html +1 -1
  93. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/QrCode/QrCode.jsx.html +1 -1
  94. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/QrCode/index.html +1 -1
  95. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx.html +1 -1
  96. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/index.html +1 -1
  97. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/SupportChat.jsx.html +1 -1
  98. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/index.html +1 -1
  99. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/Textarea.jsx.html +1 -1
  100. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/index.html +1 -1
  101. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/TitleBox.jsx.html +1 -1
  102. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/index.html +1 -1
  103. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/Tooltip.jsx.html +1 -1
  104. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/index.html +1 -1
  105. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +1 -1
  106. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/index.html +1 -1
  107. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/Validation.jsx.html +1 -1
  108. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/index.html +1 -1
  109. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Button/Button.jsx.html +20 -5
  110. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Button/index.html +5 -5
  111. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Close/Close.jsx.html +1 -1
  112. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Close/index.html +1 -1
  113. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/LinkButton/LinkButton.jsx.html +1 -1
  114. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/LinkButton/index.html +1 -1
  115. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +1 -1
  116. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/index.html +1 -1
  117. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx.html +1 -1
  118. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/index.html +1 -1
  119. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx.html +1 -1
  120. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/CoinPicker/index.html +1 -1
  121. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx.html +1 -1
  122. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/ColoredNotice/index.html +1 -1
  123. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +1 -1
  124. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LineWithIconLink/index.html +1 -1
  125. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx.html +1 -1
  126. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LogoCarousel/index.html +1 -1
  127. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx.html +1 -1
  128. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/SearchableCoinsList/index.html +1 -1
  129. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +1 -1
  130. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/index.html +1 -1
  131. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +1 -1
  132. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/CoinPickerDialogStep/index.html +1 -1
  133. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/Dialog.jsx.html +1 -1
  134. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +1 -1
  135. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/index.html +1 -1
  136. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +1 -1
  137. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/index.html +1 -1
  138. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/index.html +1 -1
  139. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx.html +1 -1
  140. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/index.html +1 -1
  141. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx.html +1 -1
  142. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/WaitlistSubscription/index.html +1 -1
  143. package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +1 -1
  144. package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/index.html +1 -1
  145. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/index.html +1 -1
  146. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useCallHandlingErrors.js.html +1 -1
  147. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useIsHydrated.js.html +1 -1
  148. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useReferredState.js.html +1 -1
  149. package/coverage/rabbit-ui-kit/src/ui-kit/utils/index.html +1 -1
  150. package/coverage/rabbit-ui-kit/src/ui-kit/utils/inputValueProviders.js.html +1 -1
  151. package/coverage/rabbit-ui-kit/src/ui-kit/utils/searchCoins.js.html +1 -1
  152. package/coverage/rabbit-ui-kit/src/ui-kit/utils/textUtils.js.html +1 -1
  153. package/coverage/rabbit-ui-kit/src/ui-kit/utils/uiUtils.js.html +1 -1
  154. package/coverage/rabbit-ui-kit/src/ui-kit/utils/urlQueryUtils.js.html +1 -1
  155. package/coverage/rabbit-ui-kit/stories/atoms/BackgroundTitle.stories.jsx.html +1 -1
  156. package/coverage/rabbit-ui-kit/stories/atoms/LinesOfText.stories.jsx.html +1 -1
  157. package/coverage/rabbit-ui-kit/stories/atoms/LoadingDots.stories.jsx.html +1 -1
  158. package/coverage/rabbit-ui-kit/stories/atoms/QrCode.stories.jsx.html +1 -1
  159. package/coverage/rabbit-ui-kit/stories/atoms/RateSelector.stories.jsx.html +1 -1
  160. package/coverage/rabbit-ui-kit/stories/atoms/Validation.stories.jsx.html +1 -1
  161. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Button.stories.jsx.html +7 -4
  162. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Close.stories.jsx.html +1 -1
  163. package/coverage/rabbit-ui-kit/stories/atoms/buttons/LinkButton.stories.jsx.html +1 -1
  164. package/coverage/rabbit-ui-kit/stories/atoms/buttons/index.html +5 -5
  165. package/coverage/rabbit-ui-kit/stories/atoms/index.html +1 -1
  166. package/coverage/rabbit-ui-kit/stories/molecules/AmountInput.stories.jsx.html +1 -1
  167. package/coverage/rabbit-ui-kit/stories/molecules/CoinPicker.stories.jsx.html +1 -1
  168. package/coverage/rabbit-ui-kit/stories/molecules/ColoredNotice.stories.jsx.html +1 -1
  169. package/coverage/rabbit-ui-kit/stories/molecules/LineWithIconLink.stories.jsx.html +1 -1
  170. package/coverage/rabbit-ui-kit/stories/molecules/LogoCarousel.stories.jsx.html +1 -1
  171. package/coverage/rabbit-ui-kit/stories/molecules/TitledLineWithIconLink.stories.jsx.html +1 -1
  172. package/coverage/rabbit-ui-kit/stories/molecules/index.html +1 -1
  173. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/Dialog.stories.jsx.html +1 -1
  174. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +1 -1
  175. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/index.html +1 -1
  176. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +1 -1
  177. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/index.html +1 -1
  178. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/index.html +1 -1
  179. package/coverage/rabbit-ui-kit/stories/organisms/WaitlistSubscription.stories.jsx.html +1 -1
  180. package/coverage/rabbit-ui-kit/stories/organisms/index.html +1 -1
  181. package/coverage/rabbit-ui-kit/stories/stubs/coins.jsx.html +1 -1
  182. package/coverage/rabbit-ui-kit/stories/stubs/exampleContent.jsx.html +1 -1
  183. package/coverage/rabbit-ui-kit/stories/stubs/index.html +1 -1
  184. package/coverage/rabbit-ui-kit/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +1 -1
  185. package/coverage/rabbit-ui-kit/stories/templates/index.html +1 -1
  186. package/dist/global.css +10 -0
  187. package/dist/global.css.map +1 -1
  188. package/dist/index.cjs +138 -109
  189. package/dist/index.cjs.map +1 -1
  190. package/dist/index.css +3 -0
  191. package/dist/index.css.map +1 -1
  192. package/dist/index.modern.js +48 -15
  193. package/dist/index.modern.js.map +1 -1
  194. package/dist/index.module.js +138 -109
  195. package/dist/index.module.js.map +1 -1
  196. package/dist/index.umd.js +138 -109
  197. package/dist/index.umd.js.map +1 -1
  198. package/docker-compose.loadtest.yml +64 -0
  199. package/package.json +1 -1
  200. package/src/common-apis/utils/amountUtils.js +18 -10
  201. package/src/swaps-lib/external-apis/exolixSwapProvider.js +1 -1
  202. package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +32 -2
  203. package/src/swaps-lib/test/external-apis/goexmeSwapProvider/integration/PairSupport.int.test.js +4 -1
  204. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getSwapInfo.test.js +42 -0
  205. package/src/ui-kit/assets/styles/_mixins.scss +9 -0
  206. package/src/ui-kit/assets/styles/global.scss +4 -0
  207. package/src/ui-kit/components/atoms/buttons/Button/Button.jsx +6 -1
  208. package/src/ui-kit/components/atoms/buttons/Button/Button.module.scss +4 -0
  209. package/tools/rate-limits-tester/Dockerfile.loadtest +18 -0
  210. package/tools/rate-limits-tester/docker-compose.loadtest.yml +65 -0
  211. package/tools/rate-limits-tester/reports/fixed-pair-rps-dedicated-changehero-2026-03-10T14-57-24-907Z.json +572 -0
  212. package/tools/rate-limits-tester/reports/fixed-pair-rps-dedicated-changenow-2026-03-10T15-30-53-033Z.json +572 -0
  213. package/tools/rate-limits-tester/reports/fixed-pair-rps-dedicated-exolix-2026-03-10T13-49-07-452Z.json +518 -0
  214. package/tools/rate-limits-tester/reports/fixed-pair-rps-dedicated-letsexchange-2026-03-10T14-26-27-034Z.json +572 -0
  215. package/tools/rate-limits-tester/reports/fixed-pair-rps-report-2026-03-05T23-05-54-995Z.json +140 -0
  216. package/tools/rate-limits-tester/reports/fixed-pair-rps-report-2026-03-10T10-59-26-699Z.json +83 -0
  217. package/tools/rate-limits-tester/reports/fixed-pair-rps-report-2026-03-10T11-19-31-962Z.json +121 -0
  218. package/tools/rate-limits-tester/reports/fixed-pair-rps-report-2026-03-10T12-35-39-529Z.json +21 -0
  219. package/tools/rate-limits-tester/reports/fixed-pair-rps-report-2026-03-10T13-00-46-343Z.json +115 -0
package/dist/index.cjs CHANGED
@@ -1178,7 +1178,7 @@ if (process.env.NODE_ENV !== 'production') {
1178
1178
 
1179
1179
  var PropTypes = propTypes;
1180
1180
 
1181
- var styles$1 = {"button":"_sauyf","disable":"_sfDzK","full-width-on-tablets":"_BDnqx","full-width-on-mobiles":"_M-OBj","xl":"_5L7n-","lg":"_CnIaG","md":"_-jgwD","sm":"_D09m1","small-padding-on-small-mobiles":"_O-WBl","primary":"_PSWCT","primary-bordered":"_TI-uC","primary-transparent":"_5EoQX","transparent":"_WsTvD","transparent-bordered":"_-3Tg3","transparent-without-shadow":"_6r-Yv","white":"_kNilL","white-flat":"_ZQOSa","button-primary-dots-wrapper":"_WKj7r","show":"_oc-vQ","button-success-icon":"_srU2b","button-text":"_dtwdo","hide":"_8oZMx","button-with-icon":"_5EuuY","button-with-icon-text":"_e54qH","big-icon":"_Z-ja-"};
1181
+ var styles$1 = {"button":"_sauyf","disable":"_sfDzK","no-shadow":"_Z1bNm","full-width-on-tablets":"_BDnqx","full-width-on-mobiles":"_M-OBj","xl":"_5L7n-","lg":"_CnIaG","md":"_-jgwD","sm":"_D09m1","small-padding-on-small-mobiles":"_O-WBl","primary":"_PSWCT","primary-bordered":"_TI-uC","primary-transparent":"_5EoQX","transparent":"_WsTvD","transparent-bordered":"_-3Tg3","transparent-without-shadow":"_6r-Yv","white":"_kNilL","white-flat":"_ZQOSa","button-primary-dots-wrapper":"_WKj7r","show":"_oc-vQ","button-success-icon":"_srU2b","button-text":"_dtwdo","hide":"_8oZMx","button-with-icon":"_5EuuY","button-with-icon-text":"_e54qH","big-icon":"_Z-ja-"};
1182
1182
 
1183
1183
  var styles = {"loading-dots":"_NQPs8","no-margins":"_p92yB","dot":"_nsy9P","dots":"_zyA-B","colored":"_thAVE","big":"_q-1ts","small":"_FP0TD","extra-small":"_nwIyw","align-left":"_fJ2Vv","align-right":"_IpuFT"};
1184
1184
 
@@ -1245,6 +1245,7 @@ LoadingDots.propTypes = {
1245
1245
  * @param {boolean} [props.checkmarkOnClick=false] - Shows a checkmark instead of content for a few seconds after click.
1246
1246
  * @param {boolean} [props.propagatePrimaryButtonClick=true] - Propagates the primary button click event if true.
1247
1247
  * @param {boolean} [props.smallPaddingOnSmallMobiles=false] - Enables smaller paddings for extra-small screen sizes.
1248
+ * @param {boolean} [props.noShadow=false] - Removes box-shadow styling when true.
1248
1249
  * @param {Function} [props.handleError=(func) => func()] - Function to handle errors during button click events.
1249
1250
  * @returns {React.ReactElement}
1250
1251
  */
@@ -1285,6 +1286,8 @@ var Button = function Button(_ref) {
1285
1286
  propagatePrimaryButtonClick = _ref$propagatePrimary === void 0 ? true : _ref$propagatePrimary,
1286
1287
  _ref$smallPaddingOnSm = _ref.smallPaddingOnSmallMobiles,
1287
1288
  smallPaddingOnSmallMobiles = _ref$smallPaddingOnSm === void 0 ? false : _ref$smallPaddingOnSm,
1289
+ _ref$noShadow = _ref.noShadow,
1290
+ noShadow = _ref$noShadow === void 0 ? false : _ref$noShadow,
1288
1291
  _ref$handleError = _ref.handleError,
1289
1292
  handleError = _ref$handleError === void 0 ? function (func, event) {
1290
1293
  return func(event);
@@ -1339,7 +1342,7 @@ var Button = function Button(_ref) {
1339
1342
  }, e);
1340
1343
  }
1341
1344
  };
1342
- var classNames = styles$1.button + " " + styles$1[size] + " " + styles$1[className] + " " + styles$1[mode] + (fullWidthOnMobiles ? " " + styles$1["full-width-on-mobiles"] : "") + (fullWidthOnTablets ? " " + styles$1["full-width-on-tablets"] : "") + (isDisabled ? " " + styles$1.disable : "") + (smallPaddingOnSmallMobiles ? " " + styles$1["small-padding-on-small-mobiles"] : "");
1345
+ var classNames = styles$1.button + " " + styles$1[size] + " " + styles$1[className] + " " + styles$1[mode] + (fullWidthOnMobiles ? " " + styles$1["full-width-on-mobiles"] : "") + (fullWidthOnTablets ? " " + styles$1["full-width-on-tablets"] : "") + (isDisabled ? " " + styles$1.disable : "") + (smallPaddingOnSmallMobiles ? " " + styles$1["small-padding-on-small-mobiles"] : "") + (noShadow ? " " + styles$1["no-shadow"] : "");
1343
1346
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, isFormSubmittingButton ? /*#__PURE__*/React__default["default"].createElement("input", {
1344
1347
  type: "submit",
1345
1348
  hidden: true
@@ -1402,6 +1405,7 @@ Button.propTypes = {
1402
1405
  checkmarkOnClick: PropTypes.bool,
1403
1406
  propagatePrimaryButtonClick: PropTypes.bool,
1404
1407
  smallPaddingOnSmallMobiles: PropTypes.bool,
1408
+ noShadow: PropTypes.bool,
1405
1409
  handleError: PropTypes.func
1406
1410
  };
1407
1411
  Button.defaultProps = {
@@ -1423,6 +1427,7 @@ Button.defaultProps = {
1423
1427
  checkmarkOnClick: false,
1424
1428
  propagatePrimaryButtonClick: true,
1425
1429
  smallPaddingOnSmallMobiles: false,
1430
+ noShadow: false,
1426
1431
  handleError: function handleError(func) {
1427
1432
  return func();
1428
1433
  }
@@ -3780,8 +3785,10 @@ var AmountUtils = /*#__PURE__*/function () {
3780
3785
  var currencyDecimalCount = FiatCurrenciesService.getCurrencyDecimalCountByCode(currencyCode);
3781
3786
  var trimmedByMaxDigits = params.collapsible ? BigNumber.BigNumber(amount).toFixed(currencyDecimalCount, BigNumber.BigNumber.ROUND_FLOOR) : BigNumber.BigNumber(amount);
3782
3787
  var processedAmount = BigNumber.BigNumber(trimmedByMaxDigits);
3783
- if (params.collapsible && processedAmount.gte(BigNumber.BigNumber("1000"))) {
3784
- processedAmount = this._collapseToMillionsAndFormat(processedAmount, this.collapsedDecimalCount, params);
3788
+ var shouldCollapseThousands = params.collapsible && params.collapseThousands && processedAmount.gte(BigNumber.BigNumber("1000"));
3789
+ var shouldCollapseMillions = params.collapsible && processedAmount.gte(BigNumber.BigNumber("1000000"));
3790
+ if (shouldCollapseMillions || shouldCollapseThousands) {
3791
+ processedAmount = this._collapseBigNumberToSuffixAndFormat(processedAmount, this.collapsedDecimalCount, params);
3785
3792
  } else {
3786
3793
  var limitResult = this._limitTotalAmountLengthIfNeeded(trimmedByMaxDigits, params);
3787
3794
  processedAmount = BigNumber.BigNumber(limitResult.processedAmount).toFormat(); // Adds commas to integer part
@@ -3873,18 +3880,19 @@ var AmountUtils = /*#__PURE__*/function () {
3873
3880
  var limitResult = this._limitTotalAmountLengthIfNeeded(processedAmount, params);
3874
3881
  processedAmount = limitResult.processedAmount;
3875
3882
  addPeriods || (addPeriods = limitResult.addPeriods);
3876
- var wereMillionsCollapsed = false;
3877
- if (params.collapsible && amountBigNumber.gte("1000000")) {
3878
- // Collapse the 1M+ amounts if applicable
3879
- processedAmount = this._collapseToMillionsAndFormat(BigNumber.BigNumber(processedAmount), this.collapsedDecimalCount, params);
3880
- wereMillionsCollapsed = true;
3883
+ var wasCollapsed = false;
3884
+ var shouldCollapse = params.collapsible && (amountBigNumber.gte("1000000") || params.collapseThousands && amountBigNumber.gte("1000"));
3885
+ if (shouldCollapse) {
3886
+ // Collapse the large amounts if applicable
3887
+ processedAmount = this._collapseBigNumberToSuffixAndFormat(BigNumber.BigNumber(processedAmount), this.collapsedDecimalCount, params);
3888
+ wasCollapsed = true;
3881
3889
  } else if (params.numberPartsSeparator) {
3882
3890
  // Add separators to integer part of the amount
3883
3891
  processedAmount = BigNumber.BigNumber(processedAmount).toFormat();
3884
3892
  }
3885
3893
 
3886
3894
  // Adding periods, if the amount was shortened
3887
- if (params.periods && addPeriods && !wereMillionsCollapsed) {
3895
+ if (params.periods && addPeriods && !wasCollapsed) {
3888
3896
  processedAmount = processedAmount + this.periods;
3889
3897
  }
3890
3898
 
@@ -3940,9 +3948,9 @@ var AmountUtils = /*#__PURE__*/function () {
3940
3948
  * @param amountBigNumber {BigNumber} The number value to be trimmed
3941
3949
  * @param decimalCount {number} The number of digits after period to keep in millions representation
3942
3950
  * @param params {object} params object
3943
- * @return {string} A shortened string, converted into "millions" format, if the amount exceeds 1 million
3951
+ * @return {string} A potentially shortened string
3944
3952
  */;
3945
- AmountUtils._collapseToMillionsAndFormat = function _collapseToMillionsAndFormat(amountBigNumber, decimalCount, params) {
3953
+ AmountUtils._collapseBigNumberToSuffixAndFormat = function _collapseBigNumberToSuffixAndFormat(amountBigNumber, decimalCount, params) {
3946
3954
  if (params === void 0) {
3947
3955
  params = {};
3948
3956
  }
@@ -4089,6 +4097,8 @@ AmountUtils.defaultFiatParams = {
4089
4097
  // Enables currency symbols where available. Requires "ticker: true"
4090
4098
  collapsible: true,
4091
4099
  // Enables minimization of amounts over 1 million (example: 1.52M)
4100
+ collapseThousands: false,
4101
+ // Enables "K" minimization for amounts over 1 thousand (example: 1.52K)
4092
4102
  limitTotalLength: true,
4093
4103
  // Limits the total amount length to maxTotalLength
4094
4104
  extraSmallLength: false // Limits the total amount length to extraSmallMaxTotalLength
@@ -4098,6 +4108,8 @@ AmountUtils.defaultCryptoParams = {
4098
4108
  // If true, asset ticker will be shown
4099
4109
  collapsible: true,
4100
4110
  // Enables minimization of amounts over 1 million (example: 1.52M)
4111
+ collapseThousands: false,
4112
+ // Enables "K" minimization for amounts over 1 thousand (example: 1.52K)
4101
4113
  trim: true,
4102
4114
  // Cuts the right part of the amount if necessary, and adds ".." in the end
4103
4115
  limitTotalLength: true,
@@ -11882,87 +11894,106 @@ var SwapspaceSwapProvider = /*#__PURE__*/function (_SwapProvider) {
11882
11894
  return !fromCoinSwapspaceDetails || !toCoinSwapspaceDetails || !fromCoinSwapspaceDetails.deposit || !toCoinSwapspaceDetails.withdrawal || !fromCoinSwapspaceDetails.isAvailable || !toCoinSwapspaceDetails.isAvailable ? {
11883
11895
  result: false,
11884
11896
  reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED
11885
- } : Promise.resolve(axios__default["default"].get(_this4._URL + "/api/v2/amounts?fromCurrency=" + fromCoinSwapspaceDetails.code + "&fromNetwork=" + fromCoinSwapspaceDetails.network + "&toNetwork=" + toCoinSwapspaceDetails.network + "&toCurrency=" + toCoinSwapspaceDetails.code + "&amount=" + amountCoins + "&estimated=false", _extends({
11886
- headers: _this4._headers
11887
- }, createRobustTimeoutSetupForAxios()))).then(function (response) {
11888
- var _response$data, _exchangesSupportingT;
11889
- var _exit;
11890
- function _temp4(_result) {
11891
- if (_exit) return _result;
11892
- var result = {
11897
+ } : Promise.resolve(_this4._fetchPartnersListIfNeeded()).then(function () {
11898
+ var bannedPartnersSet = new Set(bannedPartners);
11899
+ var whitelistedPartnersSet = whitelistedPartners == null ? null : new Set(whitelistedPartners);
11900
+ var finalAllowedSwapspacePartners = _this4._partners.map(function (partner) {
11901
+ return partner == null ? void 0 : partner.path;
11902
+ }).filter(function (partnerId) {
11903
+ return typeof partnerId === "string" && partnerId.length > 0 && !bannedPartnersSet.has(partnerId) && (whitelistedPartnersSet == null || whitelistedPartnersSet.has(partnerId));
11904
+ });
11905
+ if (_this4._partners.length > 0 && finalAllowedSwapspacePartners.length === 0) {
11906
+ Logger.log("No allowed swapspace partners to request after restrictions.", loggerSource);
11907
+ return {
11893
11908
  result: false,
11894
- reason: smallestMin && BigNumber.BigNumber(amountCoins).lt(smallestMin) ? SwapProvider.NO_SWAPS_REASONS.TOO_LOW : greatestMax && BigNumber.BigNumber(amountCoins).gt(greatestMax) ? SwapProvider.NO_SWAPS_REASONS.TOO_HIGH : SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,
11895
- smallestMin: smallestMin,
11896
- greatestMax: greatestMax
11909
+ reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED
11897
11910
  };
11898
- Logger.log("Returning result " + safeStringify(result), loggerSource);
11899
- return result;
11900
11911
  }
11901
- Logger.log("Retrieved " + (response == null || (_response$data = response.data) == null ? void 0 : _response$data.length) + " options", loggerSource);
11902
- var options = Array.isArray(response.data) ? response.data : [];
11912
+ /* Here we use not documented parameter 'estimated=false'. This parameter controls whether we want to use
11913
+ * cached rate values stored in swapspace cache. Their support says they store at most for 30 sec.
11914
+ * But we are better off using the most actual rates.
11915
+ */
11903
11916
  // TODO: [feature, high] remove if possible over-engineering about toAmount = 0 options treating as supported but not available. task_id=404ae30d9a7743238af3cc0d3bae9239
11904
- var exchangesSupportingThePairDespiteFixedOrFloating = options.filter(function (exchange) {
11905
- return (exchange == null ? void 0 : exchange.exists) && !bannedPartners.includes(exchange == null ? void 0 : exchange.partner) && (whitelistedPartners == null || whitelistedPartners.includes(exchange == null ? void 0 : exchange.partner)) && ((exchange == null ? void 0 : exchange.fixed) === false || (exchange == null ? void 0 : exchange.fixed) === true) && typeof exchange.toAmount === "number" && (typeof exchange.min === "number" && typeof exchange.max === "number" || exchange.toAmount > 0) && (exchange.min === 0 || exchange.max === 0 || exchange.max > exchange.min);
11917
+ // min=0 or max=0 means there is no limit for the partner
11918
+ var requestParams = new URLSearchParams({
11919
+ fromCurrency: fromCoinSwapspaceDetails.code,
11920
+ fromNetwork: fromCoinSwapspaceDetails.network,
11921
+ toNetwork: toCoinSwapspaceDetails.network,
11922
+ toCurrency: toCoinSwapspaceDetails.code,
11923
+ amount: amountCoins,
11924
+ estimated: "false"
11906
11925
  });
11907
- var exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating;
11908
- if (fixed != null) {
11909
- exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating.filter(function (option) {
11910
- return option.fixed === fixed;
11911
- });
11926
+ if ((finalAllowedSwapspacePartners == null ? void 0 : finalAllowedSwapspacePartners.length) > 0) {
11927
+ // Swapspace `partner` param filters estimation to specific comma-separated partner IDs.
11928
+ requestParams.set("partner", finalAllowedSwapspacePartners.join(","));
11912
11929
  }
11913
- Logger.log(((_exchangesSupportingT = exchangesSupportingThePair) == null ? void 0 : _exchangesSupportingT.length) + " of them have exist=true", loggerSource);
11914
- if (exchangesSupportingThePair.length === 0) {
11915
- if (exchangesSupportingThePairDespiteFixedOrFloating.length > 0 && fixed !== null) {
11930
+ return Promise.resolve(axios__default["default"].get(_this4._URL + "/api/v2/amounts?" + requestParams.toString(), _extends({
11931
+ headers: _this4._headers
11932
+ }, createRobustTimeoutSetupForAxios()))).then(function (response) {
11933
+ var _response$data, _exchangesSupportingT;
11934
+ Logger.log("Retrieved " + (response == null || (_response$data = response.data) == null ? void 0 : _response$data.length) + " options", loggerSource);
11935
+ var options = Array.isArray(response.data) ? response.data : [];
11936
+ var exchangesSupportingThePairDespiteFixedOrFloating = options.filter(function (exchange) {
11937
+ return (exchange == null ? void 0 : exchange.exists) && !bannedPartners.includes(exchange == null ? void 0 : exchange.partner) && (whitelistedPartners == null || whitelistedPartners.includes(exchange == null ? void 0 : exchange.partner)) && ((exchange == null ? void 0 : exchange.fixed) === false || (exchange == null ? void 0 : exchange.fixed) === true) && typeof exchange.toAmount === "number" && (typeof exchange.min === "number" && typeof exchange.max === "number" || exchange.toAmount > 0) && (exchange.min === 0 || exchange.max === 0 || exchange.max > exchange.min);
11938
+ });
11939
+ var exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating;
11940
+ if (fixed != null) {
11941
+ exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating.filter(function (option) {
11942
+ return option.fixed === fixed;
11943
+ });
11944
+ }
11945
+ Logger.log(((_exchangesSupportingT = exchangesSupportingThePair) == null ? void 0 : _exchangesSupportingT.length) + " of them have exist=true", loggerSource);
11946
+ if (exchangesSupportingThePair.length === 0) {
11947
+ if (exchangesSupportingThePairDespiteFixedOrFloating.length > 0 && fixed !== null) {
11948
+ return {
11949
+ result: false,
11950
+ reason: fixed ? SwapProvider.NO_SWAPS_REASONS.NO_FIXED_BUT_HAVE_FLOATING : SwapProvider.NO_SWAPS_REASONS.NO_FLOATING_BUT_HAVE_FIXED
11951
+ };
11952
+ }
11916
11953
  return {
11917
11954
  result: false,
11918
- reason: fixed ? SwapProvider.NO_SWAPS_REASONS.NO_FIXED_BUT_HAVE_FLOATING : SwapProvider.NO_SWAPS_REASONS.NO_FLOATING_BUT_HAVE_FIXED
11955
+ reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED
11919
11956
  };
11920
11957
  }
11921
- return {
11922
- result: false,
11923
- reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED
11924
- };
11925
- }
11926
- var availableExchanges = exchangesSupportingThePair.filter(function (exchange) {
11927
- return typeof (exchange == null ? void 0 : exchange.toAmount) === "number" && exchange.toAmount > 0;
11928
- });
11929
- Logger.log("Available (having amountTo): " + safeStringify(availableExchanges), loggerSource);
11930
- // min=0 or max=0 means there is no limit for the partner
11931
- var smallestMin = null;
11932
- if (exchangesSupportingThePair.find(function (ex) {
11933
- return BigNumber.BigNumber(ex.min).isZero();
11934
- }) == null) {
11935
- smallestMin = exchangesSupportingThePair.reduce(function (prev, cur) {
11936
- if (typeof cur.min === "number" && (prev === null || BigNumber.BigNumber(cur.min).lt(prev))) return BigNumber.BigNumber(cur.min);
11937
- return prev;
11938
- }, null);
11939
- }
11940
- var greatestMax = null;
11941
- if (exchangesSupportingThePair.find(function (ex) {
11942
- return BigNumber.BigNumber(ex.max).isZero();
11943
- }) == null) {
11944
- greatestMax = exchangesSupportingThePair.reduce(function (prev, cur) {
11945
- if (typeof cur.max === "number" && (prev === null || BigNumber.BigNumber(cur.max).gt(prev))) return BigNumber.BigNumber(cur.max);
11946
- return prev;
11947
- }, null);
11948
- }
11949
- var extraCoinsToFitMinMax = "0";
11950
- if (typeof fromCoinToUsdRate === "string" && BigNumber.BigNumber(fromCoinToUsdRate).gt("0")) {
11951
- var extraUsdToFitMinMax = BigNumber.BigNumber("1"); // We correct the limits as the exact limit can fluctuate and cause failed swap creation
11952
- extraCoinsToFitMinMax = AmountUtils.trim(extraUsdToFitMinMax.div(fromCoinToUsdRate), fromCoin.digits);
11953
- }
11954
- if (smallestMin instanceof BigNumber.BigNumber) {
11955
- smallestMin = AmountUtils.trim(smallestMin.plus(extraCoinsToFitMinMax), fromCoin.digits);
11956
- }
11957
- if (greatestMax instanceof BigNumber.BigNumber) {
11958
- if (greatestMax > extraCoinsToFitMinMax) {
11959
- greatestMax = AmountUtils.trim(greatestMax.minus(extraCoinsToFitMinMax), fromCoin.digits);
11960
- } else {
11961
- greatestMax = "0";
11958
+ var availableExchanges = exchangesSupportingThePair.filter(function (exchange) {
11959
+ return typeof (exchange == null ? void 0 : exchange.toAmount) === "number" && exchange.toAmount > 0;
11960
+ });
11961
+ Logger.log("Available (having amountTo): " + safeStringify(availableExchanges), loggerSource);
11962
+ var smallestMin = null;
11963
+ if (exchangesSupportingThePair.find(function (ex) {
11964
+ return BigNumber.BigNumber(ex.min).isZero();
11965
+ }) == null) {
11966
+ smallestMin = exchangesSupportingThePair.reduce(function (prev, cur) {
11967
+ if (typeof cur.min === "number" && (prev === null || BigNumber.BigNumber(cur.min).lt(prev))) return BigNumber.BigNumber(cur.min);
11968
+ return prev;
11969
+ }, null);
11970
+ }
11971
+ var greatestMax = null;
11972
+ if (exchangesSupportingThePair.find(function (ex) {
11973
+ return BigNumber.BigNumber(ex.max).isZero();
11974
+ }) == null) {
11975
+ greatestMax = exchangesSupportingThePair.reduce(function (prev, cur) {
11976
+ if (typeof cur.max === "number" && (prev === null || BigNumber.BigNumber(cur.max).gt(prev))) return BigNumber.BigNumber(cur.max);
11977
+ return prev;
11978
+ }, null);
11979
+ }
11980
+ var extraCoinsToFitMinMax = "0";
11981
+ if (typeof fromCoinToUsdRate === "string" && BigNumber.BigNumber(fromCoinToUsdRate).gt("0")) {
11982
+ var extraUsdToFitMinMax = BigNumber.BigNumber("1"); // We correct the limits as the exact limit can fluctuate and cause failed swap creation
11983
+ extraCoinsToFitMinMax = AmountUtils.trim(extraUsdToFitMinMax.div(fromCoinToUsdRate), fromCoin.digits);
11984
+ }
11985
+ if (smallestMin instanceof BigNumber.BigNumber) {
11986
+ smallestMin = AmountUtils.trim(smallestMin.plus(extraCoinsToFitMinMax), fromCoin.digits);
11987
+ }
11988
+ if (greatestMax instanceof BigNumber.BigNumber) {
11989
+ if (greatestMax > extraCoinsToFitMinMax) {
11990
+ greatestMax = AmountUtils.trim(greatestMax.minus(extraCoinsToFitMinMax), fromCoin.digits);
11991
+ } else {
11992
+ greatestMax = "0";
11993
+ }
11962
11994
  }
11963
- }
11964
- var _temp3 = function () {
11965
11995
  if (availableExchanges.length) {
11996
+ var _bestOpt$duration;
11966
11997
  var sorted = availableExchanges.sort(function (op1, op2) {
11967
11998
  return op2.toAmount - op1.toAmount;
11968
11999
  });
@@ -11980,37 +12011,35 @@ var SwapspaceSwapProvider = /*#__PURE__*/function (_SwapProvider) {
11980
12011
  }
11981
12012
  }
11982
12013
  var rate = bestOpt.toAmount && bestOpt.fromAmount ? BigNumber.BigNumber(bestOpt.toAmount).div(bestOpt.fromAmount) : null;
11983
- return Promise.resolve(_this4._fetchPartnersListIfNeeded()).then(function () {
11984
- var _bestOpt$duration;
11985
- var partner = _this4._partners.find(function (p) {
11986
- var _bestOpt$partner;
11987
- return (bestOpt == null || (_bestOpt$partner = bestOpt.partner) == null ? void 0 : _bestOpt$partner.toLowerCase()) === p.path.toLowerCase();
11988
- });
11989
- var isRefundAddressRequired = partner == null ? true : bestOpt.fixed ? partner.reqFixedRefund : partner.reqFloatRefund;
11990
- var _result$min$max$small = {
11991
- result: true,
11992
- min: min,
11993
- max: max,
11994
- smallestMin: smallestMin,
11995
- greatestMax: greatestMax,
11996
- rate: rate != null ? AmountUtils.trim(rate, _this4._maxRateDigits) : null,
11997
- durationMinutesRange: (_bestOpt$duration = bestOpt.duration) != null ? _bestOpt$duration : null,
11998
- fixed: bestOpt.fixed,
11999
- rawSwapData: bestOpt,
12000
- isRefundAddressRequired: !!isRefundAddressRequired
12001
- };
12002
- _exit = 1;
12003
- return _result$min$max$small;
12014
+ var partner = _this4._partners.find(function (p) {
12015
+ var _bestOpt$partner;
12016
+ return (bestOpt == null || (_bestOpt$partner = bestOpt.partner) == null ? void 0 : _bestOpt$partner.toLowerCase()) === p.path.toLowerCase();
12004
12017
  });
12018
+ var isRefundAddressRequired = partner == null ? true : bestOpt.fixed ? partner.reqFixedRefund : partner.reqFloatRefund;
12019
+ return {
12020
+ result: true,
12021
+ min: min,
12022
+ max: max,
12023
+ smallestMin: smallestMin,
12024
+ greatestMax: greatestMax,
12025
+ rate: rate != null ? AmountUtils.trim(rate, _this4._maxRateDigits) : null,
12026
+ durationMinutesRange: (_bestOpt$duration = bestOpt.duration) != null ? _bestOpt$duration : null,
12027
+ fixed: bestOpt.fixed,
12028
+ rawSwapData: bestOpt,
12029
+ isRefundAddressRequired: !!isRefundAddressRequired
12030
+ };
12005
12031
  }
12006
- }();
12007
- return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
12032
+ var result = {
12033
+ result: false,
12034
+ reason: smallestMin && BigNumber.BigNumber(amountCoins).lt(smallestMin) ? SwapProvider.NO_SWAPS_REASONS.TOO_LOW : greatestMax && BigNumber.BigNumber(amountCoins).gt(greatestMax) ? SwapProvider.NO_SWAPS_REASONS.TOO_HIGH : SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,
12035
+ smallestMin: smallestMin,
12036
+ greatestMax: greatestMax
12037
+ };
12038
+ Logger.log("Returning result " + safeStringify(result), loggerSource);
12039
+ return result;
12040
+ });
12008
12041
  });
12009
12042
  });
12010
- /* Here we use not documented parameter 'estimated=false'. This parameter controls whether we want to use
12011
- * cached rate values stored in swapspace cache. Their support says they store at most for 30 sec.
12012
- * But we are better off using the most actual rates.
12013
- */
12014
12043
  }, function (e) {
12015
12044
  var _e$response;
12016
12045
  if ((e == null || (_e$response = e.response) == null ? void 0 : _e$response.status) === 429) {
@@ -13095,7 +13124,7 @@ var ExolixSwapProvider = /*#__PURE__*/function (_SwapProvider) {
13095
13124
  min = _validateAndProcessLi[1],
13096
13125
  max = _validateAndProcessLi[2];
13097
13126
  if (returnObject) return returnObject;
13098
- if (min && max & BigNumber__default["default"](max).lt(min)) {
13127
+ if (min && max && BigNumber__default["default"](max).lt(min)) {
13099
13128
  Logger.log("Exolix swap info failed, max limit is below the min one. " + safeStringify(response), loggerSource);
13100
13129
  return {
13101
13130
  result: false,