@rabbitio/ui-kit 1.0.0-beta.122 → 1.0.0-beta.124

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 (208) hide show
  1. package/coverage/clover.xml +930 -863
  2. package/coverage/coverage-final.json +7 -7
  3. package/coverage/index.html +27 -27
  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 +1 -1
  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 +1 -1
  32. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logsStorage.js.html +1 -1
  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 +21 -9
  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 +1 -1
  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 +21 -21
  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 +1 -1
  54. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +101 -11
  55. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/utils.js.html +1 -1
  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 +5 -5
  63. package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +19 -4
  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 +58 -16
  140. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/index.html +5 -5
  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 +164 -118
  189. package/dist/index.cjs.map +1 -1
  190. package/dist/index.css +19 -0
  191. package/dist/index.css.map +1 -1
  192. package/dist/index.modern.js +73 -24
  193. package/dist/index.modern.js.map +1 -1
  194. package/dist/index.module.js +164 -118
  195. package/dist/index.module.js.map +1 -1
  196. package/dist/index.umd.js +164 -118
  197. package/dist/index.umd.js.map +1 -1
  198. package/package.json +1 -1
  199. package/src/common-apis/utils/amountUtils.js +18 -10
  200. package/src/swaps-lib/external-apis/changeHeroSwapProvider.js +5 -1
  201. package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +32 -2
  202. package/src/swaps-lib/services/publicSwapService.js +5 -0
  203. package/src/ui-kit/assets/styles/_mixins.scss +9 -0
  204. package/src/ui-kit/assets/styles/global.scss +4 -0
  205. package/src/ui-kit/components/atoms/buttons/Button/Button.jsx +6 -1
  206. package/src/ui-kit/components/atoms/buttons/Button/Button.module.scss +4 -0
  207. package/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx +26 -12
  208. package/src/ui-kit/components/organisms/SwapForm/swap-form.module.scss +17 -0
package/dist/index.umd.js CHANGED
@@ -1168,7 +1168,7 @@
1168
1168
 
1169
1169
  var PropTypes = propTypes;
1170
1170
 
1171
- 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-"};
1171
+ 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-"};
1172
1172
 
1173
1173
  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"};
1174
1174
 
@@ -1235,6 +1235,7 @@
1235
1235
  * @param {boolean} [props.checkmarkOnClick=false] - Shows a checkmark instead of content for a few seconds after click.
1236
1236
  * @param {boolean} [props.propagatePrimaryButtonClick=true] - Propagates the primary button click event if true.
1237
1237
  * @param {boolean} [props.smallPaddingOnSmallMobiles=false] - Enables smaller paddings for extra-small screen sizes.
1238
+ * @param {boolean} [props.noShadow=false] - Removes box-shadow styling when true.
1238
1239
  * @param {Function} [props.handleError=(func) => func()] - Function to handle errors during button click events.
1239
1240
  * @returns {React.ReactElement}
1240
1241
  */
@@ -1275,6 +1276,8 @@
1275
1276
  propagatePrimaryButtonClick = _ref$propagatePrimary === void 0 ? true : _ref$propagatePrimary,
1276
1277
  _ref$smallPaddingOnSm = _ref.smallPaddingOnSmallMobiles,
1277
1278
  smallPaddingOnSmallMobiles = _ref$smallPaddingOnSm === void 0 ? false : _ref$smallPaddingOnSm,
1279
+ _ref$noShadow = _ref.noShadow,
1280
+ noShadow = _ref$noShadow === void 0 ? false : _ref$noShadow,
1278
1281
  _ref$handleError = _ref.handleError,
1279
1282
  handleError = _ref$handleError === void 0 ? function (func, event) {
1280
1283
  return func(event);
@@ -1329,7 +1332,7 @@
1329
1332
  }, e);
1330
1333
  }
1331
1334
  };
1332
- 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"] : "");
1335
+ 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"] : "");
1333
1336
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, isFormSubmittingButton ? /*#__PURE__*/React__default["default"].createElement("input", {
1334
1337
  type: "submit",
1335
1338
  hidden: true
@@ -1392,6 +1395,7 @@
1392
1395
  checkmarkOnClick: PropTypes.bool,
1393
1396
  propagatePrimaryButtonClick: PropTypes.bool,
1394
1397
  smallPaddingOnSmallMobiles: PropTypes.bool,
1398
+ noShadow: PropTypes.bool,
1395
1399
  handleError: PropTypes.func
1396
1400
  };
1397
1401
  Button.defaultProps = {
@@ -1413,6 +1417,7 @@
1413
1417
  checkmarkOnClick: false,
1414
1418
  propagatePrimaryButtonClick: true,
1415
1419
  smallPaddingOnSmallMobiles: false,
1420
+ noShadow: false,
1416
1421
  handleError: function handleError(func) {
1417
1422
  return func();
1418
1423
  }
@@ -3770,8 +3775,10 @@
3770
3775
  var currencyDecimalCount = FiatCurrenciesService.getCurrencyDecimalCountByCode(currencyCode);
3771
3776
  var trimmedByMaxDigits = params.collapsible ? BigNumber.BigNumber(amount).toFixed(currencyDecimalCount, BigNumber.BigNumber.ROUND_FLOOR) : BigNumber.BigNumber(amount);
3772
3777
  var processedAmount = BigNumber.BigNumber(trimmedByMaxDigits);
3773
- if (params.collapsible && processedAmount.gte(BigNumber.BigNumber("1000"))) {
3774
- processedAmount = this._collapseToMillionsAndFormat(processedAmount, this.collapsedDecimalCount, params);
3778
+ var shouldCollapseThousands = params.collapsible && params.collapseThousands && processedAmount.gte(BigNumber.BigNumber("1000"));
3779
+ var shouldCollapseMillions = params.collapsible && processedAmount.gte(BigNumber.BigNumber("1000000"));
3780
+ if (shouldCollapseMillions || shouldCollapseThousands) {
3781
+ processedAmount = this._collapseBigNumberToSuffixAndFormat(processedAmount, this.collapsedDecimalCount, params);
3775
3782
  } else {
3776
3783
  var limitResult = this._limitTotalAmountLengthIfNeeded(trimmedByMaxDigits, params);
3777
3784
  processedAmount = BigNumber.BigNumber(limitResult.processedAmount).toFormat(); // Adds commas to integer part
@@ -3863,18 +3870,19 @@
3863
3870
  var limitResult = this._limitTotalAmountLengthIfNeeded(processedAmount, params);
3864
3871
  processedAmount = limitResult.processedAmount;
3865
3872
  addPeriods || (addPeriods = limitResult.addPeriods);
3866
- var wereMillionsCollapsed = false;
3867
- if (params.collapsible && amountBigNumber.gte("1000000")) {
3868
- // Collapse the 1M+ amounts if applicable
3869
- processedAmount = this._collapseToMillionsAndFormat(BigNumber.BigNumber(processedAmount), this.collapsedDecimalCount, params);
3870
- wereMillionsCollapsed = true;
3873
+ var wasCollapsed = false;
3874
+ var shouldCollapse = params.collapsible && (amountBigNumber.gte("1000000") || params.collapseThousands && amountBigNumber.gte("1000"));
3875
+ if (shouldCollapse) {
3876
+ // Collapse the large amounts if applicable
3877
+ processedAmount = this._collapseBigNumberToSuffixAndFormat(BigNumber.BigNumber(processedAmount), this.collapsedDecimalCount, params);
3878
+ wasCollapsed = true;
3871
3879
  } else if (params.numberPartsSeparator) {
3872
3880
  // Add separators to integer part of the amount
3873
3881
  processedAmount = BigNumber.BigNumber(processedAmount).toFormat();
3874
3882
  }
3875
3883
 
3876
3884
  // Adding periods, if the amount was shortened
3877
- if (params.periods && addPeriods && !wereMillionsCollapsed) {
3885
+ if (params.periods && addPeriods && !wasCollapsed) {
3878
3886
  processedAmount = processedAmount + this.periods;
3879
3887
  }
3880
3888
 
@@ -3930,9 +3938,9 @@
3930
3938
  * @param amountBigNumber {BigNumber} The number value to be trimmed
3931
3939
  * @param decimalCount {number} The number of digits after period to keep in millions representation
3932
3940
  * @param params {object} params object
3933
- * @return {string} A shortened string, converted into "millions" format, if the amount exceeds 1 million
3941
+ * @return {string} A potentially shortened string
3934
3942
  */;
3935
- AmountUtils._collapseToMillionsAndFormat = function _collapseToMillionsAndFormat(amountBigNumber, decimalCount, params) {
3943
+ AmountUtils._collapseBigNumberToSuffixAndFormat = function _collapseBigNumberToSuffixAndFormat(amountBigNumber, decimalCount, params) {
3936
3944
  if (params === void 0) {
3937
3945
  params = {};
3938
3946
  }
@@ -4079,6 +4087,8 @@
4079
4087
  // Enables currency symbols where available. Requires "ticker: true"
4080
4088
  collapsible: true,
4081
4089
  // Enables minimization of amounts over 1 million (example: 1.52M)
4090
+ collapseThousands: false,
4091
+ // Enables "K" minimization for amounts over 1 thousand (example: 1.52K)
4082
4092
  limitTotalLength: true,
4083
4093
  // Limits the total amount length to maxTotalLength
4084
4094
  extraSmallLength: false // Limits the total amount length to extraSmallMaxTotalLength
@@ -4088,6 +4098,8 @@
4088
4098
  // If true, asset ticker will be shown
4089
4099
  collapsible: true,
4090
4100
  // Enables minimization of amounts over 1 million (example: 1.52M)
4101
+ collapseThousands: false,
4102
+ // Enables "K" minimization for amounts over 1 thousand (example: 1.52K)
4091
4103
  trim: true,
4092
4104
  // Cuts the right part of the amount if necessary, and adds ".." in the end
4093
4105
  limitTotalLength: true,
@@ -4495,7 +4507,7 @@
4495
4507
  fiatInputPlaceholderText: null
4496
4508
  };
4497
4509
 
4498
- var s$b = {"swap-form-inputs-separator":"_2vSSb","disabled":"_t1R13","swap-form":"_Uwb2p","swap-form-inputs":"_kkR8O","swap-form-information-field":"_ZUAfe","semi-transparent":"_1mu0j","interactable":"_S9zQS","red":"_SbQSO","swap-form-address-field":"_c8Nfv","swap-form-rate-selector":"_Fo9O-","swap-form-validation-text":"_8iEHB","swap-form-button-container":"_cVVfG","swap-form-button-container-consent-text":"_UNMjb","swap-form-button-container-consent-text-link":"_-g020"};
4510
+ var s$b = {"swap-form-inputs-separator":"_2vSSb","disabled":"_t1R13","swap-form":"_Uwb2p","swap-form-inputs":"_kkR8O","swap-form-information-field":"_ZUAfe","semi-transparent":"_1mu0j","interactable":"_S9zQS","red":"_SbQSO","swap-form-address-field":"_c8Nfv","swap-form-rate-note":"_y5iPh","swap-form-rate-selector":"_Fo9O-","swap-form-validation-text":"_8iEHB","swap-form-button-container":"_cVVfG","swap-form-button-container-consent-text":"_UNMjb","swap-form-button-container-consent-text-link":"_-g020"};
4499
4511
 
4500
4512
  var s$a = {"textarea-input":"_EJFn-","textarea":"_YjRAf","full-height":"_kDp5e","textarea-input-label":"_XQC6S","adaptive-height":"_UnSJE","small-text":"_WtRnB","disabled":"_IO5nl","error-encountered":"_00pBS"};
4501
4513
 
@@ -5046,6 +5058,7 @@
5046
5058
  * @param {string} [props.fiatCurrencyCode] - Code for the fiat currency.
5047
5059
  * @param {number} [props.fiatCurrencyDecimals] - Decimal places for the fiat currency.
5048
5060
  * @param {boolean} [props.formHasFiat] - Indicates if the form supports fiat currency.
5061
+ * @param {boolean} [props.showEmailInput=false] - Controls whether the email input is displayed.
5049
5062
  * @param {string|null} [props.termsOfUseUrl] - Terms of use URL, shown only if both terms & privacy policy passed.
5050
5063
  * @param {string|null} [props.privacyPolicyUrl] - Privacy policy of use URL, shown only if both terms & privacy policy passed.
5051
5064
  * @param {string|null} [props.amlPolicyUrl] - AML/KYC policy URL, optional.
@@ -5139,6 +5152,8 @@
5139
5152
  fiatCurrencyDecimals = _ref$fiatCurrencyDeci === void 0 ? null : _ref$fiatCurrencyDeci,
5140
5153
  _ref$formHasFiat = _ref.formHasFiat,
5141
5154
  formHasFiat = _ref$formHasFiat === void 0 ? true : _ref$formHasFiat,
5155
+ _ref$showEmailInput = _ref.showEmailInput,
5156
+ showEmailInput = _ref$showEmailInput === void 0 ? false : _ref$showEmailInput,
5142
5157
  _ref$termsOfUseUrl = _ref.termsOfUseUrl,
5143
5158
  termsOfUseUrl = _ref$termsOfUseUrl === void 0 ? null : _ref$termsOfUseUrl,
5144
5159
  _ref$privacyPolicyUrl = _ref.privacyPolicyUrl,
@@ -5182,6 +5197,7 @@
5182
5197
  calculatingNetworkFee: "Calculating network fee..",
5183
5198
  loadingMinimalAmount: "Loading minimal amount..",
5184
5199
  swapRate: "Rate: ",
5200
+ rateNotice: "The rate varies depending on the amount.",
5185
5201
  calculatingSwapRates: "Calculating swap rates..",
5186
5202
  pairNotAvailable: "Pair is not available now. Please, try again later or choose another pair."
5187
5203
  },
@@ -5700,9 +5716,14 @@
5700
5716
  // eslint-disable-next-line react-hooks/exhaustive-deps
5701
5717
  }, [refundAddress.current, refundAddressExtraId.current, sendingAssetTicker, isRefundAddressRequired]);
5702
5718
  React.useEffect(function () {
5719
+ if (!showEmailInput) {
5720
+ setEmail("");
5721
+ setIsEmailValid(true);
5722
+ return;
5723
+ }
5703
5724
  setIsEmailValid(email.current === "" || EMAIL_VALIDATION_REGEXP.test(email.current));
5704
5725
  // eslint-disable-next-line react-hooks/exhaustive-deps
5705
- }, [email.current]);
5726
+ }, [email.current, showEmailInput]);
5706
5727
  React.useEffect(function () {
5707
5728
  // Here we set up auto recalculations for the swap details if the form is ready to swap but is idle for some time
5708
5729
  var timeoutId = null;
@@ -5884,7 +5905,9 @@
5884
5905
  }
5885
5906
  }, AmountUtils.crypto(minimalAmount.current.crypto, isLastEditedReceiving.current ? receivingAssetTickerPrintable : sendingAssetTickerPrintable)), ((_minimalAmount$curren7 = minimalAmount.current) == null ? void 0 : _minimalAmount$curren7.fiat) != null && minimalAmount.current.fiat !== "" ? /*#__PURE__*/React__default["default"].createElement("span", {
5886
5907
  className: "semi-transparent"
5887
- }, " ~ " + AmountUtils.fiat(minimalAmount.current.fiat, fiatCurrencyCode)) : "") : isLoading.current ? sendAssetAmount.current || receiveAssetAmount.current || isSwapAll.current ? translations.informationBlock[formHasBalance ? "calculatingNetworkFee" : "calculatingSwapRates"] : translations.informationBlock.loadingMinimalAmount : translations == null || (_translations$informa = translations.informationBlock) == null ? void 0 : _translations$informa.enterAmount)), isAddressFieldEnabled ? /*#__PURE__*/React__default["default"].createElement("div", {
5908
+ }, " ~ " + AmountUtils.fiat(minimalAmount.current.fiat, fiatCurrencyCode)) : "") : isLoading.current ? sendAssetAmount.current || receiveAssetAmount.current || isSwapAll.current ? translations.informationBlock[formHasBalance ? "calculatingNetworkFee" : "calculatingSwapRates"] : translations.informationBlock.loadingMinimalAmount : translations == null || (_translations$informa = translations.informationBlock) == null ? void 0 : _translations$informa.enterAmount)), /*#__PURE__*/React__default["default"].createElement("p", {
5909
+ className: s$b["swap-form-rate-note"]
5910
+ }, translations.informationBlock.rateNotice), isAddressFieldEnabled ? /*#__PURE__*/React__default["default"].createElement("div", {
5888
5911
  className: s$b["swap-form-address-field"]
5889
5912
  }, /*#__PURE__*/React__default["default"].createElement(TitleBox, {
5890
5913
  title: translations.addressFields.addressTitle
@@ -5930,7 +5953,7 @@
5930
5953
  value: refundAddressExtraId.current,
5931
5954
  adaptiveHeight: true,
5932
5955
  placeholder: translations.addressFields.extraIdPlaceholder
5933
- })) : null) : null) : null, /*#__PURE__*/React__default["default"].createElement("div", {
5956
+ })) : null) : null) : null, showEmailInput ? /*#__PURE__*/React__default["default"].createElement("div", {
5934
5957
  className: s$b["swap-form-address-field"]
5935
5958
  }, /*#__PURE__*/React__default["default"].createElement(TitleBox, {
5936
5959
  title: ((_translations$address = translations.addressFields) == null ? void 0 : _translations$address.emailTitle) || "Email (optional)"
@@ -5942,7 +5965,7 @@
5942
5965
  value: email.current,
5943
5966
  placeholder: (_translations$address2 = translations.addressFields) == null ? void 0 : _translations$address2.emailPlaceholder,
5944
5967
  errorEncountered: email.current !== "" && !isEmailValid.current
5945
- }))), validationContent ? /*#__PURE__*/React__default["default"].createElement("div", {
5968
+ }))) : null, validationContent ? /*#__PURE__*/React__default["default"].createElement("div", {
5946
5969
  className: s$b["swap-form-validation-text"]
5947
5970
  }, /*#__PURE__*/React__default["default"].createElement(Validation, {
5948
5971
  text: validationContent
@@ -6011,6 +6034,7 @@
6011
6034
  fiatCurrencyCode: PropTypes.string,
6012
6035
  fiatCurrencyDecimals: PropTypes.number,
6013
6036
  formHasFiat: PropTypes.bool,
6037
+ showEmailInput: PropTypes.bool,
6014
6038
  termsOfUseUrl: PropTypes.string,
6015
6039
  privacyPolicyUrl: PropTypes.string,
6016
6040
  amlPolicyUrl: PropTypes.string,
@@ -6051,6 +6075,7 @@
6051
6075
  fiatCurrencyCode: null,
6052
6076
  fiatCurrencyDecimals: null,
6053
6077
  formHasFiat: true,
6078
+ showEmailInput: false,
6054
6079
  termsOfUseUrl: null,
6055
6080
  privacyPolicyUrl: null,
6056
6081
  amlPolicyUrl: null,
@@ -11859,87 +11884,106 @@
11859
11884
  return !fromCoinSwapspaceDetails || !toCoinSwapspaceDetails || !fromCoinSwapspaceDetails.deposit || !toCoinSwapspaceDetails.withdrawal || !fromCoinSwapspaceDetails.isAvailable || !toCoinSwapspaceDetails.isAvailable ? {
11860
11885
  result: false,
11861
11886
  reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED
11862
- } : 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({
11863
- headers: _this4._headers
11864
- }, createRobustTimeoutSetupForAxios()))).then(function (response) {
11865
- var _response$data, _exchangesSupportingT;
11866
- var _exit;
11867
- function _temp4(_result) {
11868
- if (_exit) return _result;
11869
- var result = {
11887
+ } : Promise.resolve(_this4._fetchPartnersListIfNeeded()).then(function () {
11888
+ var bannedPartnersSet = new Set(bannedPartners);
11889
+ var whitelistedPartnersSet = whitelistedPartners == null ? null : new Set(whitelistedPartners);
11890
+ var finalAllowedSwapspacePartners = _this4._partners.map(function (partner) {
11891
+ return partner == null ? void 0 : partner.path;
11892
+ }).filter(function (partnerId) {
11893
+ return typeof partnerId === "string" && partnerId.length > 0 && !bannedPartnersSet.has(partnerId) && (whitelistedPartnersSet == null || whitelistedPartnersSet.has(partnerId));
11894
+ });
11895
+ if (_this4._partners.length > 0 && finalAllowedSwapspacePartners.length === 0) {
11896
+ Logger.log("No allowed swapspace partners to request after restrictions.", loggerSource);
11897
+ return {
11870
11898
  result: false,
11871
- 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,
11872
- smallestMin: smallestMin,
11873
- greatestMax: greatestMax
11899
+ reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED
11874
11900
  };
11875
- Logger.log("Returning result " + safeStringify(result), loggerSource);
11876
- return result;
11877
11901
  }
11878
- Logger.log("Retrieved " + (response == null || (_response$data = response.data) == null ? void 0 : _response$data.length) + " options", loggerSource);
11879
- var options = Array.isArray(response.data) ? response.data : [];
11902
+ /* Here we use not documented parameter 'estimated=false'. This parameter controls whether we want to use
11903
+ * cached rate values stored in swapspace cache. Their support says they store at most for 30 sec.
11904
+ * But we are better off using the most actual rates.
11905
+ */
11880
11906
  // TODO: [feature, high] remove if possible over-engineering about toAmount = 0 options treating as supported but not available. task_id=404ae30d9a7743238af3cc0d3bae9239
11881
- var exchangesSupportingThePairDespiteFixedOrFloating = options.filter(function (exchange) {
11882
- 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);
11907
+ // min=0 or max=0 means there is no limit for the partner
11908
+ var requestParams = new URLSearchParams({
11909
+ fromCurrency: fromCoinSwapspaceDetails.code,
11910
+ fromNetwork: fromCoinSwapspaceDetails.network,
11911
+ toNetwork: toCoinSwapspaceDetails.network,
11912
+ toCurrency: toCoinSwapspaceDetails.code,
11913
+ amount: amountCoins,
11914
+ estimated: "false"
11883
11915
  });
11884
- var exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating;
11885
- if (fixed != null) {
11886
- exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating.filter(function (option) {
11887
- return option.fixed === fixed;
11888
- });
11916
+ if ((finalAllowedSwapspacePartners == null ? void 0 : finalAllowedSwapspacePartners.length) > 0) {
11917
+ // Swapspace `partner` param filters estimation to specific comma-separated partner IDs.
11918
+ requestParams.set("partner", finalAllowedSwapspacePartners.join(","));
11889
11919
  }
11890
- Logger.log(((_exchangesSupportingT = exchangesSupportingThePair) == null ? void 0 : _exchangesSupportingT.length) + " of them have exist=true", loggerSource);
11891
- if (exchangesSupportingThePair.length === 0) {
11892
- if (exchangesSupportingThePairDespiteFixedOrFloating.length > 0 && fixed !== null) {
11920
+ return Promise.resolve(axios__default["default"].get(_this4._URL + "/api/v2/amounts?" + requestParams.toString(), _extends({
11921
+ headers: _this4._headers
11922
+ }, createRobustTimeoutSetupForAxios()))).then(function (response) {
11923
+ var _response$data, _exchangesSupportingT;
11924
+ Logger.log("Retrieved " + (response == null || (_response$data = response.data) == null ? void 0 : _response$data.length) + " options", loggerSource);
11925
+ var options = Array.isArray(response.data) ? response.data : [];
11926
+ var exchangesSupportingThePairDespiteFixedOrFloating = options.filter(function (exchange) {
11927
+ 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);
11928
+ });
11929
+ var exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating;
11930
+ if (fixed != null) {
11931
+ exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating.filter(function (option) {
11932
+ return option.fixed === fixed;
11933
+ });
11934
+ }
11935
+ Logger.log(((_exchangesSupportingT = exchangesSupportingThePair) == null ? void 0 : _exchangesSupportingT.length) + " of them have exist=true", loggerSource);
11936
+ if (exchangesSupportingThePair.length === 0) {
11937
+ if (exchangesSupportingThePairDespiteFixedOrFloating.length > 0 && fixed !== null) {
11938
+ return {
11939
+ result: false,
11940
+ reason: fixed ? SwapProvider.NO_SWAPS_REASONS.NO_FIXED_BUT_HAVE_FLOATING : SwapProvider.NO_SWAPS_REASONS.NO_FLOATING_BUT_HAVE_FIXED
11941
+ };
11942
+ }
11893
11943
  return {
11894
11944
  result: false,
11895
- reason: fixed ? SwapProvider.NO_SWAPS_REASONS.NO_FIXED_BUT_HAVE_FLOATING : SwapProvider.NO_SWAPS_REASONS.NO_FLOATING_BUT_HAVE_FIXED
11945
+ reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED
11896
11946
  };
11897
11947
  }
11898
- return {
11899
- result: false,
11900
- reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED
11901
- };
11902
- }
11903
- var availableExchanges = exchangesSupportingThePair.filter(function (exchange) {
11904
- return typeof (exchange == null ? void 0 : exchange.toAmount) === "number" && exchange.toAmount > 0;
11905
- });
11906
- Logger.log("Available (having amountTo): " + safeStringify(availableExchanges), loggerSource);
11907
- // min=0 or max=0 means there is no limit for the partner
11908
- var smallestMin = null;
11909
- if (exchangesSupportingThePair.find(function (ex) {
11910
- return BigNumber.BigNumber(ex.min).isZero();
11911
- }) == null) {
11912
- smallestMin = exchangesSupportingThePair.reduce(function (prev, cur) {
11913
- if (typeof cur.min === "number" && (prev === null || BigNumber.BigNumber(cur.min).lt(prev))) return BigNumber.BigNumber(cur.min);
11914
- return prev;
11915
- }, null);
11916
- }
11917
- var greatestMax = null;
11918
- if (exchangesSupportingThePair.find(function (ex) {
11919
- return BigNumber.BigNumber(ex.max).isZero();
11920
- }) == null) {
11921
- greatestMax = exchangesSupportingThePair.reduce(function (prev, cur) {
11922
- if (typeof cur.max === "number" && (prev === null || BigNumber.BigNumber(cur.max).gt(prev))) return BigNumber.BigNumber(cur.max);
11923
- return prev;
11924
- }, null);
11925
- }
11926
- var extraCoinsToFitMinMax = "0";
11927
- if (typeof fromCoinToUsdRate === "string" && BigNumber.BigNumber(fromCoinToUsdRate).gt("0")) {
11928
- var extraUsdToFitMinMax = BigNumber.BigNumber("1"); // We correct the limits as the exact limit can fluctuate and cause failed swap creation
11929
- extraCoinsToFitMinMax = AmountUtils.trim(extraUsdToFitMinMax.div(fromCoinToUsdRate), fromCoin.digits);
11930
- }
11931
- if (smallestMin instanceof BigNumber.BigNumber) {
11932
- smallestMin = AmountUtils.trim(smallestMin.plus(extraCoinsToFitMinMax), fromCoin.digits);
11933
- }
11934
- if (greatestMax instanceof BigNumber.BigNumber) {
11935
- if (greatestMax > extraCoinsToFitMinMax) {
11936
- greatestMax = AmountUtils.trim(greatestMax.minus(extraCoinsToFitMinMax), fromCoin.digits);
11937
- } else {
11938
- greatestMax = "0";
11948
+ var availableExchanges = exchangesSupportingThePair.filter(function (exchange) {
11949
+ return typeof (exchange == null ? void 0 : exchange.toAmount) === "number" && exchange.toAmount > 0;
11950
+ });
11951
+ Logger.log("Available (having amountTo): " + safeStringify(availableExchanges), loggerSource);
11952
+ var smallestMin = null;
11953
+ if (exchangesSupportingThePair.find(function (ex) {
11954
+ return BigNumber.BigNumber(ex.min).isZero();
11955
+ }) == null) {
11956
+ smallestMin = exchangesSupportingThePair.reduce(function (prev, cur) {
11957
+ if (typeof cur.min === "number" && (prev === null || BigNumber.BigNumber(cur.min).lt(prev))) return BigNumber.BigNumber(cur.min);
11958
+ return prev;
11959
+ }, null);
11960
+ }
11961
+ var greatestMax = null;
11962
+ if (exchangesSupportingThePair.find(function (ex) {
11963
+ return BigNumber.BigNumber(ex.max).isZero();
11964
+ }) == null) {
11965
+ greatestMax = exchangesSupportingThePair.reduce(function (prev, cur) {
11966
+ if (typeof cur.max === "number" && (prev === null || BigNumber.BigNumber(cur.max).gt(prev))) return BigNumber.BigNumber(cur.max);
11967
+ return prev;
11968
+ }, null);
11969
+ }
11970
+ var extraCoinsToFitMinMax = "0";
11971
+ if (typeof fromCoinToUsdRate === "string" && BigNumber.BigNumber(fromCoinToUsdRate).gt("0")) {
11972
+ var extraUsdToFitMinMax = BigNumber.BigNumber("1"); // We correct the limits as the exact limit can fluctuate and cause failed swap creation
11973
+ extraCoinsToFitMinMax = AmountUtils.trim(extraUsdToFitMinMax.div(fromCoinToUsdRate), fromCoin.digits);
11974
+ }
11975
+ if (smallestMin instanceof BigNumber.BigNumber) {
11976
+ smallestMin = AmountUtils.trim(smallestMin.plus(extraCoinsToFitMinMax), fromCoin.digits);
11977
+ }
11978
+ if (greatestMax instanceof BigNumber.BigNumber) {
11979
+ if (greatestMax > extraCoinsToFitMinMax) {
11980
+ greatestMax = AmountUtils.trim(greatestMax.minus(extraCoinsToFitMinMax), fromCoin.digits);
11981
+ } else {
11982
+ greatestMax = "0";
11983
+ }
11939
11984
  }
11940
- }
11941
- var _temp3 = function () {
11942
11985
  if (availableExchanges.length) {
11986
+ var _bestOpt$duration;
11943
11987
  var sorted = availableExchanges.sort(function (op1, op2) {
11944
11988
  return op2.toAmount - op1.toAmount;
11945
11989
  });
@@ -11957,37 +12001,35 @@
11957
12001
  }
11958
12002
  }
11959
12003
  var rate = bestOpt.toAmount && bestOpt.fromAmount ? BigNumber.BigNumber(bestOpt.toAmount).div(bestOpt.fromAmount) : null;
11960
- return Promise.resolve(_this4._fetchPartnersListIfNeeded()).then(function () {
11961
- var _bestOpt$duration;
11962
- var partner = _this4._partners.find(function (p) {
11963
- var _bestOpt$partner;
11964
- return (bestOpt == null || (_bestOpt$partner = bestOpt.partner) == null ? void 0 : _bestOpt$partner.toLowerCase()) === p.path.toLowerCase();
11965
- });
11966
- var isRefundAddressRequired = partner == null ? true : bestOpt.fixed ? partner.reqFixedRefund : partner.reqFloatRefund;
11967
- var _result$min$max$small = {
11968
- result: true,
11969
- min: min,
11970
- max: max,
11971
- smallestMin: smallestMin,
11972
- greatestMax: greatestMax,
11973
- rate: rate != null ? AmountUtils.trim(rate, _this4._maxRateDigits) : null,
11974
- durationMinutesRange: (_bestOpt$duration = bestOpt.duration) != null ? _bestOpt$duration : null,
11975
- fixed: bestOpt.fixed,
11976
- rawSwapData: bestOpt,
11977
- isRefundAddressRequired: !!isRefundAddressRequired
11978
- };
11979
- _exit = 1;
11980
- return _result$min$max$small;
12004
+ var partner = _this4._partners.find(function (p) {
12005
+ var _bestOpt$partner;
12006
+ return (bestOpt == null || (_bestOpt$partner = bestOpt.partner) == null ? void 0 : _bestOpt$partner.toLowerCase()) === p.path.toLowerCase();
11981
12007
  });
12008
+ var isRefundAddressRequired = partner == null ? true : bestOpt.fixed ? partner.reqFixedRefund : partner.reqFloatRefund;
12009
+ return {
12010
+ result: true,
12011
+ min: min,
12012
+ max: max,
12013
+ smallestMin: smallestMin,
12014
+ greatestMax: greatestMax,
12015
+ rate: rate != null ? AmountUtils.trim(rate, _this4._maxRateDigits) : null,
12016
+ durationMinutesRange: (_bestOpt$duration = bestOpt.duration) != null ? _bestOpt$duration : null,
12017
+ fixed: bestOpt.fixed,
12018
+ rawSwapData: bestOpt,
12019
+ isRefundAddressRequired: !!isRefundAddressRequired
12020
+ };
11982
12021
  }
11983
- }();
11984
- return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
12022
+ var result = {
12023
+ result: false,
12024
+ 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,
12025
+ smallestMin: smallestMin,
12026
+ greatestMax: greatestMax
12027
+ };
12028
+ Logger.log("Returning result " + safeStringify(result), loggerSource);
12029
+ return result;
12030
+ });
11985
12031
  });
11986
12032
  });
11987
- /* Here we use not documented parameter 'estimated=false'. This parameter controls whether we want to use
11988
- * cached rate values stored in swapspace cache. Their support says they store at most for 30 sec.
11989
- * But we are better off using the most actual rates.
11990
- */
11991
12033
  }, function (e) {
11992
12034
  var _e$response;
11993
12035
  if ((e == null || (_e$response = e.response) == null ? void 0 : _e$response.status) === 429) {
@@ -15572,10 +15614,10 @@
15572
15614
  }
15573
15615
  };
15574
15616
  return Promise.resolve(axios__default["default"].post(_this3._URL, amountRequest, _extends({}, _this3.axiosRequestPreset, createRobustTimeoutSetupForAxios()))).then(function (amountHttp) {
15575
- var _amountPayload$result;
15617
+ var _amountPayload$result, _amountPayload$result2;
15576
15618
  var amountPayload = _this3._assertValidJsonRpcPayload(amountHttp == null ? void 0 : amountHttp.data, "getExchangeAmount");
15577
15619
  var receiveAmount = new BigNumber__default["default"]((_amountPayload$result = amountPayload == null ? void 0 : amountPayload.result) != null ? _amountPayload$result : "0");
15578
- if (!receiveAmount.isFinite() || receiveAmount.lte(0)) {
15620
+ if (!/^\d+(\.\d+)?$/.test(String((_amountPayload$result2 = amountPayload == null ? void 0 : amountPayload.result) != null ? _amountPayload$result2 : "").trim()) || !receiveAmount.isFinite() || receiveAmount.lte(0)) {
15579
15621
  throw new Error("ChangeHero.getExchangeAmount returned non-positive or invalid amount: " + safeStringify(amountPayload));
15580
15622
  }
15581
15623
  var rate = receiveAmount.div(requestedAmount);
@@ -16399,9 +16441,13 @@
16399
16441
  fiatMax: null,
16400
16442
  rate: undefined
16401
16443
  } : Promise.resolve(provider.getSwapInfo(fromCoin, toCoin, amountCoins, fixed, coinUsdtRate, amountIsToReceive, bannedPartners, whitelistedPartners)).then(function (details) {
16402
- var _result$swapCreationI, _result$swapCreationI2;
16444
+ var _details$rate, _result$swapCreationI, _result$swapCreationI2;
16403
16445
  // eslint-disable-next-line no-console
16404
16446
  console.log("getSwapInfo raw result: ", details, loggerSource);
16447
+ var rateBigNumber = new BigNumber.BigNumber((_details$rate = details == null ? void 0 : details.rate) != null ? _details$rate : "NaN");
16448
+ if ((details == null ? void 0 : details.result) === true && (!rateBigNumber.isFinite() || rateBigNumber.lte(0))) {
16449
+ throw new Error("Invalid rate in swap info from " + provider.id + ": " + safeStringify(details == null ? void 0 : details.rate));
16450
+ }
16405
16451
  var min = details.smallestMin != null && BigNumber.BigNumber(details.smallestMin).gt("0") ? details.smallestMin : null;
16406
16452
  var max = details.greatestMax != null && BigNumber.BigNumber(details.greatestMax).gt("0") ? details.greatestMax : null;
16407
16453
  var fiatMin = null,
@@ -16415,7 +16461,7 @@
16415
16461
  }
16416
16462
  }
16417
16463
  var composeFailResult = function composeFailResult(reason) {
16418
- var _details$rate;
16464
+ var _details$rate2;
16419
16465
  return {
16420
16466
  result: false,
16421
16467
  reason: reason,
@@ -16423,7 +16469,7 @@
16423
16469
  fiatMin: fiatMin,
16424
16470
  max: max != null ? max : null,
16425
16471
  fiatMax: fiatMax,
16426
- rate: (_details$rate = details.rate) != null ? _details$rate : null
16472
+ rate: (_details$rate2 = details.rate) != null ? _details$rate2 : null
16427
16473
  };
16428
16474
  };
16429
16475
  if (!details.result) {