@rabbitio/ui-kit 1.0.0-beta.70 → 1.0.0-beta.71

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 (171) hide show
  1. package/coverage/clover.xml +7 -5
  2. package/coverage/coverage-final.json +1 -1
  3. package/coverage/index.html +7 -7
  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/assets/wrappedImages/arrowIcon.jsx.html +1 -1
  7. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/arrowTosca.jsx.html +1 -1
  8. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/arrowWhite.jsx.html +1 -1
  9. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/darkRectangle.jsx.html +1 -1
  10. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/determinedError.jsx.html +1 -1
  11. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/failedValidationIcon.jsx.html +1 -1
  12. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/index.html +1 -1
  13. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/infoIcon.jsx.html +1 -1
  14. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/noticeQuestionIcon.jsx.html +1 -1
  15. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/successfulValidationIcon.jsx.html +1 -1
  16. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/walletIcon.jsx.html +1 -1
  17. package/coverage/rabbit-ui-kit/src/common/adapters/axiosAdapter.js.html +1 -1
  18. package/coverage/rabbit-ui-kit/src/common/adapters/index.html +1 -1
  19. package/coverage/rabbit-ui-kit/src/common/adapters/qrUtils.js.html +1 -1
  20. package/coverage/rabbit-ui-kit/src/common/amountUtils.js.html +1 -1
  21. package/coverage/rabbit-ui-kit/src/common/errorUtils.js.html +1 -1
  22. package/coverage/rabbit-ui-kit/src/common/external-apis/apiGroups.js.html +1 -1
  23. package/coverage/rabbit-ui-kit/src/common/external-apis/index.html +1 -1
  24. package/coverage/rabbit-ui-kit/src/common/external-apis/ipAddressProviders.js.html +1 -1
  25. package/coverage/rabbit-ui-kit/src/common/fiatCurrenciesService.js.html +1 -1
  26. package/coverage/rabbit-ui-kit/src/common/index.html +1 -1
  27. package/coverage/rabbit-ui-kit/src/common/models/blockchain.js.html +1 -1
  28. package/coverage/rabbit-ui-kit/src/common/models/coin.js.html +1 -1
  29. package/coverage/rabbit-ui-kit/src/common/models/index.html +1 -1
  30. package/coverage/rabbit-ui-kit/src/common/models/protocol.js.html +1 -1
  31. package/coverage/rabbit-ui-kit/src/common/utils/cache.js.html +1 -1
  32. package/coverage/rabbit-ui-kit/src/common/utils/emailAPI.js.html +1 -1
  33. package/coverage/rabbit-ui-kit/src/common/utils/index.html +1 -1
  34. package/coverage/rabbit-ui-kit/src/common/utils/logging/index.html +1 -1
  35. package/coverage/rabbit-ui-kit/src/common/utils/logging/logger.js.html +1 -1
  36. package/coverage/rabbit-ui-kit/src/common/utils/logging/logsStorage.js.html +1 -1
  37. package/coverage/rabbit-ui-kit/src/common/utils/postponeExecution.js.html +1 -1
  38. package/coverage/rabbit-ui-kit/src/common/utils/safeStringify.js.html +1 -1
  39. package/coverage/rabbit-ui-kit/src/components/atoms/AssetIcon/AssetIcon.jsx.html +1 -1
  40. package/coverage/rabbit-ui-kit/src/components/atoms/AssetIcon/index.html +1 -1
  41. package/coverage/rabbit-ui-kit/src/components/atoms/AssetSelection/AssetSelection.jsx.html +1 -1
  42. package/coverage/rabbit-ui-kit/src/components/atoms/AssetSelection/index.html +1 -1
  43. package/coverage/rabbit-ui-kit/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +1 -1
  44. package/coverage/rabbit-ui-kit/src/components/atoms/BackgroundTitle/index.html +1 -1
  45. package/coverage/rabbit-ui-kit/src/components/atoms/InformationMessage/InformationMessage.jsx.html +1 -1
  46. package/coverage/rabbit-ui-kit/src/components/atoms/InformationMessage/index.html +1 -1
  47. package/coverage/rabbit-ui-kit/src/components/atoms/Input/Input.jsx.html +1 -1
  48. package/coverage/rabbit-ui-kit/src/components/atoms/Input/index.html +1 -1
  49. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/LoadingDots.jsx.html +1 -1
  50. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/index.html +1 -1
  51. package/coverage/rabbit-ui-kit/src/components/atoms/NoticeIcon/NoticeIcon.jsx.html +1 -1
  52. package/coverage/rabbit-ui-kit/src/components/atoms/NoticeIcon/index.html +1 -1
  53. package/coverage/rabbit-ui-kit/src/components/atoms/QrCode/QrCode.jsx.html +1 -1
  54. package/coverage/rabbit-ui-kit/src/components/atoms/QrCode/index.html +1 -1
  55. package/coverage/rabbit-ui-kit/src/components/atoms/RateSelector/RateSelector.jsx.html +1 -1
  56. package/coverage/rabbit-ui-kit/src/components/atoms/RateSelector/index.html +1 -1
  57. package/coverage/rabbit-ui-kit/src/components/atoms/SupportChat/SupportChat.jsx.html +1 -1
  58. package/coverage/rabbit-ui-kit/src/components/atoms/SupportChat/index.html +1 -1
  59. package/coverage/rabbit-ui-kit/src/components/atoms/Textarea/Textarea.jsx.html +1 -1
  60. package/coverage/rabbit-ui-kit/src/components/atoms/Textarea/index.html +1 -1
  61. package/coverage/rabbit-ui-kit/src/components/atoms/TitleBox/TitleBox.jsx.html +1 -1
  62. package/coverage/rabbit-ui-kit/src/components/atoms/TitleBox/index.html +1 -1
  63. package/coverage/rabbit-ui-kit/src/components/atoms/Tooltip/Tooltip.jsx.html +1 -1
  64. package/coverage/rabbit-ui-kit/src/components/atoms/Tooltip/index.html +1 -1
  65. package/coverage/rabbit-ui-kit/src/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +1 -1
  66. package/coverage/rabbit-ui-kit/src/components/atoms/TwoLinesOfText/index.html +1 -1
  67. package/coverage/rabbit-ui-kit/src/components/atoms/Validation/Validation.jsx.html +1 -1
  68. package/coverage/rabbit-ui-kit/src/components/atoms/Validation/index.html +1 -1
  69. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Button/Button.jsx.html +1 -1
  70. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Button/index.html +1 -1
  71. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Close/Close.jsx.html +1 -1
  72. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Close/index.html +1 -1
  73. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/LinkButton/LinkButton.jsx.html +1 -1
  74. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/LinkButton/index.html +1 -1
  75. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +1 -1
  76. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/RadioButtonWithText/index.html +1 -1
  77. package/coverage/rabbit-ui-kit/src/components/hooks/index.html +1 -1
  78. package/coverage/rabbit-ui-kit/src/components/hooks/useCallHandlingErrors.js.html +1 -1
  79. package/coverage/rabbit-ui-kit/src/components/hooks/useReferredState.js.html +1 -1
  80. package/coverage/rabbit-ui-kit/src/components/molecules/AmountInput/AmountInput.jsx.html +1 -1
  81. package/coverage/rabbit-ui-kit/src/components/molecules/AmountInput/index.html +1 -1
  82. package/coverage/rabbit-ui-kit/src/components/molecules/CoinPicker/CoinPicker.jsx.html +1 -1
  83. package/coverage/rabbit-ui-kit/src/components/molecules/CoinPicker/index.html +1 -1
  84. package/coverage/rabbit-ui-kit/src/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +1 -1
  85. package/coverage/rabbit-ui-kit/src/components/molecules/LineWithIconLink/index.html +1 -1
  86. package/coverage/rabbit-ui-kit/src/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +1 -1
  87. package/coverage/rabbit-ui-kit/src/components/molecules/TitledLineWithIconLink/index.html +1 -1
  88. package/coverage/rabbit-ui-kit/src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +1 -1
  89. package/coverage/rabbit-ui-kit/src/components/organisms/CoinPickerDialogStep/index.html +1 -1
  90. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/Dialog.jsx.html +1 -1
  91. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +1 -1
  92. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogButtons/index.html +1 -1
  93. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +1 -1
  94. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogStep/index.html +1 -1
  95. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/index.html +1 -1
  96. package/coverage/rabbit-ui-kit/src/components/organisms/SwapForm/SwapForm.jsx.html +10 -4
  97. package/coverage/rabbit-ui-kit/src/components/organisms/SwapForm/index.html +5 -5
  98. package/coverage/rabbit-ui-kit/src/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +1 -1
  99. package/coverage/rabbit-ui-kit/src/components/templates/DeterminedErrorDialogStep/index.html +1 -1
  100. package/coverage/rabbit-ui-kit/src/components/utils/index.html +1 -1
  101. package/coverage/rabbit-ui-kit/src/components/utils/inputValueProviders.js.html +1 -1
  102. package/coverage/rabbit-ui-kit/src/components/utils/textUtils.js.html +1 -1
  103. package/coverage/rabbit-ui-kit/src/components/utils/uiUtils.js.html +1 -1
  104. package/coverage/rabbit-ui-kit/src/components/utils/urlQueryUtils.js.html +1 -1
  105. package/coverage/rabbit-ui-kit/src/constants/atoms/Close/close.jsx.html +1 -1
  106. package/coverage/rabbit-ui-kit/src/constants/atoms/Close/index.html +1 -1
  107. package/coverage/rabbit-ui-kit/src/constants/atoms/LinkButton/index.html +1 -1
  108. package/coverage/rabbit-ui-kit/src/constants/atoms/LinkButton/linkButton.jsx.html +1 -1
  109. package/coverage/rabbit-ui-kit/src/constants/atoms/Tooltip/index.html +1 -1
  110. package/coverage/rabbit-ui-kit/src/constants/atoms/Tooltip/tooltip.jsx.html +1 -1
  111. package/coverage/rabbit-ui-kit/src/constants/globalConstants.jsx.html +1 -1
  112. package/coverage/rabbit-ui-kit/src/constants/index.html +1 -1
  113. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/DialogStep/dialogStep.js.html +1 -1
  114. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/DialogStep/index.html +1 -1
  115. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/dialog.js.html +1 -1
  116. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/index.html +1 -1
  117. package/coverage/rabbit-ui-kit/src/index.html +1 -1
  118. package/coverage/rabbit-ui-kit/src/index.js.html +1 -1
  119. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js.html +1 -1
  120. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js.html +1 -1
  121. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cancelProcessing.js.html +1 -1
  122. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js.html +1 -1
  123. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/externalApiProvider.js.html +1 -1
  124. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/externalServicesStatsCollector.js.html +1 -1
  125. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/index.html +1 -1
  126. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/robustExternalAPICallerService.js.html +1 -1
  127. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/index.html +1 -1
  128. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +1 -1
  129. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +1 -1
  130. package/coverage/rabbit-ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +1 -1
  131. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwap.js.html +1 -1
  132. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +1 -1
  133. package/coverage/rabbit-ui-kit/src/swaps-lib/models/index.html +1 -1
  134. package/coverage/rabbit-ui-kit/src/swaps-lib/services/index.html +1 -1
  135. package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +1 -1
  136. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/index.html +1 -1
  137. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/swapUtils.js.html +1 -1
  138. package/coverage/rabbit-ui-kit/stories/atoms/BackgroundTitle.stories.jsx.html +1 -1
  139. package/coverage/rabbit-ui-kit/stories/atoms/LinesOfText.stories.jsx.html +1 -1
  140. package/coverage/rabbit-ui-kit/stories/atoms/LoadingDots.stories.jsx.html +1 -1
  141. package/coverage/rabbit-ui-kit/stories/atoms/QrCode.stories.jsx.html +1 -1
  142. package/coverage/rabbit-ui-kit/stories/atoms/RateSelector.stories.jsx.html +1 -1
  143. package/coverage/rabbit-ui-kit/stories/atoms/Validation.stories.jsx.html +1 -1
  144. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Button.stories.jsx.html +1 -1
  145. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Close.stories.jsx.html +1 -1
  146. package/coverage/rabbit-ui-kit/stories/atoms/buttons/LinkButton.stories.jsx.html +1 -1
  147. package/coverage/rabbit-ui-kit/stories/atoms/buttons/index.html +1 -1
  148. package/coverage/rabbit-ui-kit/stories/atoms/index.html +1 -1
  149. package/coverage/rabbit-ui-kit/stories/molecules/LineWithIconLink.stories.jsx.html +1 -1
  150. package/coverage/rabbit-ui-kit/stories/molecules/TitledLineWithIconLink.stories.jsx.html +1 -1
  151. package/coverage/rabbit-ui-kit/stories/molecules/index.html +1 -1
  152. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/Dialog.stories.jsx.html +1 -1
  153. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +1 -1
  154. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/index.html +1 -1
  155. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +1 -1
  156. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/index.html +1 -1
  157. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/index.html +1 -1
  158. package/coverage/rabbit-ui-kit/stories/stubs/exampleContent.jsx.html +1 -1
  159. package/coverage/rabbit-ui-kit/stories/stubs/index.html +1 -1
  160. package/coverage/rabbit-ui-kit/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +1 -1
  161. package/coverage/rabbit-ui-kit/stories/templates/index.html +1 -1
  162. package/dist/index.cjs +1 -1
  163. package/dist/index.cjs.map +1 -1
  164. package/dist/index.modern.js +1 -1
  165. package/dist/index.modern.js.map +1 -1
  166. package/dist/index.module.js +1 -1
  167. package/dist/index.module.js.map +1 -1
  168. package/dist/index.umd.js +1 -1
  169. package/dist/index.umd.js.map +1 -1
  170. package/package.json +1 -1
  171. package/src/components/organisms/SwapForm/SwapForm.jsx +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/components/atoms/LoadingDots/LoadingDots.jsx","../src/components/atoms/buttons/Button/Button.jsx","../src/components/atoms/SupportChat/SupportChat.jsx","../src/components/atoms/AssetIcon/AssetIcon.jsx","../src/common/utils/logging/logsStorage.js","../src/common/utils/safeStringify.js","../src/common/utils/logging/logger.js","../src/components/hooks/useCallHandlingErrors.js","../src/constants/atoms/LinkButton/linkButton.jsx","../src/components/atoms/buttons/LinkButton/LinkButton.jsx","../src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx","../src/components/atoms/BackgroundTitle/BackgroundTitle.jsx","../src/constants/atoms/Close/close.jsx","../src/components/atoms/buttons/Close/Close.jsx","../src/assets/wrappedImages/successfulValidationIcon.jsx","../src/assets/wrappedImages/failedValidationIcon.jsx","../src/components/atoms/Validation/Validation.jsx","../src/components/hooks/useReferredState.js","../src/common/errorUtils.js","../src/constants/organisms/dialog/dialog.js","../src/components/organisms/Dialog/Dialog.jsx","../src/constants/organisms/dialog/DialogStep/dialogStep.js","../src/assets/wrappedImages/arrowTosca.jsx","../src/assets/wrappedImages/arrowWhite.jsx","../src/components/organisms/Dialog/DialogStep/DialogStep.jsx","../src/assets/wrappedImages/arrowIcon.jsx","../src/components/atoms/AssetSelection/AssetSelection.jsx","../src/assets/wrappedImages/darkRectangle.jsx","../src/constants/atoms/Tooltip/tooltip.jsx","../src/components/atoms/Tooltip/Tooltip.jsx","../src/components/utils/uiUtils.js","../src/assets/wrappedImages/noticeQuestionIcon.jsx","../src/components/atoms/NoticeIcon/NoticeIcon.jsx","../src/components/utils/textUtils.js","../src/components/atoms/TitleBox/TitleBox.jsx","../src/assets/wrappedImages/walletIcon.jsx","../src/components/utils/inputValueProviders.js","../src/common/fiatCurrenciesService.js","../src/common/amountUtils.js","../src/components/molecules/AmountInput/AmountInput.jsx","../src/components/atoms/Textarea/Textarea.jsx","../src/components/atoms/RateSelector/RateSelector.jsx","../src/components/organisms/SwapForm/SwapForm.jsx","../src/common/adapters/qrUtils.js","../src/components/atoms/QrCode/QrCode.jsx","../src/components/atoms/TwoLinesOfText/LinesOfText.jsx","../src/components/molecules/LineWithIconLink/LineWithIconLink.jsx","../src/assets/wrappedImages/determinedError.jsx","../src/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx","../src/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx","../src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx","../src/assets/wrappedImages/infoIcon.jsx","../src/components/atoms/InformationMessage/InformationMessage.jsx","../src/components/atoms/Input/Input.jsx","../src/constants/globalConstants.jsx","../src/components/molecules/CoinPicker/CoinPicker.jsx","../src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx","../src/components/utils/urlQueryUtils.js","../src/common/models/blockchain.js","../src/common/models/protocol.js","../src/common/models/coin.js","../src/common/utils/cache.js","../src/common/utils/postponeExecution.js","../src/common/adapters/axiosAdapter.js","../src/common/utils/emailAPI.js","../src/robustExteranlApiCallerService/externalApiProvider.js","../src/common/external-apis/apiGroups.js","../src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js","../src/robustExteranlApiCallerService/externalServicesStatsCollector.js","../src/robustExteranlApiCallerService/robustExternalAPICallerService.js","../src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js","../src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js","../src/common/external-apis/ipAddressProviders.js","../src/robustExteranlApiCallerService/cancelProcessing.js","../src/swaps-lib/models/existingSwap.js","../src/swaps-lib/models/existingSwapWithFiatData.js","../src/swaps-lib/models/baseSwapCreationInfo.js","../src/swaps-lib/external-apis/swapProvider.js","../src/swaps-lib/external-apis/swapspaceSwapProvider.js","../src/swaps-lib/utils/swapUtils.js","../src/swaps-lib/services/publicSwapService.js"],"sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport styles from \"./LoadingDots.module.scss\";\n\n/**\n * LoadingDots Component - Displays a loading animation with dots.\n * This component allows customization of size, color, margins, and alignment.\n *\n * @component\n * @param {Object} props - The props of the component.\n * @param {('big'|'small'|'extra-small')} [props.size='small'] - Sets the size of the loading dots.\n * @param {boolean} [props.isColored=false] - If true, the dots will be colored, otherwise they will be monochrome.\n * @param {boolean} [props.noMargins=false] - If true, removes the margins around the loading dots.\n * @param {(boolean|'left'|'right')} [props.align=false] - Aligns the loading dots to the left or right if specified, otherwise centered.\n * @returns {React.ReactElement} A React component that renders the loading dots animation.\n */\nexport const LoadingDots = ({ size = \"small\", isColored = false, noMargins = false, align = false }) => {\n return (\n <div\n className={`${styles[\"loading-dots\"]} ${styles[size]} ${noMargins ? ` ${styles[\"no-margins\"]}` : \"\"} ${\n align ? styles[\"align-\" + align] : \"\"\n }`}\n >\n <div className={`${styles.dot} ${isColored ? ` ${styles.colored}` : \"\"}`} />\n <div className={`${styles.dot} ${isColored ? ` ${styles.colored}` : \"\"}`} />\n <div className={`${styles.dot} ${isColored ? ` ${styles.colored}` : \"\"}`} />\n </div>\n );\n};\n\nLoadingDots.propTypes = {\n size: PropTypes.oneOf([\"big\", \"small\", \"extra-small\"]),\n isColored: PropTypes.bool,\n noMargins: PropTypes.bool,\n align: PropTypes.oneOfType([PropTypes.oneOf([\"left\", \"right\"]), PropTypes.bool]),\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport styles from \"./Button.module.scss\";\n\nimport { LoadingDots } from \"../../LoadingDots/LoadingDots.jsx\";\n\n/**\n * Button component - A versatile and customizable button for React applications.\n * It supports various sizes, styles, and functionalities, including loaders, icons, and handling of click events.\n * This component can also be used as a link if \"to\" is provided.\n *\n * @component\n * @param {Object} props\n * @param {('xl'|'lg'|'md'|'sm')} [props.size='xl'] - Sets the size of the button.\n * @param {string} [props.className=''] - An optional custom CSS class name for additional styling.\n * @param {string} [props.mode='transparent'] - Determines the button's visual style.\n * @param {Function} [props.onClick=(resetButtonLoader, event) => {}] - Callback function that triggers on button click.\n * @param {boolean} [props.loader=true] - If true, displays a loader animation on the button when clicked.\n * @param {boolean} [props.loading=false] - Controls the actual display of the loader if `loader` is true.\n * @param {string} [props.to=''] - The path for the button to act as a link.\n * @param {boolean} [props.fullWidthOnMobiles=false] - Expands the button to full width on mobiles.\n * @param {boolean} [props.fullWidthOnTablets=false] - Expands the button to full width on tablets.\n * @param {string} [props.icon=''] - The path to the button's icon.\n * @param {React.ReactNode} [props.content=''] - The text or content displayed inside the button.\n * @param {boolean} [props.isDisabled=false] - Disables the button if true.\n * @param {Function} [props.setClickTrigger=(p) => {}] - Function to programmatically trigger a button click.\n * @param {boolean} [props.isFormSubmittingButton=false] - If true, adds a hidden `<input type=\"submit\">`.\n * @param {boolean} [props.bigIcon=false] - If true, displays a larger icon on the button.\n * @param {boolean} [props.checkmarkOnClick=false] - Shows a checkmark instead of content for a few seconds after click.\n * @param {boolean} [props.propagatePrimaryButtonClick=true] - Propagates the primary button click event if true.\n * @param {boolean} [props.smallPaddingOnSmallMobiles=false] - Enables smaller paddings for extra-small screen sizes.\n * @param {Function} [props.handleError=(func) => func()] - Function to handle errors during button click events.\n * @returns {React.ReactElement}\n */\nexport const Button = ({\n size = \"xl\",\n className = \"\",\n mode = \"transparent\",\n onClick = (resetButtonLoader, event) => {},\n loader = true,\n loading = false,\n to = \"\",\n fullWidthOnMobiles = false,\n fullWidthOnTablets = false,\n icon = \"\",\n content = \"\",\n isDisabled = false,\n setClickTrigger = p => {},\n isFormSubmittingButton = false,\n bigIcon = false,\n checkmarkOnClick = false,\n propagatePrimaryButtonClick = true,\n smallPaddingOnSmallMobiles = false,\n handleError = (func, event) => func(event),\n}) => {\n const [isLoading, setIsLoading] = useState(loading);\n const [isCheckShown, setIsCheckShown] = useState(false);\n const [event, setEvent] = useState(null);\n\n const buttonRef = useRef();\n\n useEffect(() => {\n setClickTrigger(() => buttonRef.current.click());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [buttonRef]);\n\n useEffect(() => {\n if (isLoading) {\n onClick(() => setIsLoading(false), event);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLoading]);\n\n const buttonClick = e => {\n if (isLoading || isDisabled) {\n return false;\n }\n\n if (checkmarkOnClick && !isCheckShown && !loader && !loading) {\n setIsCheckShown(true);\n setTimeout(() => {\n setIsCheckShown(false);\n }, 2000);\n }\n\n if (e?.persist) {\n // Persisting React's SyntheticEvent to be able to use it in any async context\n e.persist();\n }\n\n !propagatePrimaryButtonClick && e.stopPropagation();\n if (loader) {\n setIsLoading(true);\n setEvent(e);\n } else {\n onClick(() => setIsLoading(false), e);\n }\n };\n\n const classNames =\n `${styles.button} ${styles[size]} ${styles[className]} ${styles[mode]}` +\n (fullWidthOnMobiles ? ` ${styles[\"full-width-on-mobiles\"]}` : \"\") +\n (fullWidthOnTablets ? ` ${styles[\"full-width-on-tablets\"]}` : \"\") +\n (isDisabled ? ` ${styles.disable}` : \"\") +\n (smallPaddingOnSmallMobiles ? ` ${styles[\"small-padding-on-small-mobiles\"]}` : \"\");\n\n return (\n <>\n {isFormSubmittingButton ? <input type=\"submit\" hidden /> : null}\n {to ? (\n <a className={classNames} onClick={e => handleError(buttonClick, e)} href={to} ref={buttonRef}>\n {icon ? (\n <div className={styles[\"button-with-icon\"] + (bigIcon ? ` ${styles[\"big-icon\"]}` : \"\")}>\n <img src={icon} alt=\"button icon\" />\n <span className={styles[\"button-with-icon-text\"]}>{content}</span>\n </div>\n ) : (\n content\n )}\n </a>\n ) : (\n <div className={classNames} onClick={e => handleError(buttonClick, e)} ref={buttonRef}>\n <div\n className={`${styles[\"button-primary-dots-wrapper\"]} ${isLoading && loader ? styles.show : \"\"}`}\n >\n {loader && isLoading ? <LoadingDots isColored={mode === \"white\"} /> : null}\n </div>\n <div\n className={`${styles[\"button-success-icon\"]} ${styles[mode]} ${\n isCheckShown ? styles[\"show\"] : \"\"\n }`}\n ></div>\n {icon ? (\n <div\n className={`${styles[\"button-with-icon\"]} ${\n (isLoading && loader) || (checkmarkOnClick && isCheckShown) ? styles[\"hide\"] : \"\"\n } ${bigIcon ? styles[\"big-icon\"] : \"\"}`}\n >\n <img src={icon} alt=\"button icon\" />\n <span className={styles[\"button-with-icon-text\"]}>{content}</span>\n </div>\n ) : (\n <span\n className={`${styles[\"button-text\"]} ${\n (isLoading && loader) || (checkmarkOnClick && isCheckShown) ? styles[\"hide\"] : \"\"\n }`}\n >\n {content}\n </span>\n )}\n </div>\n )}\n </>\n );\n};\n\nButton.propTypes = {\n size: PropTypes.oneOf([\"xl\", \"lg\", \"md\", \"sm\"]),\n className: PropTypes.string,\n mode: PropTypes.oneOf([\n \"transparent\",\n \"white\",\n \"white-flat\",\n \"primary\",\n \"primary-bordered\",\n \"primary-transparent\",\n \"transparent-bordered\",\n \"transparent-without-shadow\",\n ]),\n onClick: PropTypes.func,\n loader: PropTypes.bool,\n loading: PropTypes.bool,\n to: PropTypes.string,\n fullWidthOnMobiles: PropTypes.bool,\n fullWidthOnTablets: PropTypes.bool,\n icon: PropTypes.string,\n content: PropTypes.node,\n isDisabled: PropTypes.bool,\n setClickTrigger: PropTypes.func,\n isFormSubmittingButton: PropTypes.bool,\n bigIcon: PropTypes.bool,\n checkmarkOnClick: PropTypes.bool,\n propagatePrimaryButtonClick: PropTypes.bool,\n smallPaddingOnSmallMobiles: PropTypes.bool,\n handleError: PropTypes.func,\n};\n\nButton.defaultProps = {\n size: \"xl\",\n className: \"\",\n mode: \"transparent\",\n onClick: (resetButtonLoader, event) => {},\n loader: true,\n loading: false,\n to: \"\",\n fullWidthOnMobiles: false,\n fullWidthOnTablets: false,\n icon: \"\",\n content: \"\",\n isDisabled: false,\n setClickTrigger: p => {},\n isFormSubmittingButton: false,\n bigIcon: false,\n checkmarkOnClick: false,\n propagatePrimaryButtonClick: true,\n smallPaddingOnSmallMobiles: false,\n handleError: func => func(),\n};\n","import { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport const SupportChat = ({ url, websiteToken, welcomeMessage = \"\", locale = \"en\" }) => {\n useEffect(() => {\n window.chatwootSettings = {\n position: \"right\",\n type: \"standard\",\n launcherTitle: welcomeMessage,\n locale: locale,\n };\n (function (d, t) {\n var BASE_URL = url;\n var g = d.createElement(t),\n s = d.getElementsByTagName(t)[0];\n g.src = BASE_URL + \"/packs/js/sdk.js\";\n g.defer = true;\n g.async = true;\n s.parentNode.insertBefore(g, s);\n g.onload = function () {\n window.chatwootSDK.run({\n websiteToken: websiteToken,\n baseUrl: BASE_URL,\n });\n };\n })(document, \"script\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return null;\n};\n\nSupportChat.propTypes = {\n url: PropTypes.string.isRequired,\n websiteToken: PropTypes.string.isRequired,\n welcomeMessage: PropTypes.string,\n locale: PropTypes.string,\n};\n\nSupportChat.defaultProps = {\n welcomeMessage: \"\",\n locale: \"en\",\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./asset-icon.module.scss\";\n\n/**\n * AssetIcon component to display an icon for an asset.\n *\n * @component\n * @param {string} assetIconSrc - The source URL for the asset icon.\n * @param {string} [assetIconProtocolSrc=null] - The source URL for the asset icon that is base for this asset (e.g. ETH for USDT ERC20).\n * @param {string} [fallbackSrc=null] - The fallback source URL in case the main source fails to load.\n * @param {boolean} [small=false] - Whether to display a smaller version of the icon.\n */\nexport const AssetIcon = ({ assetIconSrc, assetIconProtocolSrc = null, fallbackSrc = null, small = false }) => {\n const handleFailedLoad = e => {\n e.target.onerror = null;\n e.target.src = fallbackSrc;\n };\n\n return (\n <div className={s[\"asset-icon\"] + (small ? \" \" + s[\"small\"] : \"\")}>\n <img\n src={assetIconSrc}\n className={s[\"asset-icon-primary\"] + (small ? \" \" + s[\"small\"] : \"\")}\n alt={\" \"}\n onError={handleFailedLoad}\n />\n {assetIconProtocolSrc ? (\n <img\n src={assetIconProtocolSrc}\n className={s[\"asset-icon-secondary\"] + (small ? \" \" + s[\"small\"] : \"\")}\n alt={\" \"}\n onError={handleFailedLoad}\n />\n ) : (\n \"\"\n )}\n </div>\n );\n};\n\nAssetIcon.propTypes = {\n assetIconSrc: PropTypes.string.isRequired,\n assetIconProtocolSrc: PropTypes.string,\n fallbackSrc: PropTypes.string,\n small: PropTypes.bool,\n};\n\nAssetIcon.defaultProps = {\n assetIconProtocolSrc: null,\n fallbackSrc: null,\n small: false,\n};\n","export class LogsStorage {\n static _inMemoryStorage = [];\n static _logsStorageId = \"clietnLogs_j203fj2D0n-d1\";\n\n static saveLog(log) {\n this._inMemoryStorage.push(log);\n }\n\n static getInMemoryLogs() {\n return this._inMemoryStorage;\n }\n\n static getAllLogs() {\n let storedLogs = \"\";\n if (typeof window !== \"undefined\") {\n storedLogs = localStorage.getItem(this._logsStorageId);\n }\n return `${storedLogs}\\n${this._inMemoryStorage.join(\"\\n\")}`;\n }\n\n /**\n * @param logger {Logger}\n */\n static saveToTheDisk(logger) {\n try {\n const MAX_LOCAL_STORAGE_VOLUME_BYTES = 5 * 1024 * 1024;\n const MAX_LOGS_STORAGE_BYTES = MAX_LOCAL_STORAGE_VOLUME_BYTES * 0.65;\n if (typeof window !== \"undefined\") {\n const existingLogs = localStorage.getItem(this._logsStorageId);\n const logsString = `${existingLogs}\\n${this._inMemoryStorage.join(\"\\n\")}`;\n const lettersCountToRemove = logsString.length - Math.round(MAX_LOGS_STORAGE_BYTES / 2);\n if (lettersCountToRemove > 0) {\n localStorage.setItem(\n this._logsStorageId,\n logsString.slice(lettersCountToRemove, logsString.length)\n );\n } else {\n localStorage.setItem(this._logsStorageId, logsString);\n }\n this._inMemoryStorage = [];\n }\n } catch (e) {\n logger?.logError(e, \"saveToTheDisk\", \"Failed to save logs to disk\");\n }\n }\n\n static removeAllClientLogs() {\n if (typeof window !== \"undefined\") {\n if (localStorage.getItem(\"doNotRemoveClientLogsWhenSignedOut\") !== \"true\") {\n localStorage.removeItem(this._logsStorageId);\n }\n }\n this._inMemoryStorage = [];\n }\n\n static setDoNotRemoveClientLogsWhenSignedOut(value) {\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"doNotRemoveClientLogsWhenSignedOut\", value);\n }\n }\n}\n","/**\n * Stringify given object by use of JSON.stringify but handles circular structures and \"response\", \"request\" properties\n * to avoid stringing redundant data when printing errors containing request/response objects.\n *\n * @param object - object to be stringed\n * @param indent - custom indentation\n * @return {string} - stringed object\n */\nexport function safeStringify(object, indent = 2) {\n let cache = [];\n if (\n typeof object === \"string\" ||\n typeof object === \"function\" ||\n typeof object === \"number\" ||\n typeof object === \"undefined\" ||\n typeof object === \"boolean\"\n ) {\n return String(object);\n }\n const retVal = JSON.stringify(\n object,\n (key, value) => {\n if (key.toLowerCase().includes(\"request\")) {\n return JSON.stringify({\n body: value?.body,\n query: value?.query,\n headers: value?.headers,\n });\n }\n\n if (key.toLowerCase().includes(\"response\")) {\n return JSON.stringify({\n statusText: value?.statusText,\n status: value?.status,\n data: value?.data,\n headers: value?.headers,\n });\n }\n\n return typeof value === \"object\" && value !== null\n ? cache.includes(value)\n ? \"duplicated reference\" // Duplicated references were found, discarding this key\n : cache.push(value) && value // Store value in our collection\n : value;\n },\n indent\n );\n cache = null;\n return retVal;\n}\n","import { LogsStorage } from \"./logsStorage.js\";\nimport { safeStringify } from \"../safeStringify.js\";\n\nexport class Logger {\n /**\n * Logs to client logs storage.\n *\n * WARNING! this method should ce used carefully for critical logging as we have the restriction for storing logs\n * on client side as we store them inside the local storage. Please see details inside storage.js\n * @param logString {string} log string\n * @param source {string} source of the log entry\n */\n static log(logString, source) {\n const timestamp = new Date().toISOString();\n LogsStorage.saveLog(`${timestamp}|${source}:${logString}`);\n }\n\n static logError(e, settingFunction, additionalMessage = \"\", onlyToConsole = false) {\n let message = `\\nFunction call ${settingFunction ?? \"\"} failed. Error message: ${\n e?.message\n }. ${additionalMessage} `;\n message +=\n `${e?.errorDescription ?? \"\"}${e?.howToFix ?? \"\"}` +\n (e?.httpStatus === 403 ? \"Authentication has expired or was lost. \" : \"\");\n\n if (e?.response) {\n try {\n const responseData = safeStringify({ response: e.response });\n responseData && (message += `\\n${responseData}. `);\n } catch (e) {}\n }\n\n const finalErrorText = message + \". \" + safeStringify(e);\n // eslint-disable-next-line no-console\n console.error(finalErrorText, e);\n\n if (!onlyToConsole) {\n this.log(finalErrorText, \"logError\");\n }\n }\n}\n","import { useCallback, useState } from \"react\";\n\nimport { Logger } from \"../../common/utils/logging/logger.js\";\n\nexport function useCallHandlingErrors() {\n const [, setState] = useState();\n return useCallback(\n async (functionToBeCalled, event) => {\n try {\n await functionToBeCalled(event);\n } catch (error) {\n Logger.logError(error, functionToBeCalled?.name || \"errorBoundaryTrigger\", \"Caught by ErrorBoundary\");\n // Triggering ErrorBoundary\n setState(() => {\n throw error;\n });\n }\n },\n\n []\n );\n}\n","export const ICON_ROTATE_OPTIONS = {\n rotate0: \"0deg\",\n rotate90: \"90deg\",\n rotate180: \"180deg\",\n rotate270: \"270deg\",\n};\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { useCallHandlingErrors } from \"../../../hooks/useCallHandlingErrors\";\nimport { ICON_ROTATE_OPTIONS } from \"../../../../constants/atoms/LinkButton/linkButton\";\n\nimport s from \"./link-button.module.scss\";\nimport { LoadingDots } from \"../../LoadingDots/LoadingDots\";\n\n/**\n * LinkButton renders a clickable button which can optionally display an icon and loading animation.\n * It can also be styled to be colored or disabled. This button supports rotating the icon according to specified degrees.\n *\n * @component\n * @param {Object} props - Properties passed down to the component.\n * @param {Function} props.onClick - Callback function triggered on button click. It should handle any post-click logic like resetting loading state.\n * @param {boolean} props.isDisabled - If true, the button will be disabled and non-interactable.\n * @param {boolean} props.isLoadable - If true, the button will display a loading indicator upon being clicked.\n * @param {string} props.content - Text content displayed on the button.\n * @param {boolean} props.isColored - If true, applies additional styling to the button.\n * @param {string} props.icon - URL of an icon image to be displayed on the button.\n * @param {string} props.iconRotate - Rotation angle for the icon. Valid values are defined in `ICON_ROTATE_OPTIONS`.\n * @param {Object} props.IconComponent - Icon component, if SVG is imported directly.\n *\n * @returns {JSX.Element} A React component that renders a clickable and optionally loadable and icon-displaying button.\n */\nexport const LinkButton = ({\n onClick = resetButtonLoader => {},\n isDisabled = false,\n isLoadable = false,\n content = \"\",\n isColored = true,\n icon,\n iconRotate,\n IconComponent,\n}) => {\n const callHandlingErrors = useCallHandlingErrors();\n\n const [isLoading, setIsLoading] = useState(false);\n const [processedIconRotation, setProcessedIconRotation] = useState(null);\n\n const handleClick = () => {\n callHandlingErrors(() => {\n if (!isDisabled) {\n if (isLoadable) {\n setIsLoading(true);\n }\n // TODO: [bug, moderate] Click can be called when there isLoading=true task_id=a15979a4ca2042b29dfd1d128a16c281\n onClick(() => setIsLoading(false));\n }\n });\n };\n\n useEffect(() => {\n if (iconRotate && Object.keys(ICON_ROTATE_OPTIONS).find(key => ICON_ROTATE_OPTIONS[key] === iconRotate))\n setProcessedIconRotation(iconRotate);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [iconRotate]);\n\n return isLoading ? (\n <LoadingDots isColored={true} />\n ) : (\n <div\n className={\n s[\"link-button\"] +\n ` ${\n processedIconRotation && processedIconRotation !== ICON_ROTATE_OPTIONS.rotate0\n ? \" \" + s[\"icon-rotate-\" + processedIconRotation]\n : \"\"\n } ${isDisabled ? \" \" + s[\"disabled\"] : \"\"}`\n }\n onClick={handleClick}\n >\n {icon ? <img src={icon} alt=\"link button alt\" /> : null}\n {IconComponent ? <IconComponent /> : null}\n <p\n className={\n s[\"link-button-text\"] + ` ${isColored ? s[\"colored\"] : \"\"} ${isDisabled ? s[\"disabled\"] : \"\"}`\n }\n >\n {content}\n </p>\n </div>\n );\n};\n\nLinkButton.propTypes = {\n onClick: PropTypes.func,\n isDisabled: PropTypes.bool,\n isLoadable: PropTypes.bool,\n content: PropTypes.string,\n icon: PropTypes.string,\n isColored: PropTypes.bool,\n iconRotate: PropTypes.oneOf(Object.values(ICON_ROTATE_OPTIONS)),\n IconComponent: PropTypes.elementType,\n};\n\nLinkButton.defaultProps = {\n onClick: resetButtonLoader => {},\n isDisabled: false,\n isLoadable: false,\n content: \"\",\n icon: undefined,\n isColored: true,\n iconRotate: ICON_ROTATE_OPTIONS.rotate0,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { useCallHandlingErrors } from \"../../../hooks/useCallHandlingErrors\";\n\nimport s from \"./dialog-buttons.module.scss\";\nimport { LinkButton } from \"../../../atoms/buttons/LinkButton/LinkButton\";\nimport { Button } from \"../../../atoms/buttons/Button/Button\";\n\n/**\n * Renders a dialog component with configurable primary and secondary buttons.\n * This component allows for a variety of configurations including different button modes,\n * sizes, and actions. It's designed to handle user interactions effectively with error management.\n *\n * @component\n * @param {Object} props - Props for configuring the DialogButtons.\n * @param {string} [props.primaryButtonTitle] - The text to display on the primary button.\n * @param {Function} props.primaryButtonOnClick - Function to call when the primary button is clicked.\n * @param {boolean} [props.primaryButtonLoader=false] - Whether to show a loader on the primary button.\n * @param {string} [props.primaryButtonTo] - The URL or route the primary button should navigate to.\n * @param {Function} [props.primaryButtonSetClickTrigger] - Additional click handling logic for the primary button.\n * @param {string} [props.secondaryButtonTitle] - The text to display on the secondary button.\n * @param {Function} props.secondaryButtonOnClick - Function to call when the secondary button is clicked.\n * @param {string} [props.secondaryButtonTo] - The URL or route the secondary button should navigate to.\n * @param {boolean} [props.secondaryButtonBig=false] - Makes the secondary button larger for visual emphasis.\n * @param {boolean} [props.withBackgroundImage=false] - Indicates if the button should adjust its styling for background images.\n * @param {boolean} [props.hideOnMobiles=false] - Whether to hide the buttons on mobile devices for responsive designs.\n * @returns {React.Element} The rendered component with two buttons based on provided props.\n */\nexport const DialogButtons = ({\n primaryButtonTitle,\n primaryButtonOnClick,\n primaryButtonLoader = false,\n primaryButtonTo,\n primaryButtonSetClickTrigger,\n secondaryButtonTitle,\n secondaryButtonOnClick,\n secondaryButtonTo,\n secondaryButtonBig = false,\n withBackgroundImage = false,\n hideOnMobiles = false,\n}) => {\n const callHandlingErrors = useCallHandlingErrors();\n\n return (\n <>\n <div\n className={\n s[\"dialog-buttons\"] +\n (hideOnMobiles ? \" \" + s[\"hide-on-mobiles\"] : \"\") +\n (secondaryButtonBig ? \" \" + s[\"space-between-layout\"] : \"\")\n }\n >\n {secondaryButtonTitle ? (\n secondaryButtonTo ? (\n <Button\n mode=\"primary-transparent\"\n to={secondaryButtonTo}\n size=\"lg\"\n loader={false}\n fullWidthOnMobiles\n content={secondaryButtonTitle}\n onClick={secondaryButtonOnClick}\n handleError={callHandlingErrors}\n />\n ) : secondaryButtonBig ? (\n <Button\n mode=\"transparent\"\n size=\"lg\"\n loader={false}\n fullWidthOnMobiles\n content={secondaryButtonTitle}\n onClick={secondaryButtonOnClick}\n handleError={callHandlingErrors}\n />\n ) : (\n <LinkButton\n onClick={secondaryButtonOnClick}\n content={secondaryButtonTitle}\n isColored={!withBackgroundImage}\n />\n )\n ) : null}\n\n {primaryButtonTitle ? (\n <Button\n mode=\"primary\"\n size=\"lg\"\n onClick={primaryButtonOnClick}\n loader={primaryButtonLoader}\n to={primaryButtonTo}\n fullWidthOnMobiles\n content={primaryButtonTitle}\n setClickTrigger={primaryButtonSetClickTrigger}\n handleError={callHandlingErrors}\n />\n ) : null}\n </div>\n </>\n );\n};\n\nDialogButtons.propTypes = {\n primaryButtonTitle: PropTypes.string,\n primaryButtonOnClick: PropTypes.func,\n primaryButtonLoader: PropTypes.bool,\n primaryButtonTo: PropTypes.string,\n primaryButtonSetClickTrigger: PropTypes.func,\n secondaryButtonTitle: PropTypes.string,\n secondaryButtonOnClick: PropTypes.func,\n secondaryButtonTo: PropTypes.string,\n secondaryButtonBig: PropTypes.bool,\n withBackgroundImage: PropTypes.bool,\n hideOnMobiles: PropTypes.bool,\n};\n\nDialogButtons.defaultProps = {\n primaryButtonLoader: false,\n secondaryButtonBig: false,\n withBackgroundImage: false,\n hideOnMobiles: false,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./background-title.module.scss\";\n\n/**\n * Component for displaying a title with a fancy background text, which\n * is semi-visible. This component is designed to work with forms that\n * have a white background, and it allows for a configuration of margins.\n *\n * @param {Object} props - Component props\n * @param {string} props.text - Text to be displayed as the title\n * @param {boolean} [props.smallMargins=false] - Whether to use smaller margins around the title\n */\nexport const BackgroundTitle = ({ text, smallMargins = false }) => {\n return (\n <div className={s[\"background-title\"]}>\n <div className={s[\"background-title-wrapper\"] + (smallMargins ? \" \" + s[\"small-margins\"] : \"\")}>\n <div className={s[\"background-title-wrapper-text\"] + (smallMargins ? \" \" + s[\"small-margins\"] : \"\")}>\n {text}\n </div>\n </div>\n </div>\n );\n};\n\nBackgroundTitle.propTypes = {\n text: PropTypes.string.isRequired,\n smallMargins: PropTypes.bool,\n};\n\nBackgroundTitle.defaultProps = {\n smallMargins: false,\n};\n","export const CLOSE_COLORS = {\n WHITE: \"white\",\n DARK: \"dark\",\n DARK_INVERT: \"dark-invert\",\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./close.module.scss\";\n\nimport { useCallHandlingErrors } from \"../../../hooks/useCallHandlingErrors\";\nimport { CLOSE_COLORS } from \"../../../../constants/atoms/Close/close\";\n\n/**\n * A component for rendering a close icon that handles errors on click.\n * This component uses an SVG to render the icon and allows customization\n * through props for color, size, and the click event handling.\n *\n * @param {Object} props - The properties passed to the component.\n * @param {string} props.color - The color theme of the close icon.\n * Should be one of the properties of CLOSE_COLORS.\n * @param {Function} props.onClick - The function to call when the icon is clicked.\n * @param {boolean} props.large - Whether the icon should be displayed in a larger size.\n */\nexport const Close = ({ color = CLOSE_COLORS.WHITE, onClick = () => {}, large = false }) => {\n const callHandlingErrors = useCallHandlingErrors();\n\n return (\n <svg\n className={s[\"close\"] + \" \" + s[color] + (large ? \" \" + s[\"large\"] : \"\")}\n onClick={e => callHandlingErrors(onClick, e)}\n style={{ cursor: \"pointer\" }}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 50 50`}\n x=\"0px\"\n y=\"0px\"\n >\n <path\n d=\"M28.228,23.986L47.092,5.122c1.172-1.171,1.172-3.071,0-4.242c-1.172-1.172-3.07-1.172-4.242,0L23.986,19.744L5.121,0.88\n c-1.172-1.172-3.07-1.172-4.242,0c-1.172,1.171-1.172,3.071,0,4.242l18.865,18.864L0.879,42.85c-1.172,1.171-1.172,3.071,0,4.242\n C1.465,47.677,2.233,47.97,3,47.97s1.535-0.293,2.121-0.879l18.865-18.864L42.85,47.091c0.586,0.586,1.354,0.879,2.121,0.879\n s1.535-0.293,2.121-0.879c1.172-1.171,1.172-3.071,0-4.242L28.228,23.986z\"\n />\n </svg>\n );\n};\n\nClose.propTypes = {\n color: PropTypes.oneOf(Object.values(CLOSE_COLORS)),\n onClick: PropTypes.func,\n large: PropTypes.bool,\n};\n\nClose.defaultProps = {\n color: CLOSE_COLORS.WHITE,\n onClick: () => {},\n large: false,\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"27\" height=\"27\" viewBox=\"0 0 27 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect opacity=\"0.8\" x=\"1.5\" y=\"1.5\" width=\"24\" height=\"24\" rx=\"12\" fill=\"#DAF1FE\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.8703 15.7837L9.64348 13.5569C9.30357 13.217 8.75246 13.217 8.41255 13.5569C8.07264 13.8968 8.07264 14.4479 8.41255 14.7878L11.2351 17.6104C11.5672 17.9425 12.103 17.9512 12.4457 17.6301L18.4492 12.0049C18.8 11.6762 18.8179 11.1254 18.4892 10.7746C18.1605 10.4238 17.6097 10.4059 17.2589 10.7346L11.8703 15.7837Z\"\n fill=\"url(#paint0_linear)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear\"\n x1=\"19.8333\"\n y1=\"18.9098\"\n x2=\"15.586\"\n y2=\"7.2736\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#55E7D9\" />\n <stop offset=\"1\" stop-color=\"#54B4FF\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"27\" height=\"27\" viewBox=\"0 0 27 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect opacity=\"0.8\" x=\"1.5\" y=\"1.5\" width=\"24\" height=\"24\" rx=\"12\" fill=\"#DAF1FE\" />\n <path\n d=\"M12.3259 10.5855C12.2575 9.8896 12.8063 9.28745 13.5055 9.29121C14.2008 9.29495 14.7418 9.8964 14.6722 10.5881L14.1937 15.3431C14.1575 15.7026 13.855 15.9762 13.4937 15.9762C13.1319 15.9762 12.829 15.7017 12.7936 15.3415L12.3259 10.5855Z\"\n fill=\"url(#paint0_linear)\"\n />\n <path\n d=\"M13.514 17.1182C14.1325 17.1182 14.634 17.6196 14.634 18.2382C14.634 18.8567 14.1325 19.3582 13.514 19.3582H13.486C12.8674 19.3582 12.366 18.8567 12.366 18.2382C12.366 17.6196 12.8674 17.1182 13.486 17.1182H13.514Z\"\n fill=\"url(#paint1_linear)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear\"\n x1=\"17.3456\"\n y1=\"14.0483\"\n x2=\"11.6522\"\n y2=\"12.8896\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#55E7D9\" />\n <stop offset=\"1\" stop-color=\"#54B4FF\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear\"\n x1=\"17.3456\"\n y1=\"14.2383\"\n x2=\"11.6522\"\n y2=\"13.0796\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#55E7D9\" />\n <stop offset=\"1\" stop-color=\"#54B4FF\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./validation.module.scss\";\nimport SuccessfulValidationIcon from \"../../../assets/wrappedImages/successfulValidationIcon\";\nimport FailedValidationIcon from \"../../../assets/wrappedImages/failedValidationIcon\";\n\n/**\n * Simple validation message with an icon.\n * It shows either a success or failure icon based on the isSuccessAlert prop.\n *\n * @param {Object} props - The component props.\n * @param {string} props.text - The validation message text to display.\n * @param {boolean} props.isSuccessAlert - Determines if the displayed alert is for a success (true) or failure (false).\n */\nexport const Validation = ({ text = \"\", isSuccessAlert }) => {\n return (\n <div className={s[\"validation\"]}>\n <div>\n {isSuccessAlert ? (\n // <img src={successfulValidationIcon} alt=\"validation icon\" />\n <SuccessfulValidationIcon />\n ) : (\n // <img src={failedValidationIcon} alt=\"validation icon\" />\n <FailedValidationIcon />\n )}\n </div>\n <span className={s[\"validation-text\"]}>{text}</span>\n </div>\n );\n};\n\nValidation.propTypes = {\n text: PropTypes.string,\n isSuccessAlert: PropTypes.bool.isRequired,\n};\n\nValidation.defaultProps = {\n text: \"\",\n isSuccessAlert: false,\n};\n","import React from \"react\";\n\n/**\n * Adds reference to standard state variable. It is helpful to be able to use state variable value inside\n * event handlers and other callbacks without the need to call setState(prev => { value = prev; return prev; }).\n *\n * @param initialValue {any} to be passed to useState\n * @return {[React.Ref, function]} reference to state variable and its setter\n */\nexport function useReferredState(initialValue) {\n const [state, setState] = React.useState(initialValue);\n const reference = React.useRef(state);\n\n const setReferredState = value => {\n if (value && {}.toString.call(value) === \"[object Function]\") {\n value = value(reference.current);\n }\n\n reference.current = value;\n setState(value);\n };\n\n return [reference, setReferredState];\n}\n","import { Logger } from \"./utils/logging/logger.js\";\nimport { safeStringify } from \"./utils/safeStringify.js\";\n\n/**\n * This function improves the passed error object (its message) by adding the passed function name\n * and additional message to it.\n * This is useful as Javascript doesn't guarantee the stack-traces, so we should manually add these details to errors\n * to be able to troubleshoot.\n *\n * @param e {Error}\n * @param settingFunction {string}\n * @param [additionalMessage=\"\"] {string|undefined}\n * @throws {Error} always rethrows the original passed error but with an improved message\n */\nexport function improveAndRethrow(e, settingFunction, additionalMessage = \"\") {\n const message = improvedErrorMessage(e, settingFunction, additionalMessage);\n if (e) {\n e.message = message;\n throw e; // to preserve existing stacktrace if present\n }\n throw new Error(message);\n}\n\nfunction improvedErrorMessage(e, settingFunction, additionalMessage) {\n let message = `\\nFunction call ${settingFunction ?? \"\"} failed. `;\n e && e.message && (message += `Error message: ${e.message}. `);\n additionalMessage && (message += `${additionalMessage} `);\n\n return message;\n}\n\nexport function logErrorOrOutputToConsole(e) {\n try {\n // TODO: [dev] remove this after few weeks of testing output in real life\n // eslint-disable-next-line no-console\n console.log(\"BEFORE SAFE\", e);\n Logger.log(\"logErrorOrOutputToConsole\", safeStringify(e));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\"logErrorOrOutputToConsole\", e);\n }\n}\n","// If changed - update the prop configuration in the stories and related components.\nexport const DIALOG_SIZES = {\n small: {\n width: \"550px\",\n height: \"650px\",\n },\n regular: {\n width: \"600px\",\n height: \"650px\",\n },\n large: {\n width: \"700px\",\n height: \"650px\",\n },\n largePlus: {\n width: \"750px\",\n height: \"650px\",\n },\n largePlusPlus: {\n width: \"800px\",\n height: \"650px\",\n },\n extraLarge: {\n width: \"1000px\",\n height: \"650px\",\n },\n};\n\nexport const DIALOG_TRANSITION_STEP_DURATION = 200;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { CSSTransition } from \"react-transition-group\";\nimport AnimateHeight from \"react-animate-height\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from \"body-scroll-lock\";\nimport animateScrollTo from \"animated-scroll-to\";\n\nimport { useReferredState } from \"../../hooks/useReferredState\";\nimport { logErrorOrOutputToConsole } from \"../../../common/errorUtils\";\nimport { DIALOG_TRANSITION_STEP_DURATION, DIALOG_SIZES } from \"../../../constants/organisms/dialog/dialog\";\n\nimport s from \"./dialog.module.scss\";\nimport { Close } from \"../../atoms/buttons/Close/Close\";\nimport { DialogButtons } from \"./DialogButtons/DialogButtons\";\n\n/**\n * Flexible modal window component with support for multiple steps. Can be used as an inline component and inserted in regular layouts. Only <DialogStep> components can be passed as children.\n *\n * @component\n * @param {Object} props - Component props.\n * @param {boolean} props.showDialog - Step name, specified on the root dialog level, used as an ID for dialog navigation.\n * @param {string} props.onClose - Handler for when the dialog is closed.\n * @param {string} props.initControls - State-setting function to initialize the dialog-to-step connection.\n * @param {string} props.children - Content of the dialog window, supports only dialog step components.\n * @param {Coin} props.width - Width in pixels, formatted as \"1000px\" and passed a string. Values should be used from constants.\n * @param {string} props.dispatchDialogOpened - Dispatch upon the dialog closure.\n * @param {string} props.dispatchDialogClosed - Dispatch upon the dialog opening.\n * @param {boolean} props.inline - If false or not set, dialog will be opened as a modal window above the UI. If true, inline mode will be used, making the dialog a regular block, that can be placed inside a regular layout. Default: false.\n * @returns {JSX.Element} React component\n */\nexport const Dialog = ({\n showDialog = false,\n onClose = () => {},\n initControls = null,\n children = [],\n width = \"\",\n dispatchDialogOpened = () => {},\n dispatchDialogClosed = () => {},\n inline = false,\n}) => {\n const buttonsConfigurationDefault = {\n primaryButtonTitle: null,\n primaryButtonOnClick: null,\n primaryButtonLoader: false,\n primaryButtonTo: null,\n primaryButtonSetClickTrigger: () => {},\n secondaryButtonTitle: null,\n secondaryButtonOnClick: null,\n secondaryButtonTo: null,\n fixedButtonsEnabled: false,\n };\n\n const [showDialogProcessed, setShowDialogProcessed] = useState(false);\n const [currentStep, setCurrentStep] = useState(0);\n const [steps, setSteps] = useState(null);\n const [dialogConfiguration, updateDialogConfiguration] = useState({\n cornerBackButtonTitle: \"\",\n customWidth: width !== \"\" ? width : DIALOG_SIZES.small.width,\n });\n const [animationConfiguration, updateAnimationConfiguration] = useState({\n animateHeightDelay: DIALOG_TRANSITION_STEP_DURATION * 2,\n animateHeightTransitionSpeed: DIALOG_TRANSITION_STEP_DURATION,\n animateHeightTransitionEnabled: false,\n wrapperWidthAnimationEnabled: false,\n currentStepAnimationEnabled: false,\n cornerBackButtonAnimationEnabled: false,\n triggerAnimationFinishedDispatcher: false,\n dialogContainerOverflowDisabled: false,\n hideMobileBottomButtonSection: false,\n });\n const [stepAnimationFinishedTrigger, setStepAnimationFinishedTrigger] = useState(0);\n const [dialogVerticalHeight, setDialogVerticalHeight] = useState(300);\n const [currentStepRef, setCurrentStepRef] = useState({});\n const [dimensions, setDimensions] = useState({ width: 0, height: 0 });\n const [buttonsConfiguration, updateButtonsConfigurationState] = useState(buttonsConfigurationDefault);\n const [buttonControllingStep, updateButtonControllingStep] = useReferredState(\"\");\n const [isMultiStep, setIsMultiStep] = useState(false);\n\n const dialogWrapperRef = useRef();\n const dialogRef = useRef();\n const scrollableRef = useRef();\n const resizeObserverRef = useRef(null);\n\n const updateButtonsConfiguration = (newConfiguration, stepName) => {\n if (buttonControllingStep.current === stepName || buttonControllingStep.current === \"\")\n updateButtonsConfigurationState(newConfiguration);\n };\n\n useEffect(() => {\n if (showDialog) disableAnimation();\n setShowDialogProcessed(showDialog);\n showDialog ? dispatchDialogOpened() : dispatchDialogClosed();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showDialog]);\n\n const showCornerButtonForStep = (stepName, stepButtonShowParam) => {\n if (stepName !== \"\") {\n let stepNameId = steps.findIndex(step => step.name === stepName);\n return stepButtonShowParam !== null && typeof stepButtonShowParam === \"boolean\"\n ? stepButtonShowParam\n : stepNameId > steps.findIndex(step => step.hidden === false);\n } else {\n return false;\n }\n };\n\n const nextStep = (animationControlEnabled = true) => {\n const nextStep = steps.find((step, index) => index > currentStep && step.hidden === false);\n if (nextStep) {\n goToStep(nextStep.name, animationControlEnabled);\n return true;\n } else {\n return false;\n }\n };\n\n const previousStep = (animationControlEnabled = true) => {\n const prevSteps = steps\n .map((step, index) => {\n return index < currentStep && step.hidden === false ? step.name : undefined;\n })\n .filter(item => typeof item !== \"undefined\");\n\n if (prevSteps.length > 0) {\n goToStep(prevSteps[prevSteps.length - 1], animationControlEnabled);\n return true;\n } else {\n return false;\n }\n };\n\n const getStepClass = stepName => {\n if (steps.length > 1) {\n let stepNameId = steps.findIndex(step => step.name === stepName);\n let stepClass = currentStep > stepNameId ? \"prev\" : currentStep === stepNameId ? \"current\" : \"next\";\n return stepClass;\n } else {\n return \"current\";\n }\n };\n\n const isCurrentStep = stepName => {\n return steps[currentStep].name === stepName;\n };\n\n const toFirstStep = (animationControlEnabled = true) => {\n if (animationControlEnabled) enableAnimation();\n setCurrentStep(steps.findIndex(step => step.hidden === false));\n };\n\n const goToStep = (stepName, animationControlEnabled = true) => {\n if (animationControlEnabled) enableAnimation();\n try {\n let stepNameId = steps.findIndex(step => step.name === stepName);\n setCurrentStep(stepNameId);\n } catch (e) {\n logErrorOrOutputToConsole(e);\n }\n };\n\n const provideCurrentStepRef = ref => {\n setCurrentStepRef(ref);\n };\n\n const disableAnimation = (dispatch = false) => {\n updateAnimationConfiguration(prev => {\n return {\n ...prev,\n animateHeightTransitionEnabled: false,\n wrapperWidthAnimationEnabled: false,\n currentStepAnimationEnabled: false,\n cornerBackButtonAnimationEnabled: false,\n dialogContainerOverflowDisabled: false,\n hideMobileBottomButtonSection: false,\n };\n });\n if (dispatch) {\n updateAnimationConfiguration(prev => {\n return {\n ...prev,\n triggerAnimationFinishedDispatcher: true,\n };\n });\n }\n };\n\n useEffect(() => {\n if (animationConfiguration.triggerAnimationFinishedDispatcher) {\n setStepAnimationFinishedTrigger(prev => prev + 1);\n updateAnimationConfiguration(prev => {\n return {\n ...prev,\n triggerAnimationFinishedDispatcher: false,\n };\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationConfiguration]);\n\n const enableAnimation = () => {\n updateAnimationConfiguration(prev => {\n return {\n ...prev,\n animateHeightTransitionEnabled: true,\n wrapperWidthAnimationEnabled: true,\n currentStepAnimationEnabled: true,\n cornerBackButtonAnimationEnabled: true,\n dialogContainerOverflowDisabled: true,\n hideMobileBottomButtonSection: true,\n };\n });\n };\n\n const scrollDialogToTop = () => {\n animateScrollTo(0, {\n elementToScroll: dialogRef?.current,\n minDuration: DIALOG_TRANSITION_STEP_DURATION,\n maxDuration: DIALOG_TRANSITION_STEP_DURATION,\n });\n animateScrollTo(0, {\n elementToScroll: scrollableRef?.current,\n minDuration: DIALOG_TRANSITION_STEP_DURATION,\n maxDuration: DIALOG_TRANSITION_STEP_DURATION,\n });\n };\n\n const clearButtonsConfiguration = () => {\n updateButtonsConfigurationState(buttonsConfigurationDefault);\n };\n\n useEffect(() => {\n initControls &&\n initControls(prev => {\n return {\n ...prev,\n stepAnimationFinishedTrigger: stepAnimationFinishedTrigger,\n };\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stepAnimationFinishedTrigger]);\n\n useEffect(() => {\n initControls &&\n initControls(prev => {\n return {\n ...prev,\n animationConfiguration: animationConfiguration,\n };\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationConfiguration]);\n\n useEffect(() => {\n if (currentStepRef.current) {\n resizeObserverRef.current = new ResizeObserver((entries = []) => {\n entries.forEach(entry => {\n const { width, height } = entry.contentRect;\n setDimensions({ width, height });\n });\n });\n if (currentStepRef.current) resizeObserverRef.current.observe(currentStepRef.current);\n return () => {\n if (resizeObserverRef.current) resizeObserverRef.current.disconnect();\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentStepRef]);\n\n useEffect(() => {\n setDialogVerticalHeight(prev => (prev !== 0 && dimensions.height === 0 ? prev : dimensions.height));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dimensions]);\n\n useEffect(() => {\n const childrenFormatted = children.length > 1 ? children : [children];\n\n let stepsArr = childrenFormatted.map(child => {\n return {\n name: child.props.stepName,\n hidden: !!child.props.hidden,\n };\n });\n setSteps(stepsArr);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setIsMultiStep(typeof initControls === \"function\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initControls]);\n\n useEffect(() => {\n if (steps)\n initControls &&\n initControls({\n nextStep: nextStep,\n previousStep: previousStep,\n currentStep: currentStep,\n isCurrentStep: isCurrentStep,\n getStepClass: getStepClass,\n updateDialogConfiguration: updateDialogConfiguration,\n toFirstStep: toFirstStep,\n goToStep: goToStep,\n provideCurrentStepRef: provideCurrentStepRef,\n animationConfiguration: animationConfiguration,\n disableAnimation: disableAnimation,\n enableAnimation: enableAnimation,\n showCornerButtonForStep: showCornerButtonForStep,\n stepAnimationFinishedTrigger: stepAnimationFinishedTrigger,\n scrollDialogToTop: scrollDialogToTop,\n updateButtonsConfiguration: updateButtonsConfiguration,\n clearButtonsConfiguration: clearButtonsConfiguration,\n buttonControllingStep: buttonControllingStep.current,\n updateButtonControllingStep: updateButtonControllingStep,\n updateAnimationConfiguration: updateAnimationConfiguration,\n inline: inline,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentStep, steps]);\n\n useEffect(() => {\n return () => {\n clearAllBodyScrollLocks();\n updateButtonControllingStep(\"\");\n clearButtonsConfiguration();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <CSSTransition\n in={showDialogProcessed}\n timeout={DIALOG_TRANSITION_STEP_DURATION}\n classNames={\n inline\n ? undefined\n : {\n enter: s[\"dialog-transition-enter\"],\n enterActive: s[\"dialog-transition-enter-active\"],\n exit: s[\"dialog-transition-exit\"],\n exitActive: s[\"dialog-transition-exit-active\"],\n }\n }\n unmountOnExit\n onExited={() => {\n disableAnimation(false);\n clearButtonsConfiguration();\n updateButtonControllingStep(\"\");\n }}\n onExiting={() => {\n if (inline) return;\n enableBodyScroll(scrollableRef.current);\n enableBodyScroll(dialogRef.current);\n }}\n onEntered={() => {\n if (inline) return;\n disableBodyScroll(scrollableRef.current);\n disableBodyScroll(dialogRef.current);\n }}\n >\n <div\n className={\n s[\"dialog\"] +\n \" \" +\n (dialogVerticalHeight > 1 || !isMultiStep ? \"\" : \" \" + s[\"hidden\"]) +\n (animationConfiguration.dialogContainerOverflowDisabled\n ? \" \" + s[\"vertical-overflow-disabled\"]\n : \"\") +\n (inline ? \" \" + s[\"inline\"] : \"\")\n }\n ref={dialogRef}\n >\n <div className={s[\"scrollable\"] + (inline ? \" \" + s[\"inline\"] : \"\")} ref={scrollableRef}>\n <div\n className={\n s[\"dialog-wrapper\"] +\n (animationConfiguration.wrapperWidthAnimationEnabled ? \"\" : \" \" + s[\"animation-disabled\"]) +\n (inline ? \" \" + s[\"inline\"] : \"\")\n }\n ref={dialogWrapperRef}\n style={\n dialogConfiguration.customWidth !== \"\"\n ? { maxWidth: dialogConfiguration.customWidth }\n : width !== \"\"\n ? { maxWidth: width }\n : null\n }\n >\n <AnimateHeight\n duration={\n animationConfiguration.animateHeightTransitionEnabled\n ? animationConfiguration.animateHeightTransitionSpeed\n : 0\n }\n delay={\n animationConfiguration.animateHeightTransitionEnabled\n ? animationConfiguration.animateHeightDelay\n : 0\n }\n height={isMultiStep ? dialogVerticalHeight : \"auto\"}\n contentClassName={s[\"dialog-wrapper-rah-content\"]}\n >\n {inline ? (\n \"\"\n ) : (\n <div className={s[\"dialog-wrapper-close\"]}>\n <Close color=\"dark\" onClick={e => onClose()} large />\n </div>\n )}\n {children}\n </AnimateHeight>\n </div>\n </div>\n {\n <CSSTransition\n in={\n (!!buttonsConfiguration.primaryButtonTitle ||\n !!buttonsConfiguration.secondaryButtonTitle) &&\n !animationConfiguration.hideMobileBottomButtonSection &&\n buttonsConfiguration.fixedButtonsEnabled\n }\n timeout={DIALOG_TRANSITION_STEP_DURATION}\n // classNames={s[\"fixed-buttons-container\"]}\n classNames={{\n enter: s[\"fixed-buttons-container-enter\"],\n enterActive: s[\"fixed-buttons-container-enter-active\"],\n enterDone: s[\"fixed-buttons-container-enter-done\"],\n exit: s[\"fixed-buttons-container-exit\"],\n exitActive: s[\"fixed-buttons-container-exit-active\"],\n exitDone: s[\"fixed-buttons-container-exit-done\"],\n }}\n unmountOnExit\n >\n <div className={s[\"fixed-buttons-container\"]}>\n <DialogButtons {...buttonsConfiguration} />\n </div>\n </CSSTransition>\n }\n </div>\n </CSSTransition>\n );\n};\n\nDialog.propTypes = {\n showDialog: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n initControls: PropTypes.func,\n children: PropTypes.node,\n width: PropTypes.oneOf([\"550px\", \"600px\", \"700px\", \"750px\", \"800px\", \"1000px\"]),\n dispatchDialogOpened: PropTypes.func,\n dispatchDialogClosed: PropTypes.func,\n inline: PropTypes.bool,\n};\n\nDialog.defaultProps = {\n showDialog: false,\n onClose: () => {},\n initControls: null,\n children: [],\n dispatchDialogOpened: () => {},\n dispatchDialogClosed: () => {},\n inline: false,\n};\n","export const DIALOG_STEP_CLASS = \"dialog-step\";\n","import React from \"react\";\n\n// Originally: arrow-tosca.svg\nexport default () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.2431 6L8.00045 10.2426L3.75781 6\"\n stroke=\"#16CDD6\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\n\n// Originally: arrow-tosca.svg\nexport default () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.2431 6L8.00045 10.2426L3.75781 6\"\n stroke=\"#fff\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React, { useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { logErrorOrOutputToConsole } from \"../../../../common/errorUtils\";\nimport { DIALOG_STEP_CLASS } from \"../../../../constants/organisms/dialog/DialogStep/dialogStep\";\nimport { DIALOG_TRANSITION_STEP_DURATION } from \"../../../../constants/organisms/dialog/dialog\";\n\nimport arrowTosca from \"../../../../assets/wrappedImages/arrowTosca\";\nimport arrowWhite from \"../../../../assets/wrappedImages/arrowWhite\";\n\nimport s from \"./dialog-step.module.scss\";\nimport { AssetIcon } from \"../../../atoms/AssetIcon/AssetIcon\";\nimport { LinkButton } from \"../../../atoms/buttons/LinkButton/LinkButton\";\nimport { BackgroundTitle } from \"../../../atoms/BackgroundTitle/BackgroundTitle\";\nimport { DialogButtons } from \"../DialogButtons/DialogButtons\";\nimport { LoadingDots } from \"../../../atoms/LoadingDots/LoadingDots\";\nimport { ICON_ROTATE_OPTIONS } from \"../../../../constants/atoms/LinkButton/linkButton\";\n\n/**\n * Step component, part of the DialogWithSteps modal component. This component should be used inside the primary dialog component.\n * @component\n * @param {string} stepName - Step name, specified on the root dialog level, used as an ID for dialog navigation.\n * @param {Object} children - Content of the dialog step. Supports both raw content and components.\n * @param {string} image - Illustration/icon at the top, path to an image. The content is the path to the image.\n * @param {React.ComponentType} ImageRaw - Illustration/icon at the top, path to an image. The content is the image component to be inserted.\n * @param {string} title - Step title.\n * @param {string} titleIcon - Icon next to the step title, path to an image.\n * @param {Coin} titleIconCoin - Coin to be shown as an AssetIcon next to the step title.\n * @param {function} coinToIconPaths - Function returning icons paths by Coin\n * @param {boolean} titleLoadingDots - Show loading dots next to the title or not.\n * @param {string} subtitle - Step subtitle.\n * @param {string} backButtonText - Secondary button title.\n * @param {function} backButtonClick - Secondary button click handler.\n * @param {string} backButtonTo - Secondary button link.\n * @param {string} confirmButtonText - Primary button title.\n * @param {function} confirmButtonClick - Primary button click handler.\n * @param {string} confirmButtonLink - Primary button link.\n * @param {boolean} primaryButtonLoader - Enable loader for the primary button.\n * @param {boolean} fixedButtons - Enable fixed buttons in the bottom for mobile devices.\n * @param {boolean} showCornerBackButton - Forcefully enable or disable blue corner back button.\n * @param {string} cornerBackButtonTitle - Blue corner back button title.\n * @param {function} cornerBackButtonClick - Blue corner back button click handler.\n * @param {boolean} bigButtonMargins - Increase button margins.\n * @param {boolean} noButtonMargins - Decrease button margins.\n * @param {boolean} headerTitleLeft - Align header title to the left. Default: false.\n * @param {boolean} subtitleSmallMargin - Reduce the margin under the subtitle.\n * @param {boolean} subtitleNoMargin - Disable the margin under the subtitle.\n * @param {boolean} showBackgroundTitle - Enable the semi-transparent secondary background title.\n * @param {function} setClickTrigger - Function to setup an external trigger for the primary button.\n * @param {boolean} breakSubtitleWords - Enable word-break for subtitles. Default: false.\n * @param {string} contentAlign - Receives \"left\", \"center\", \"right\". Controls the step content container alignment.\n * @param {Object} controls - Dialog-to-step connection object, required for multi-step dialog windows.\n * @param {string} width - Width in pixels, formatted as \"1000px\" and passed a string. Values should be used from constants.\n * @param {string} height - Height in pixels, formatted as \"1000px\" and passed a string. Values should be used from constants.\n * @param {string} backgroundImage - Background image, path to an image.\n * @param {string} backgroundImageMobile - Background image for mobiles, path to an image.\n * @param {boolean} isSecondaryButtonBig - Changes the secondary button style from link to a secondary-button. Default: false.\n * @returns {JSX.Element} React component\n */\nexport const DialogStep = ({\n stepName = \"\",\n children = \"\",\n image = \"\",\n ImageRaw,\n title = \"\",\n titleIcon = \"\",\n titleIconCoin,\n coinToIconPaths = () => {},\n titleLoadingDots = false,\n subtitle = \"\",\n backButtonText = \"\",\n backButtonClick = () => {},\n backButtonTo = \"\",\n confirmButtonText = \"\",\n confirmButtonClick = () => {},\n confirmButtonLink = \"\",\n primaryButtonLoader = false,\n fixedButtons = false,\n showCornerBackButton = null,\n cornerBackButtonTitle = null,\n cornerBackButtonClick = null,\n bigButtonMargins = false,\n noButtonMargins = false,\n headerTitleLeft = false,\n subtitleSmallMargin = false,\n subtitleNoMargin = false,\n showBackgroundTitle = true,\n setClickTrigger = () => {},\n breakSubtitleWords = false,\n contentAlign = \"left\",\n controls = {},\n width = \"\",\n height,\n backgroundImage,\n backgroundImageMobile,\n isSecondaryButtonBig = false,\n}) => {\n const {\n currentStep = null,\n isCurrentStep = () => {},\n previousStep,\n getStepClass = () => {},\n updateDialogConfiguration,\n provideCurrentStepRef,\n animationConfiguration,\n disableAnimation,\n showCornerButtonForStep,\n scrollDialogToTop = () => {},\n updateButtonsConfiguration = () => {},\n clearButtonsConfiguration = () => {},\n buttonControllingStep,\n updateButtonControllingStep = () => {},\n updateAnimationConfiguration = () => {},\n inline,\n } = controls;\n\n const [isMultiStep, setIsMultiStep] = useState(false);\n const [stepClass, setStepClass] = useState(\"\");\n const [wrapperDirectionSubclass, setWrapperDirectionSubclass] = useState(\"\");\n const [unmountOnAnimationEndTrigger, setUnmountOnAnimationEndTrigger] = useState(0);\n const [stepMounted, setStepMounted] = useState(false);\n const [isTopImagePassed, setIsTopImagePassed] = useState(false);\n\n const currentStepRef = useRef();\n // const { t } = useTranslation();\n\n useEffect(() => setIsTopImagePassed(!!image || !!ImageRaw), [image, ImageRaw]);\n\n useEffect(() => {\n if (controls !== {} && stepName !== \"\") setIsMultiStep(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleTransitionEnd = event => {\n if (\n isMultiStep &&\n isCurrentStep(stepName) &&\n event.propertyName === \"opacity\" &&\n event.target.classList[0] === s[DIALOG_STEP_CLASS]\n ) {\n disableAnimation(animationConfiguration.animateHeightTransitionEnabled);\n }\n\n if (\n isMultiStep &&\n unmountOnAnimationEndTrigger &&\n event.propertyName === \"opacity\" &&\n event.target.classList[0] === s[DIALOG_STEP_CLASS]\n ) {\n clearButtonsConfiguration();\n scrollDialogToTop();\n setStepMounted(false);\n setUnmountOnAnimationEndTrigger(0);\n }\n };\n\n useEffect(() => {\n var multiStep = false;\n if (controls !== {} && stepName !== \"\") {\n setIsMultiStep(true);\n multiStep = true;\n }\n\n if (!multiStep && fixedButtons) {\n logErrorOrOutputToConsole(\n new Error(\n \"DialogStep parameter 'fixedButtons' works only with controls connected between the DialogWithSteps and DialogStep components. Unless the controls are configured the 'fixedButtons' parameter will be ignored.\"\n )\n );\n }\n\n if (multiStep) {\n if (getStepClass(stepName) === \"current\") setStepMounted(true);\n\n if (stepClass === \"current\" && getStepClass(stepName) !== \"current\")\n setUnmountOnAnimationEndTrigger(prev => prev + 1);\n\n setWrapperDirectionSubclass(\n getStepClass(stepName) === \"current\" && animationConfiguration.currentStepAnimationEnabled\n ? stepClass === \"prev\"\n ? \"appear-from-left\"\n : \"appear-from-right\"\n : \"\"\n );\n } else {\n if (width !== \"\")\n logErrorOrOutputToConsole(\n new Error(\n \"Single DialogStep does not support 'width' parameter, since it requires controls to be connected. Pass 'width' to the Dialog component to set the width of the modal window.\"\n )\n );\n setStepMounted(true);\n }\n\n setStepClass(multiStep ? getStepClass(stepName) : \"current\");\n if (multiStep && isCurrentStep(stepName)) {\n setTimeout(\n () => updateButtonControllingStep(stepName),\n buttonControllingStep === \"\" ? 0 : DIALOG_TRANSITION_STEP_DURATION\n );\n\n setTimeout(() => {\n updateButtonsConfiguration(\n {\n primaryButtonTitle: confirmButtonText,\n primaryButtonOnClick: resetButtonLoader => confirmButtonClick(resetButtonLoader),\n primaryButtonLoader: primaryButtonLoader,\n primaryButtonTo: confirmButtonLink,\n primaryButtonSetClickTrigger: setClickTrigger,\n secondaryButtonTitle: backButtonText,\n secondaryButtonOnClick: backButtonClick,\n secondaryButtonTo: backButtonTo,\n fixedButtonsEnabled: fixedButtons,\n },\n stepName\n );\n\n updateAnimationConfiguration(prev => {\n return {\n ...prev,\n hideMobileBottomButtonSection: false,\n };\n });\n }, DIALOG_TRANSITION_STEP_DURATION * 3);\n\n updateDialogConfiguration(prev => {\n return {\n ...prev,\n cornerBackButtonTitle: cornerBackButtonTitle,\n customWidth: width,\n };\n });\n provideCurrentStepRef(currentStepRef);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentStep]);\n\n useEffect(() => {\n if (isMultiStep && isCurrentStep(stepName) && fixedButtons && (confirmButtonText || backButtonText)) {\n updateButtonsConfiguration(\n {\n primaryButtonTitle: confirmButtonText,\n primaryButtonOnClick: resetButtonLoader => confirmButtonClick(resetButtonLoader),\n primaryButtonLoader: primaryButtonLoader,\n primaryButtonTo: confirmButtonLink,\n primaryButtonSetClickTrigger: setClickTrigger,\n secondaryButtonTitle: backButtonText,\n secondaryButtonOnClick: backButtonClick,\n secondaryButtonTo: backButtonTo,\n fixedButtonsEnabled: fixedButtons,\n },\n stepName\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n confirmButtonText,\n confirmButtonClick,\n primaryButtonLoader,\n confirmButtonLink,\n setClickTrigger,\n backButtonText,\n backButtonClick,\n backButtonTo,\n currentStep,\n ]);\n\n const { assetIconSrc, assetIconProtocolSrc, fallbackSrc } =\n titleIconCoin && coinToIconPaths ? coinToIconPaths(titleIconCoin) : {};\n\n return (\n <div\n className={\n s[DIALOG_STEP_CLASS] +\n \" \" +\n s[stepClass] +\n (!isMultiStep || !animationConfiguration?.currentStepAnimationEnabled\n ? \" \" + s[\"animation-disabled\"]\n : \"\") +\n (!isMultiStep ? \" \" + s[\"single-step\"] : \"\") +\n (backgroundImage || backgroundImageMobile ? \" \" + s[\"with-background\"] : \"\") +\n (inline ? \" \" + s[\"inline\"] : \"\")\n }\n ref={currentStepRef}\n onTransitionEnd={handleTransitionEnd}\n style={height ? { height: height } : null}\n >\n {stepMounted ? (\n <>\n {backgroundImage || backgroundImageMobile ? (\n <div className={s[\"dialog-step-background-image\"] + \" \" + s[stepClass]}>\n {backgroundImage ? (\n <img\n src={backgroundImage}\n className={\n s[\"dialog-step-background-image-desktop\"] +\n \" \" +\n stepClass +\n (!backgroundImageMobile ? \" \" + s[\"primary\"] : \"\")\n }\n alt={\"dialog step background\"}\n />\n ) : null}\n {backgroundImageMobile ? (\n <img\n src={backgroundImageMobile}\n className={\n s[\"dialog-step-background-image-mobile\"] +\n \" \" +\n stepClass +\n (!backgroundImage ? \" \" + s[\"primary\"] : \"\")\n }\n alt={\"dialog step background\"}\n />\n ) : null}\n </div>\n ) : null}\n <div\n className={\n s[\"dialog-step-wrapper\"] +\n \" \" +\n s[stepClass] +\n \" \" +\n s[wrapperDirectionSubclass] +\n (inline ? \" \" + s[\"inline\"] : \"\")\n }\n >\n {isMultiStep && showCornerButtonForStep(stepName, showCornerBackButton) ? (\n <div className={s[\"dialog-step-wrapper-back-button\"]}>\n <LinkButton\n onClick={cornerBackButtonClick ? cornerBackButtonClick : previousStep}\n content={\n cornerBackButtonTitle\n ? cornerBackButtonTitle\n : // : t(\"organisms.DialogWithSteps.DialogStep.default-back-button-title\")\n \"Back\"\n }\n IconComponent={backgroundImage || backgroundImageMobile ? arrowWhite : arrowTosca}\n iconRotate={ICON_ROTATE_OPTIONS.rotate90}\n isColored={backgroundImage || backgroundImageMobile ? false : undefined}\n />\n </div>\n ) : null}\n\n <div\n className={\n s[\"dialog-step-wrapper-header\"] +\n (headerTitleLeft ? \" \" + s[\"text-left\"] : \"\") +\n (backgroundImage || backgroundImageMobile ? \" \" + s[\"with-background-image\"] : \"\")\n }\n >\n {image ? (\n <img\n src={image}\n alt=\"dialog popup logo\"\n className={s[\"dialog-step-wrapper-header-logo\"]}\n />\n ) : ImageRaw ? (\n <div className={s[\"dialog-step-wrapper-header-logo\"]}>\n <ImageRaw />\n </div>\n ) : null}\n\n <div\n className={\n s[\"dialog-step-wrapper-header-title\"] +\n (!isTopImagePassed ? \" \" + s[\"without-logo\"] : \"\") +\n (!isTopImagePassed && headerTitleLeft ? \" \" + s[\"close-button-padding\"] : \"\") +\n (inline ? \" \" + s[\"no-close-button-padding\"] : \"\")\n }\n >\n {titleIconCoin ? (\n <div className={s[\"dialog-step-wrapper-header-title-coin-icon\"]}>\n <AssetIcon\n assetIconSrc={assetIconSrc}\n assetIconProtocolSrc={assetIconProtocolSrc}\n fallbackSrc={fallbackSrc}\n />\n </div>\n ) : titleIcon ? (\n <div className={s[\"dialog-step-wrapper-header-title-icon\"]}>\n <img src={titleIcon} alt=\"coin icon to send\" />\n </div>\n ) : null}\n {titleLoadingDots ? (\n <div className={s[\"dialog-step-wrapper-header-title-loading\"]}>\n <LoadingDots isColored />\n </div>\n ) : (\n \"\"\n )}\n <div className={s[\"dialog-step-wrapper-header-title-text\"]}>\n {!isTopImagePassed && showBackgroundTitle ? <BackgroundTitle text={title} /> : null}\n <h5\n className={\n s[\"dialog-step-wrapper-header-title-text-content\"] +\n (!isTopImagePassed ? \" \" + s[\"without-logo\"] : \"\") +\n (backgroundImage || backgroundImageMobile ? \" \" + s[\"white\"] : \"\")\n }\n >\n {title}\n </h5>\n </div>\n </div>\n\n {subtitle ? (\n <p\n className={\n s[\"dialog-step-wrapper-header-text\"] +\n ` ${!isTopImagePassed ? s[\"without-logo\"] : \"\"} ${\n subtitleSmallMargin ? s[\"small-margin\"] : \"\"\n }${subtitleNoMargin ? s[\"no-margin\"] : \"\"} ${\n headerTitleLeft ? s[\"text-left\"] : \"\"\n } ${breakSubtitleWords ? s[\"break-words\"] : \"\"} ${\n backgroundImage || backgroundImageMobile ? s[\"white\"] : \"\"\n }`\n }\n >\n {subtitle}\n </p>\n ) : null}\n </div>\n <div className={s[\"dialog-step-wrapper-content\"] + \" \" + s[\"align-\" + contentAlign]}>\n {children}\n </div>\n\n {backButtonText || confirmButtonText ? (\n <div\n className={\n s[\"dialog-step-wrapper-buttons\"] +\n ` ${bigButtonMargins ? s[\"big-margin\"] : \"\"} ${\n noButtonMargins ? s[\"no-margin\"] : \"\"\n } ${isSecondaryButtonBig ? s[\"space-between-layout\"] : \"\"}`\n }\n >\n <DialogButtons\n primaryButtonTitle={confirmButtonText}\n primaryButtonOnClick={resetButtonLoader => confirmButtonClick(resetButtonLoader)}\n primaryButtonLoader={primaryButtonLoader}\n primaryButtonTo={confirmButtonLink}\n primaryButtonSetClickTrigger={setClickTrigger}\n secondaryButtonTitle={backButtonText}\n secondaryButtonOnClick={backButtonClick}\n secondaryButtonTo={backButtonTo}\n secondaryButtonBig={isSecondaryButtonBig}\n withBackgroundImage={!!backgroundImage || !!backgroundImageMobile}\n hideOnMobiles={isMultiStep && fixedButtons && (backButtonText || confirmButtonText)}\n />\n </div>\n ) : (\n \"\"\n )}\n </div>\n </>\n ) : null}\n </div>\n );\n};\n\nDialogStep.propTypes = {\n stepName: PropTypes.string,\n children: PropTypes.node,\n image: PropTypes.string,\n title: PropTypes.string,\n ImageRaw: PropTypes.func,\n titleIcon: PropTypes.string,\n titleIconCoin: PropTypes.object,\n coinToIconPaths: PropTypes.func,\n titleLoadingDots: PropTypes.bool,\n subtitle: PropTypes.string,\n backButtonText: PropTypes.string,\n backButtonClick: PropTypes.func,\n backButtonTo: PropTypes.string,\n confirmButtonText: PropTypes.string,\n confirmButtonClick: PropTypes.func,\n confirmButtonLink: PropTypes.string,\n primaryButtonLoader: PropTypes.bool,\n fixedButtons: PropTypes.bool,\n showCornerBackButton: PropTypes.bool,\n cornerBackButtonTitle: PropTypes.string,\n cornerBackButtonClick: PropTypes.func,\n bigButtonMargins: PropTypes.bool,\n noButtonMargins: PropTypes.bool,\n headerTitleLeft: PropTypes.bool,\n subtitleSmallMargin: PropTypes.bool,\n subtitleNoMargin: PropTypes.bool,\n showBackgroundTitle: PropTypes.bool,\n setClickTrigger: PropTypes.func,\n breakSubtitleWords: PropTypes.bool,\n contentAlign: PropTypes.string,\n controls: PropTypes.object,\n width: PropTypes.oneOf([\"550px\", \"600px\", \"700px\", \"750px\", \"800px\", \"1000px\"]),\n height: PropTypes.string,\n backgroundImage: PropTypes.string,\n backgroundImageMobile: PropTypes.string,\n isSecondaryButtonBig: PropTypes.bool,\n};\n\nDialogStep.defaultProps = {\n stepName: \"\",\n children: null,\n image: \"\",\n title: \"\",\n titleIcon: \"\",\n coinToIconPaths: () => ({}),\n titleLoadingDots: false,\n subtitle: \"\",\n backButtonText: \"\",\n backButtonClick: () => {},\n backButtonTo: \"\",\n confirmButtonText: \"\",\n confirmButtonClick: () => {},\n confirmButtonLink: \"\",\n primaryButtonLoader: false,\n fixedButtons: false,\n showCornerBackButton: null,\n cornerBackButtonTitle: null,\n cornerBackButtonClick: null,\n bigButtonMargins: false,\n noButtonMargins: false,\n headerTitleLeft: false,\n subtitleSmallMargin: false,\n subtitleNoMargin: false,\n showBackgroundTitle: true,\n setClickTrigger: () => {},\n breakSubtitleWords: false,\n contentAlign: \"left\",\n controls: {},\n height: null,\n backgroundImage: \"\",\n backgroundImageMobile: \"\",\n isSecondaryButtonBig: false,\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.2431 6L8.00045 10.2426L3.75781 6\"\n stroke=\"#232d42\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./asset-selection.module.scss\";\nimport ArrowIcon from \"../../../assets/wrappedImages/arrowIcon.jsx\";\n\nimport { AssetIcon } from \"../AssetIcon/AssetIcon.jsx\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\n\n/**\n * Component-button for triggering selecting an asset.\n *\n * @component\n * @param {Function} handleClick - The function to call when the component is clicked\n * @param {boolean} disabled - If true, disables click functionality\n * @param {string} assetIconSrc - The source URL for the asset icon\n * @param {string} [protocolName] - The name of the protocol, if any\n * @param {string} [assetIconProtocolSrc] - The source URL for the asset protocol icon\n * @param {string} [fallbackSrc] - The fallback source URL if the main asset icon fails to load\n */\nexport const AssetSelection = ({\n handleClick = () => {},\n disabled = false,\n assetIconSrc,\n protocolName,\n assetIconProtocolSrc = null,\n fallbackSrc,\n}) => {\n const handleError = useCallHandlingErrors();\n\n return (\n <div\n className={s[\"asset-selection\"] + \" \" + (disabled ? s[\"disabled\"] : \"\")}\n onClick={disabled ? () => {} : e => handleError(handleClick, e)}\n >\n <div className={s[\"asset-selection-icon-wrapper\"]}>\n <AssetIcon\n small\n assetIconSrc={assetIconSrc}\n assetIconProtocolSrc={assetIconProtocolSrc}\n fallbackSrc={fallbackSrc}\n />\n </div>\n {protocolName ? <div className={s[\"asset-selection-protocol-wrapper\"]}>{protocolName}</div> : \"\"}\n <div className={s[\"arrow\"]}>\n <ArrowIcon />\n </div>\n {/*<img src={arrowIcon} className=\"arrow\" alt=\"\"></img>*/}\n </div>\n );\n};\n\nAssetSelection.propTypes = {\n handleClick: PropTypes.func,\n disabled: PropTypes.bool,\n assetIconSrc: PropTypes.string.isRequired,\n protocolName: PropTypes.string,\n assetIconProtocolSrc: PropTypes.string,\n fallbackSrc: PropTypes.string,\n};\n\nAssetSelection.defaultProps = {\n handleClick: () => {},\n disabled: false,\n assetIconProtocolSrc: null,\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"25\" height=\"13\" viewBox=\"0 0 25 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.5 13L25 0H0L12.5 13Z\" fill=\"#232D42\" />\n </svg>\n);\n","export const TOOLTIP_POSITIONS = {\n TOP: \"top\",\n LEFT: \"left\",\n RIGHT: \"right\",\n BOTTOM: \"bottom\",\n TOP_LEFT: \"top-left\",\n TOP_RIGHT: \"top-right\",\n};\n","import React from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./tooltip.module.scss\";\nimport DarkRectangle from \"../../../assets/wrappedImages/darkRectangle.jsx\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\nimport { TOOLTIP_POSITIONS } from \"../../../constants/atoms/Tooltip/tooltip.jsx\";\n\n/**\n * Tooltip component for displaying contextual information.\n *\n * @component\n * @param {React.ReactNode} children - The content to display inside the tooltip.\n * @param {boolean} showTooltip - Controls whether the tooltip is visible.\n * @param {Function} handleClick - Handler for click events.\n * @param {boolean} wide - If true, applies a wider style to the tooltip.\n * @param {string} position - One of the predefined positions for the tooltip.\n * @param {boolean} ignorePointerEvents - If true, the tooltip will not react to pointer events.\n */\nexport const Tooltip = ({\n children,\n showTooltip,\n handleClick = () => {},\n wide = false,\n position = TOOLTIP_POSITIONS.TOP,\n ignorePointerEvents = false,\n}) => {\n const handleError = useCallHandlingErrors();\n\n const onClick = e => {\n e.stopPropagation();\n handleClick();\n };\n\n return (\n <CSSTransition in={showTooltip} timeout={400} unmountOnExit>\n <span\n className={`${s[\"tooltip\"]} ${wide ? s[\"wide\"] : \"\"} ${s[position]} ${\n ignorePointerEvents ? s[\"ignore-pointer\"] : \"\"\n }`}\n onClick={e => handleError(onClick, e)}\n onDoubleClick={e => handleError(e => e.stopPropagation(), e)}\n >\n <DarkRectangle />\n {/*<img src={darkRectangle} alt=\"dark rectangle\" />*/}\n {children}\n </span>\n </CSSTransition>\n );\n};\n\nTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n showTooltip: PropTypes.bool.isRequired,\n handleClick: PropTypes.func,\n wide: PropTypes.bool,\n position: PropTypes.oneOf(Object.values(TOOLTIP_POSITIONS)),\n ignorePointerEvents: PropTypes.bool,\n};\n\nTooltip.defaultProps = {\n handleClick: () => {},\n wide: false,\n position: TOOLTIP_POSITIONS.TOP,\n ignorePointerEvents: false,\n};\n","export const handleClickOutside = (exceptionsRefs, callback) => {\n function handleClick(event) {\n const isExceptionClicked = exceptionsRefs.find(ref => ref?.current && ref.current.contains(event.target));\n if (!isExceptionClicked) {\n callback();\n }\n }\n\n document.addEventListener(\"click\", handleClick);\n\n return () => document.removeEventListener(\"click\", handleClick);\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.5\" y=\"0.25\" width=\"16\" height=\"16\" rx=\"8\" fill=\"#DAF1FE\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.44968 9.62287C8.0213 9.62287 7.67264 9.24008 7.815 8.83604C7.84547 8.74956 7.87999 8.67275 7.91856 8.61686C8.10216 8.35084 8.37005 8.06047 8.72224 7.74574C8.99201 7.50594 9.19246 7.298 9.3236 7.1219C9.45474 6.9458 9.52031 6.74535 9.52031 6.52054C9.52031 6.20581 9.39292 5.95103 9.13814 5.7562C8.88335 5.56137 8.5424 5.46395 8.11527 5.46395C7.62404 5.46395 7.05412 5.78283 6.68203 6.03347C6.43716 6.19842 6.11362 6.21939 5.86602 6.05857C5.51562 5.83099 5.45796 5.34121 5.77515 5.06925C5.99176 4.88352 6.23474 4.69937 6.44046 4.60407C6.95003 4.36802 7.5495 4.25 8.23891 4.25C9.07819 4.25 9.74698 4.43172 10.2453 4.79516C10.7436 5.15859 10.9928 5.65878 10.9928 6.29574C10.9928 6.60297 10.9422 6.87274 10.841 7.10504C10.7399 7.33734 10.6181 7.53404 10.4757 7.69516C10.3334 7.85627 10.146 8.04173 9.91372 8.25155C9.62896 8.50633 9.41727 8.73114 9.27864 8.92597C9.25936 8.95306 9.24143 8.98609 9.22483 9.02289C9.0785 9.34733 8.8056 9.62287 8.44968 9.62287Z\"\n fill=\"url(#paint1_linear)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.3626 12.3094C8.10033 12.3094 7.88489 12.2251 7.71629 12.0565C7.54768 11.8879 7.46338 11.6799 7.46338 11.4326C7.46338 11.1854 7.54768 10.9793 7.71629 10.8144C7.88489 10.6496 8.10033 10.5671 8.3626 10.5671C8.61739 10.5671 8.82908 10.6496 8.99768 10.8144C9.16629 10.9793 9.25059 11.1854 9.25059 11.4326C9.25059 11.6799 9.16629 11.8879 8.99768 12.0565C8.82908 12.2251 8.61739 12.3094 8.3626 12.3094Z\"\n fill=\"url(#paint2_linear)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear\"\n x1=\"25.862\"\n y1=\"18.5044\"\n x2=\"12.7031\"\n y2=\"-2.23444\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#FCE2F0\" />\n <stop offset=\"1\" stop-color=\"#F7EAFD\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear\"\n x1=\"14.2067\"\n y1=\"10.3799\"\n x2=\"9.83017\"\n y2=\"3.3283\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#55E7D9\" />\n <stop offset=\"1\" stop-color=\"#54B4FF\" />\n </linearGradient>\n <linearGradient\n id=\"paint2_linear\"\n x1=\"10.2963\"\n y1=\"12.5549\"\n x2=\"8.87929\"\n y2=\"10.2639\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#55E7D9\" />\n <stop offset=\"1\" stop-color=\"#54B4FF\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React, { useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./notice-icon.module.scss\";\n\nimport { handleClickOutside } from \"../../utils/uiUtils.js\";\nimport { Tooltip } from \"../Tooltip/Tooltip.jsx\";\nimport NoticeQuestionIcon from \"../../../assets/wrappedImages/noticeQuestionIcon.jsx\";\n\nimport { TOOLTIP_POSITIONS } from \"../../../constants/atoms/Tooltip/tooltip.jsx\";\n\n/**\n * A component that displays a notice icon with optional tooltip.\n *\n * @component\n * @param {string} noticeText - The text to display inside the tooltip.\n * @param {string} [titleNoticeIcon] - The source URL for the icon displayed on the notice.\n * @param {string} tooltipPosition - Position for the tooltip relative to the icon.\n */\nexport const NoticeIcon = ({ noticeText, titleNoticeIcon = \"\", tooltipPosition = TOOLTIP_POSITIONS.TOP }) => {\n const [showTooltip, setShowTooltip] = useState(false);\n\n const noticeRef = useRef();\n\n useEffect(() => handleClickOutside([noticeRef], () => setShowTooltip(false)), []);\n\n return (\n <div ref={noticeRef} className={s[\"notice-icon\"]}>\n {titleNoticeIcon ? (\n <img\n src={titleNoticeIcon}\n alt=\"title icon\"\n onClick={() => setShowTooltip(prev => !prev)}\n className={s[\"notice-icon-image\"]}\n />\n ) : (\n <div className={s[\"notice-icon-image\"]} onClick={() => setShowTooltip(prev => !prev)}>\n <NoticeQuestionIcon />\n </div>\n )}\n <div className={s[\"notice-icon-tooltip\"]}>\n <Tooltip\n showTooltip={showTooltip}\n handleClick={() => setShowTooltip(false)}\n wide={true}\n position={tooltipPosition}\n >\n {noticeText}\n </Tooltip>\n </div>\n </div>\n );\n};\n\nNoticeIcon.propTypes = {\n noticeText: PropTypes.string.isRequired,\n titleNoticeIcon: PropTypes.string,\n tooltipPosition: PropTypes.oneOf(Object.values(TOOLTIP_POSITIONS)),\n};\n\nNoticeIcon.defaultProps = {\n titleNoticeIcon: \"\",\n tooltipPosition: TOOLTIP_POSITIONS.TOP,\n};\n","import copy from \"clipboard-copy\";\n\nimport { improveAndRethrow } from \"../../common/errorUtils.js\";\n\n/**\n * Copies given text to clipboard inside browser.\n *\n * @param text - text to be copied\n */\nexport function copyBrowserTextToClipboard(text) {\n try {\n if (!copy(text)) {\n throw new Error(\"Failed to execute copy command.\");\n }\n } catch (e) {\n improveAndRethrow(e, \"saveTextToFile\");\n }\n}\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./title-box.module.scss\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\nimport { copyBrowserTextToClipboard } from \"../../utils/textUtils.js\";\nimport { TOOLTIP_POSITIONS } from \"../../../constants/atoms/Tooltip/tooltip.jsx\";\n\nimport { NoticeIcon } from \"../NoticeIcon/NoticeIcon.jsx\";\nimport { LinkButton } from \"../buttons/LinkButton/LinkButton.jsx\";\nimport { Tooltip } from \"../Tooltip/Tooltip.jsx\";\n\n/**\n * A box component for displaying a title with optional controls like buttons or icons and any children inside.\n *\n * @component\n * @param {string} title - The main title text.\n * @param {string} linkText - The text for the link button, if any.\n * @param {Function} linkButtonClick - The function to execute when the link button is clicked.\n * @param {boolean} isLinkButtonDisabled - Determines if the link button is disabled.\n * @param {React.ReactNode} children - Child components to be rendered.\n * @param {boolean} linkButtonLoader - Displays a loader animation on the link button if true.\n * @param {boolean} fullWidth - If true, the title box will take full width of its container.\n * @param {string} titleNoticeText - The text for a notice icon tooltip.\n * @param {string} titleNoticeIcon - The icon for the notice tooltip.\n * @param {string} titleNoticePosition - Tooltip position for the notice icon.\n * @param {boolean} bigTitle - If true, uses a larger font size for the title.\n * @param {boolean} transparentTitle - If true, the title has a transparent background.\n * @param {string} copyButtonText - The text for the copy button.\n * @param {string} copyButtonContent - The content to be copied to the clipboard.\n * @param {string} copyButtonTooltipContent - Tooltip content displayed after copying.\n */\nexport const TitleBox = ({\n title = \"\",\n linkText = \"\",\n linkButtonClick = resetButtonLoader => {},\n isLinkButtonDisabled = false,\n children,\n linkButtonLoader = false,\n fullWidth = true,\n titleNoticeText = \"\",\n titleNoticeIcon,\n titleNoticePosition,\n bigTitle = false,\n transparentTitle = false,\n copyButtonText,\n copyButtonContent,\n copyButtonTooltipContent,\n}) => {\n const handleError = useCallHandlingErrors();\n\n const transparentTitleClass = transparentTitle ? s[\"transparent-title\"] : \"\";\n\n const [showCopyNotice, setShowCopyNotice] = useState(false);\n\n const handleCopyButton = e => {\n handleError(() => {\n setShowCopyNotice(true);\n copyBrowserTextToClipboard(copyButtonContent);\n setTimeout(() => {\n setShowCopyNotice(false);\n }, 1500);\n }, e);\n };\n\n return (\n <div className={`${s[\"title-box\"]} ${fullWidth ? s[\"full-width\"] : \"\"}`}>\n {title || titleNoticeText || linkText ? (\n <div className={s[\"title-box-wrapper\"]}>\n {bigTitle ? (\n <h5 className={s[\"title-box-wrapper-title\"] + \" \" + transparentTitleClass}>{title}</h5>\n ) : (\n <h6 className={s[\"title-box-wrapper-title\"] + \" \" + transparentTitleClass}>{title}</h6>\n )}\n {titleNoticeText ? (\n <NoticeIcon\n noticeText={titleNoticeText}\n titleNoticeIcon={titleNoticeIcon}\n tooltipPosition={titleNoticePosition}\n />\n ) : null}\n {copyButtonContent && copyButtonText ? (\n <div className={s[\"title-box-wrapper-link-button\"]}>\n <LinkButton\n content={copyButtonText}\n onClick={handleCopyButton}\n isLoadable={false}\n isDisabled={false}\n />\n <Tooltip position={TOOLTIP_POSITIONS.TOP_LEFT} showTooltip={showCopyNotice}>\n {copyButtonTooltipContent}\n </Tooltip>\n </div>\n ) : linkText ? (\n <div className={s[\"title-box-wrapper-link-button\"]}>\n <LinkButton\n content={linkText}\n onClick={linkButtonClick}\n isLoadable={linkButtonLoader}\n isDisabled={isLinkButtonDisabled}\n />\n </div>\n ) : null}\n </div>\n ) : null}\n {children}\n </div>\n );\n};\n\nTitleBox.propTypes = {\n title: PropTypes.string,\n linkText: PropTypes.string,\n linkButtonClick: PropTypes.func,\n isLinkButtonDisabled: PropTypes.bool,\n children: PropTypes.node,\n linkButtonLoader: PropTypes.bool,\n fullWidth: PropTypes.bool,\n titleNoticeText: PropTypes.string,\n titleNoticeIcon: PropTypes.string,\n titleNoticePosition: PropTypes.string,\n bigTitle: PropTypes.bool,\n transparentTitle: PropTypes.bool,\n copyButtonText: PropTypes.string,\n copyButtonContent: PropTypes.string,\n copyButtonTooltipContent: PropTypes.string,\n};\n\nTitleBox.defaultProps = {\n title: \"\",\n linkText: \"\",\n linkButtonClick: () => {},\n isLinkButtonDisabled: false,\n linkButtonLoader: false,\n fullWidth: true,\n titleNoticeText: \"\",\n titleNoticePosition: TOOLTIP_POSITIONS.TOP,\n bigTitle: false,\n transparentTitle: false,\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6265 10.4119V12.2379C12.6265 12.7338 12.193 13.1356 11.6583 13.1356H3.26825C2.73352 13.1356 2.29999 12.7338 2.29999 12.2379V3.79771C2.29999 3.30178 2.73352 2.89999 3.26825 2.89999H11.6583C12.193 2.89999 12.6265 3.30178 12.6265 3.79771V5.84996\"\n stroke=\"#8F95A2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.0952 10.1922H10.2664C9.0847 10.1922 8.12704 9.23439 8.12704 8.05246C8.12704 6.87052 9.0847 5.91269 10.2664 5.91269H13.0952C13.4072 5.91269 13.66 6.16552 13.66 6.47758V9.62689C13.66 9.93939 13.4072 10.1922 13.0952 10.1922Z\"\n stroke=\"#8F95A2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path d=\"M2.29999 4.73721H4.99884\" stroke=\"#8F95A2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M2.29999 11.3122H4.99884\" stroke=\"#8F95A2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n);\n","import { BigNumber } from \"bignumber.js\";\n\nexport class InputValuesProviders {\n /**\n * Designed to be called onKeyUp event of html input field for float value\n * Removes all prohibited stuff from the given float string and remains only allowed.\n * Removes digits before and after the dot.\n *\n * @param inputString {string} string to be corrected\n * @param maxValue {string} max value for the correcting float value\n * @param digitsAfterDot {number} count of digits after the dot that this method should provide, min 0\n * @return {string} corrected float value string\n */\n static provideFormatOfFloatValueByInputString(inputString, digitsAfterDot = 2, maxValue = null) {\n let value = inputString;\n if (!value) {\n return \"\";\n }\n\n if (digitsAfterDot < 0) {\n throw new Error(\"Min suffix length is 0, got \" + digitsAfterDot);\n }\n\n value = value.replace(/[,]/g, \".\"); // replaces commas with dots\n value = value.replace(/[^0-9.]/g, \"\"); // remove non digits/dots\n value = value.replace(/^\\./g, \"0.\"); // adds leading zero\n value = value.replace(/\\.+/g, \".\"); // replaces series of dots with single dot\n\n let parts = value.split(\".\");\n if (parts.length > 2) {\n // removes all after second dot and itself\n parts = [parts[0], parts[1]];\n }\n\n if (maxValue != null) {\n const maxDigitsCountBeforeTheDot = BigNumber(maxValue).toFixed(0).length;\n if (parts[0]?.length > maxDigitsCountBeforeTheDot) {\n // removes redundant prefix digits\n parts[0] = parts[0].substring(parts[0].length - maxDigitsCountBeforeTheDot, parts[0].length);\n }\n }\n\n if (parts[1]?.length > digitsAfterDot) {\n // removes redundant suffix digits\n parts[1] = parts[1].substring(0, digitsAfterDot);\n }\n\n return parts.join(\".\");\n }\n}\n","export class FiatCurrenciesService {\n static getFullCurrencyNameByCode(code = \"\") {\n const data = fiatCurrenciesList.find(currencyData => currencyData[0] === code.toUpperCase());\n return (data && data[2]) || null;\n }\n\n static isCodeValid(code) {\n return !!fiatCurrenciesList.find(currenciesData => currenciesData[0] === code);\n }\n\n /**\n * Returns currency symbol by code if present\n *\n * @param code {string} currency code\n * @return {string|null} code or null if there is no symbol for the currency\n */\n static getCurrencySymbolByCode(code = \"\") {\n const data = fiatCurrenciesList.find(currencyData => currencyData[0] === code.toUpperCase());\n return data?.[1] ?? null;\n }\n\n /**\n * @param code {string}\n * @return {number|null}\n */\n static getCurrencyDecimalCountByCode(code = \"\") {\n const data = fiatCurrenciesList.find(currencyData => currencyData[0] === code.toUpperCase());\n return data?.[3] ?? null;\n }\n}\n\nconst fiatCurrenciesList = [\n [\"USD\", \"$\", \"US Dollar\", 2],\n [\"CAD\", \"CA$\", \"Canadian Dollar\", 2],\n [\"EUR\", \"€\", \"Euro\", 2],\n [\"AED\", \"AED\", \"UAE Dirham\", 2],\n [\"AFN\", \"؋\", \"Afghan Afghani\", 0],\n [\"ALL\", \"ALL\", \"Albanian Lek\", 0],\n [\"AMD\", \"֏\", \"Armenian Dram\", 0],\n [\"ARS\", \"AR$\", \"Argentine Peso\", 2],\n [\"AUD\", \"AU$\", \"Australian Dollar\", 2],\n [\"AZN\", \"₼\", \"Azerbaijani Manat\", 2],\n [\"BAM\", \"KM\", \"Bosnia-Herzegovina Convertible Mark\", 2],\n [\"BDT\", \"Tk\", \"Bangladeshi Taka\", 2],\n [\"BGN\", \"BGN\", \"Bulgarian Lev\", 2],\n [\"BHD\", \"BD\", \"Bahraini Dinar\", 3],\n [\"BIF\", \"FBu\", \"Burundian Franc\", 0],\n [\"BND\", \"BN$\", \"Brunei Dollar\", 2],\n [\"BOB\", \"Bs\", \"Bolivian Boliviano\", 2],\n [\"BRL\", \"R$\", \"Brazilian Real\", 2],\n [\"BWP\", \"BWP\", \"Botswanan Pula\", 2],\n [\"BYN\", \"Br\", \"Belarusian Ruble\", 2],\n [\"BZD\", \"BZ$\", \"Belize Dollar\", 2],\n [\"CDF\", \"CDF\", \"Congolese Franc\", 2],\n [\"CHF\", \"CHF\", \"Swiss Franc\", 2],\n [\"CLP\", \"CL$\", \"Chilean Peso\", 0],\n [\"CNY\", \"CN¥\", \"Chinese Yuan\", 2],\n [\"COP\", \"CO$\", \"Colombian Peso\", 0],\n [\"CRC\", \"₡\", \"Costa Rican Colón\", 0],\n [\"CVE\", \"CV$\", \"Cape Verdean Escudo\", 2],\n [\"CZK\", \"Kč\", \"Czech Republic Koruna\", 2],\n [\"DJF\", \"Fdj\", \"Djiboutian Franc\", 0],\n [\"DKK\", \"Dkr\", \"Danish Krone\", 2],\n [\"DOP\", \"RD$\", \"Dominican Peso\", 2],\n [\"DZD\", \"DA\", \"Algerian Dinar\", 2],\n [\"EEK\", \"Ekr\", \"Estonian Kroon\", 2],\n [\"EGP\", \"EGP\", \"Egyptian Pound\", 2],\n [\"ERN\", \"Nfk\", \"Eritrean Nakfa\", 2],\n [\"ETB\", \"Br\", \"Ethiopian Birr\", 2],\n [\"GBP\", \"£\", \"British Pound Sterling\", 2],\n [\"GEL\", \"₾\", \"Georgian Lari\", 2],\n [\"GHS\", \"₵\", \"Ghanaian Cedi\", 2],\n [\"GNF\", \"FG\", \"Guinean Franc\", 0],\n [\"GTQ\", \"GTQ\", \"Guatemalan Quetzal\", 2],\n [\"HKD\", \"HK$\", \"Hong Kong Dollar\", 2],\n [\"HNL\", \"HNL\", \"Honduran Lempira\", 2],\n [\"HRK\", \"kn\", \"Croatian Kuna\", 2],\n [\"HUF\", \"Ft\", \"Hungarian Forint\", 0],\n [\"IDR\", \"Rp\", \"Indonesian Rupiah\", 0],\n [\"ILS\", \"₪\", \"Israeli New Sheqel\", 2],\n [\"INR\", \"₹\", \"Indian Rupee\", 2],\n [\"IQD\", \"IQD\", \"Iraqi Dinar\", 0],\n [\"IRR\", \"﷼\", \"Iranian Rial\", 0],\n [\"ISK\", \"Ikr\", \"Icelandic Króna\", 0],\n [\"JMD\", \"J$\", \"Jamaican Dollar\", 2],\n [\"JOD\", \"JD\", \"Jordanian Dinar\", 3],\n [\"JPY\", \"¥\", \"Japanese Yen\", 0],\n [\"KES\", \"Ksh\", \"Kenyan Shilling\", 2],\n [\"KHR\", \"KHR\", \"Cambodian Riel\", 2],\n [\"KMF\", \"CF\", \"Comorian Franc\", 0],\n [\"KRW\", \"₩\", \"South Korean Won\", 0],\n [\"KWD\", \"KD\", \"Kuwaiti Dinar\", 3],\n [\"KZT\", \"₸\", \"Kazakhstani Tenge\", 2],\n [\"LBP\", \"LB£\", \"Lebanese Pound\", 0],\n [\"LKR\", \"SLRs\", \"Sri Lankan Rupee\", 2],\n [\"LTL\", \"Lt\", \"Lithuanian Litas\", 2],\n [\"LVL\", \"Ls\", \"Latvian Lats\", 2],\n [\"LYD\", \"LD\", \"Libyan Dinar\", 3],\n [\"MAD\", \"MAD\", \"Moroccan Dirham\", 2],\n [\"MDL\", \"MDL\", \"Moldovan Leu\", 2],\n [\"MGA\", \"MGA\", \"Malagasy Ariary\", 0],\n [\"MKD\", \"MKD\", \"Macedonian Denar\", 2],\n [\"MMK\", \"MMK\", \"Myanma Kyat\", 0],\n [\"MNT\", \"₮\", \"Mongolian Tugrik\", 0],\n [\"MOP\", \"MOP$\", \"Macanese Pataca\", 2],\n [\"MUR\", \"MURs\", \"Mauritian Rupee\", 0],\n [\"MXN\", \"MX$\", \"Mexican Peso\", 2],\n [\"MYR\", \"RM\", \"Malaysian Ringgit\", 2],\n [\"MZN\", \"MTn\", \"Mozambican Metical\", 2],\n [\"NAD\", \"N$\", \"Namibian Dollar\", 2],\n [\"NGN\", \"₦\", \"Nigerian Naira\", 2],\n [\"NIO\", \"C$\", \"Nicaraguan Córdoba\", 2],\n [\"NOK\", \"Nkr\", \"Norwegian Krone\", 2],\n [\"NPR\", \"NPRs\", \"Nepalese Rupee\", 2],\n [\"NZD\", \"NZ$\", \"New Zealand Dollar\", 2],\n [\"OMR\", \"OMR\", \"Omani Rial\", 3],\n [\"PAB\", \"B/.\", \"Panamanian Balboa\", 2],\n [\"PEN\", \"S/.\", \"Peruvian Nuevo Sol\", 2],\n [\"PHP\", \"₱\", \"Philippine Peso\", 2],\n [\"PKR\", \"PKRs\", \"Pakistani Rupee\", 0],\n [\"PLN\", \"zł\", \"Polish Zloty\", 2],\n [\"PYG\", \"₲\", \"Paraguayan Guarani\", 0],\n [\"QAR\", \"QR\", \"Qatari Rial\", 2],\n [\"RON\", \"RON\", \"Romanian Leu\", 2],\n [\"RSD\", \"din.\", \"Serbian Dinar\", 0],\n [\"RUB\", \"₽\", \"Russian Ruble\", 2],\n [\"RWF\", \"RWF\", \"Rwandan Franc\", 0],\n [\"SAR\", \"SR\", \"Saudi Riyal\", 2],\n [\"SDG\", \"SDG\", \"Sudanese Pound\", 2],\n [\"SEK\", \"Skr\", \"Swedish Krona\", 2],\n [\"SGD\", \"S$\", \"Singapore Dollar\", 2],\n [\"SOS\", \"Ssh\", \"Somali Shilling\", 0],\n [\"SYP\", \"SY£\", \"Syrian Pound\", 0],\n [\"THB\", \"฿\", \"Thai Baht\", 2],\n [\"TND\", \"DT\", \"Tunisian Dinar\", 3],\n [\"TOP\", \"T$\", \"Tongan Paʻanga\", 2],\n [\"TRY\", \"₺\", \"Turkish Lira\", 2],\n [\"TTD\", \"TT$\", \"Trinidad and Tobago Dollar\", 2],\n [\"TWD\", \"NT$\", \"New Taiwan Dollar\", 2],\n [\"TZS\", \"TSh\", \"Tanzanian Shilling\", 0],\n [\"UAH\", \"₴\", \"Ukrainian Hryvnia\", 2],\n [\"UGX\", \"USh\", \"Ugandan Shilling\", 0],\n [\"UYU\", \"$U\", \"Uruguayan Peso\", 2],\n [\"UZS\", \"UZS\", \"Uzbekistan Som\", 0],\n [\"VEF\", \"Bs.F.\", \"Venezuelan Bolívar\", 2],\n [\"VND\", \"₫\", \"Vietnamese Dong\", 0],\n [\"XAF\", \"FCFA\", \"CFA Franc BEAC\", 0],\n [\"XOF\", \"CFA\", \"CFA Franc BCEAO\", 0],\n [\"YER\", \"﷼\", \"Yemeni Rial\", 0],\n [\"ZAR\", \"R\", \"South African Rand\", 2],\n [\"ZMK\", \"ZK\", \"Zambian Kwacha\", 0],\n [\"ZWL\", \"ZWL$\", \"Zimbabwean Dollar\", 0],\n];\n","import { BigNumber } from \"bignumber.js\";\n\nimport { FiatCurrenciesService } from \"./fiatCurrenciesService.js\";\nimport { improveAndRethrow } from \"./errorUtils.js\";\n\n// TODO: [dev] return addCommasToAmountString internal method to encapsulate commas adding\n\nexport class AmountUtils {\n static significantDecimalCount = 8;\n static collapsedDecimalCount = 2;\n static maxTotalLength = 12;\n static extraSmallMaxTotalLength = 9; // >=10 breaks transactions list (mobile) and it is hard to avoid this\n static periods = \"..\";\n\n static defaultFiatParams = {\n ticker: true, // If true, currency code will be shown\n enableCurrencySymbols: true, // Enables currency symbols where available. Requires \"ticker: true\"\n collapsible: true, // Enables minimization of amounts over 1 million (example: 1.52M)\n limitTotalLength: true, // Limits the total amount length to maxTotalLength\n extraSmallLength: false, // Limits the total amount length to extraSmallMaxTotalLength\n };\n\n static fiatXs(amount, code) {\n return this.fiat(amount, code, { extraSmallLength: true });\n }\n\n /**\n * Universal method for rendering of fiat amounts, taking into account the rules of\n * the passed fiat currency code.\n *\n * TODO: [feature, high] remove 'number' from accepted types list task_id=1e692bcfabbe487a9d1638fc8ff17448\n * @param amount {BigNumber|number|string|null|undefined} The number value to be trimmed\n * @param currencyCode {string|null} The currency code. Can be omitted if { ticker: false } in the config\n * @param [passedParams={}] {object} Formatting parameters\n * @return {string} Formatted fiat amount string\n */\n static fiat(amount, currencyCode, passedParams = {}) {\n try {\n const params = { ...this.defaultFiatParams, ...passedParams };\n\n if (this._checkIfAmountInvalid(amount, true) || typeof currencyCode !== \"string\") return \"NULL\";\n\n const currencySymbol = FiatCurrenciesService.getCurrencySymbolByCode(currencyCode);\n const currencyDecimalCount = FiatCurrenciesService.getCurrencyDecimalCountByCode(currencyCode);\n\n const trimmedByMaxDigits = BigNumber(amount).toFixed(currencyDecimalCount, BigNumber.ROUND_FLOOR);\n\n let processedAmount = BigNumber(trimmedByMaxDigits);\n if (params.collapsible && processedAmount.gte(BigNumber(\"1000000\"))) {\n processedAmount = this._collapseToMillionsAndFormat(\n processedAmount,\n this.collapsedDecimalCount,\n params\n );\n } else {\n const limitResult = this._limitTotalAmountLengthIfNeeded(trimmedByMaxDigits, params);\n processedAmount = BigNumber(limitResult.processedAmount).toFormat(); // Adds commas to integer part\n }\n\n // Add the currency code or currency symbol, if symbol is enabled and available\n if (params.ticker) {\n if (typeof currencySymbol === \"string\" && params.enableCurrencySymbols) {\n processedAmount = currencySymbol + (currencySymbol.length > 1 ? \" \" : \"\") + processedAmount;\n } else {\n processedAmount = processedAmount + \" \" + currencyCode;\n }\n }\n\n return processedAmount;\n } catch (e) {\n improveAndRethrow(e, \"fiat\", `Passed: ${amount}`);\n }\n }\n\n static defaultCryptoParams = {\n ticker: true, // If true, asset ticker will be shown\n collapsible: true, // Enables minimization of amounts over 1 million (example: 1.52M)\n trim: true, // Cuts the right part of the amount if necessary, and adds \"..\" in the end\n limitTotalLength: true, // Limits the total amount length to maxTotalLength\n extraSmallLength: false, // Limits the total amount length to extraSmallMaxTotalLength\n periods: true, // Whether we add periods (\"..\") as suffix for trimmed numbers\n numberPartsSeparator: true, // Whether we add separators e.g. for 1000000 -> 1,000,000\n };\n\n static cryptoWoTicker(amount, digits) {\n return this.crypto(amount, null, digits, { ticker: false });\n }\n\n static cryptoWoTickerXs(amount, digits) {\n return this.crypto(amount, null, digits, {\n ticker: false,\n extraSmallLength: true,\n });\n }\n\n static cryptoXs(amount, ticker, digits) {\n return this.crypto(amount, ticker, digits, {\n extraSmallLength: true,\n periods: false,\n });\n }\n\n static cryptoFull(amount, ticker, digits) {\n return this.crypto(amount, ticker, digits, {\n collapsible: false,\n trim: false,\n limitTotalLength: false,\n });\n }\n\n static cryptoFullPureNumber(amount, digits) {\n return this.crypto(amount, null, digits, {\n ticker: false,\n collapsible: false,\n trim: false,\n limitTotalLength: false,\n numberPartsSeparator: false,\n });\n }\n\n /**\n * Universal method for rendering of crypto amounts, taking into account the rules of\n * the passed ticker. Requires the number of digits after period to be less of equal to\n * the number of digits, supported by the passed ticker.\n *\n * @param amount {BigNumber|string|null|undefined} The number value to be formatted\n * @param ticker {string|null} Coin ticker\n * @param [digits=8] {number} max digits after the dot\n * @param passedParams {object} Formatting parameters\n * @return {string} Formatted crypto amount string\n */\n static crypto(amount, ticker, digits = this.significantDecimalCount, passedParams) {\n try {\n const params = { ...this.defaultCryptoParams, ...passedParams };\n\n if (this._checkIfAmountInvalid(amount) || (typeof ticker !== \"string\" && params.ticker)) return \"NULL\";\n\n let addPeriods = false;\n\n const amountBigNumber = BigNumber(amount);\n\n let processedAmount = amountBigNumber.toFixed(digits, BigNumber.ROUND_FLOOR);\n processedAmount = this.removeRedundantRightZerosFromNumberString(processedAmount);\n const originalAmountDecimalPlaces = BigNumber(processedAmount).decimalPlaces();\n // Check decimal count and throw an error, if the amount has more decimal digits than supported by the asset\n if (originalAmountDecimalPlaces > digits) {\n const errorMessage = `An attempt to render a crypto value with too many digits after period was made: ${amount}, allowed digits: ${digits}. This is a no-op, since the logical and visually rendered values would differ, which is not acceptable for crypto amounts. Please trim the amount before rendering, using the trimCryptoAmountByCoin(amount, coin) method.`;\n // throw new Error(errorMessage);\n // eslint-disable-next-line no-console\n console.log(errorMessage, \"crypto\");\n }\n\n // Shortening the value to general significant number of digits after period\n if (params.trim) {\n processedAmount = this.removeRedundantRightZerosFromNumberString(\n amountBigNumber.toFixed(this.significantDecimalCount, BigNumber.ROUND_FLOOR)\n );\n addPeriods = originalAmountDecimalPlaces > this.significantDecimalCount;\n }\n\n const limitResult = this._limitTotalAmountLengthIfNeeded(processedAmount, params);\n processedAmount = limitResult.processedAmount;\n addPeriods ||= limitResult.addPeriods;\n\n let wereMillionsCollapsed = false;\n if (params.collapsible && amountBigNumber.gte(\"1000000\")) {\n // Collapse the 1M+ amounts if applicable\n processedAmount = this._collapseToMillionsAndFormat(\n BigNumber(processedAmount),\n this.collapsedDecimalCount,\n params\n );\n wereMillionsCollapsed = true;\n } else if (params.numberPartsSeparator) {\n // Add separators to integer part of the amount\n processedAmount = BigNumber(processedAmount).toFormat();\n }\n\n // Adding periods, if the amount was shortened\n if (params.periods && addPeriods && !wereMillionsCollapsed) {\n processedAmount = processedAmount + this.periods;\n }\n\n // Adding an adaptive (printable/full) ticker\n if (params.ticker && ticker) {\n processedAmount = processedAmount + \" \" + ticker;\n }\n\n return processedAmount;\n } catch (e) {\n improveAndRethrow(e, \"crypto\", `Passed: ${amount}, ${ticker}, ${digits}`);\n }\n }\n\n static _checkIfAmountInvalid(amount, allowNumbers = false) {\n return (\n amount == null ||\n amount === \"\" ||\n (!BigNumber.isBigNumber(amount) &&\n typeof amount !== \"string\" &&\n (!allowNumbers || typeof amount !== \"number\"))\n );\n }\n\n /**\n * Trims all digits after period that exceed the number of digits provided.\n * Use this everywhere when calculating some amount value to ensure the result is correct in terms\n * of max digits allowed by specific currency.\n *\n * @param amount {BigNumber|number|string|null|undefined} The number value to be trimmed.\n * HEX strings also allowed \"0x...\" and JS hex numbers\n * @param digits {number} allowed digits\n * @return {string|null} String with trimmed number or null for invalid amount\n */\n static trim(amount, digits) {\n try {\n if (this._checkIfAmountInvalid(amount, true)) return null;\n return BigNumber(amount).toFixed(digits, BigNumber.ROUND_FLOOR);\n } catch (e) {\n improveAndRethrow(e, \"trim\", `Passed: ${amount}, ${digits}`);\n }\n }\n\n /**\n * Returns integer part of number as a string.\n *\n * @param amount {BigNumber|number|string|null|undefined} The number value to be trimmed.\n * HEX strings also allowed \"0x...\" and JS hex numbers\n * @return {string|null}\n */\n static toIntegerString(amount) {\n return this.trim(amount, 0);\n }\n\n /**\n * Shortens the line length by using a \"1.52M\" representation of big amounts.\n *\n * @param amountBigNumber {BigNumber} The number value to be trimmed\n * @param decimalCount {number} The number of digits after period to keep in millions representation\n * @param params {object} params object\n * @return {string} A shortened string, converted into \"millions\" format, if the amount exceeds 1 million\n */\n static _collapseToMillionsAndFormat(amountBigNumber, decimalCount, params = {}) {\n try {\n // TODO: [feature, moderate] use local format here - take from JS locales (comma/dot etc.)\n const millionBigNumber = BigNumber(\"1000000\");\n const millions = amountBigNumber.div(millionBigNumber).toFixed(decimalCount, BigNumber.ROUND_FLOOR);\n const limitedResult = this._limitTotalAmountLengthIfNeeded(millions, params);\n const formatted = BigNumber(limitedResult.processedAmount).toFormat();\n\n return formatted + \"M\";\n } catch (e) {\n improveAndRethrow(e, \"_collapseAmountAndFormat\", `Passed: ${amountBigNumber.toFixed()}, ${decimalCount}`);\n }\n }\n\n /**\n * @param amountString {string} The amount to be restricted by length\n * @param params {object} Params object used for formatting\n * @return {{processedAmount:string, addPeriods: boolean}} A shortened string\n */\n static _limitTotalAmountLengthIfNeeded(amountString, params) {\n try {\n let addPeriods = false;\n if (params.limitTotalLength || params.extraSmallLength) {\n const maxLength = params.extraSmallLength ? this.extraSmallMaxTotalLength : this.maxTotalLength;\n if (amountString.length > maxLength) {\n const delta = amountString.length - maxLength;\n const currentDecimalsCount = BigNumber(amountString).decimalPlaces();\n const newDecimalCount = currentDecimalsCount - delta;\n amountString = BigNumber(amountString).toFixed(\n newDecimalCount > 2 ? newDecimalCount : 2,\n BigNumber.ROUND_FLOOR\n );\n addPeriods = currentDecimalsCount > newDecimalCount;\n }\n }\n\n return { addPeriods: addPeriods, processedAmount: amountString };\n } catch (e) {\n improveAndRethrow(e, \"_limitTotalAmountLengthIfNeeded\", `Passed: ${amountString}, ${params}`);\n }\n }\n\n /**\n * Safely composes rate string (handles small/big rates).\n * Here we try to calculate a clear rate for the user. The difficulty is that the rate value can be pretty\n * small as some coins have significantly higher price than the other. For such cases we calculate\n * not the \"1 <coin_A> is X <coin B>\" but \"Y <coin_A> is X <coin B>\" where Y is one of the powers of 100.\n *\n * @param leftTicker {string}\n * @param rightTicker {string}\n * @param rate {number|string|BigNumber}\n * @param [rightCurrencyDigitsAfterDots=8] {number}\n * @param [strictRate=false] {boolean} true if the rate is strict and false if approximate\n * @return {string}\n */\n static composeRateText(\n leftTicker,\n rightTicker,\n rate,\n rightCurrencyDigitsAfterDots = this.significantDecimalCount,\n strictRate = false\n ) {\n try {\n if (rightCurrencyDigitsAfterDots < 0) {\n rightCurrencyDigitsAfterDots = this.significantDecimalCount;\n }\n let leftNumber = BigNumber(\"1\");\n const multiplier = BigNumber(\"100\");\n const maxAttemptsToGetRate = 10;\n let right = null;\n const rateBigNumber = BigNumber(rate);\n if (BigNumber(rate).eq(\"0\")) {\n right = BigNumber(\"0\");\n } else if (rate && (BigNumber.isBigNumber(rate) || !Number.isNaN(+rate))) {\n for (let i = 0; i < maxAttemptsToGetRate; ++i) {\n const rightNumberAttempt = rateBigNumber\n .times(leftNumber)\n .toFixed(rightCurrencyDigitsAfterDots, BigNumber.ROUND_FLOOR);\n if (!BigNumber(rightNumberAttempt).eq(BigNumber(\"0\"))) {\n right = BigNumber(rightNumberAttempt);\n break;\n } else {\n leftNumber = leftNumber.times(multiplier);\n }\n }\n }\n const leftAmountString = AmountUtils.toIntegerString(leftNumber);\n const rightAmountString =\n right != null ? right.toFixed(rightCurrencyDigitsAfterDots, BigNumber.ROUND_FLOOR) : null;\n return `${leftAmountString} ${leftTicker} ${strictRate ? \"=\" : \"~\"} ${\n rightAmountString ?? \"?\"\n } ${rightTicker}`;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\"composeRateText\", e);\n }\n return \"-\";\n }\n\n /**\n * @param numberAsAString {string}\n * @return {string}\n */\n static removeRedundantRightZerosFromNumberString(numberAsAString) {\n try {\n const parts = (\"\" + numberAsAString).split(\".\");\n let right = parts[1];\n while (right?.length && right[right.length - 1] === \"0\") {\n right = right.slice(0, right.length - 1);\n }\n\n return `${parts[0]}${right?.length ? `.${right}` : \"\"}`;\n } catch (e) {\n improveAndRethrow(e, \"removeRedundantRightZerosFromNumberString\", `Passed: ${numberAsAString}`);\n }\n }\n}\n","import React, { useEffect, useState } from \"react\";\nimport { BigNumber } from \"bignumber.js\";\n\nimport s from \"./amount-input.module.scss\";\nimport WalletIcon from \"../../../assets/wrappedImages/walletIcon.jsx\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\nimport { InputValuesProviders } from \"../../utils/inputValueProviders.js\";\nimport { logErrorOrOutputToConsole } from \"../../../common/errorUtils.js\";\n\nimport { TitleBox } from \"../../atoms/TitleBox/TitleBox.jsx\";\nimport { AmountUtils } from \"../../../common/amountUtils.js\";\nimport { AssetSelection } from \"../../atoms/AssetSelection/AssetSelection.jsx\";\nimport { Validation } from \"../../atoms/Validation/Validation.jsx\";\n\nexport const AmountInput = React.forwardRef(\n (\n {\n label = \"\",\n handleCoinAmountChange = btcAmount => {},\n handleFiatAmountChange = fiatAmount => {},\n handleChangeAssetClick = () => {},\n handleBalanceValidationChange = isValid => {},\n disabled,\n locked,\n alertText,\n predefinedValue,\n children,\n ticker,\n tickerPrintable,\n assetDecimalPlaces,\n assetBalance = { fiatAmount: null, assetAmount: null },\n assetIconSrc,\n assetIconProtocolSrc,\n fallbackAssetIconSrc,\n isSendAll = null,\n handleSendAllClick = () => {},\n showBalance = false,\n showBalanceValidation = false,\n showChangeAssetButton = false,\n changeAssetButtonProtocol,\n changeAssetButtonDisabled = false,\n upperFormPosition,\n lowerFormPosition,\n errorEncountered,\n updateAssetInputTo = null,\n estimateAmount = false,\n isLoading = false,\n cryptoAssetToFiatRate = null,\n fiatCurrencyCode = null,\n fiatCurrencyDecimals = null,\n linkButtonActiveText = null,\n linkButtonInactiveText = null,\n balanceLoaderText = null,\n fiatInputPlaceholderText = null,\n },\n buttonForwardRef\n ) => {\n const callHandlingErrors = useCallHandlingErrors();\n\n const [coinAmountValue, setCoinAmountValue] = useState(\"\");\n const [coinAmountPlaceholder, setCoinAmountPlaceholder] = useState(\"0\");\n const [fiatAmountValue, setFiatAmountValue] = useState(\"\");\n const [interactedWith, setInteractedWith] = useState(false);\n const [fiatAmountAutoFocus, setFiatAmountAutoFocus] = useState(false);\n const [isInFocus, setIsInFocus] = useState(false);\n const [highlightBalance, setHighlightBalance] = useState(false);\n const [highlightInput, setHighlightInput] = useState(false);\n\n const resetToDefault = () => {\n setInteractedWith(false);\n setFiatAmountAutoFocus(false);\n };\n\n useEffect(() => {\n if (updateAssetInputTo !== null) handleChangeAmount(updateAssetInputTo?.toString(), false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [updateAssetInputTo]);\n\n const handleChangeAmount = (newAmountString, handlerEnabled = true) => {\n (async () => {\n try {\n const correctedAmount = InputValuesProviders.provideFormatOfFloatValueByInputString(\n newAmountString,\n assetDecimalPlaces\n );\n setCoinAmountValue(correctedAmount);\n if (handlerEnabled) handleCoinAmountChange(correctedAmount);\n\n if (correctedAmount !== \"\" && cryptoAssetToFiatRate != null) {\n const fiatAmount = BigNumber(correctedAmount)\n .times(cryptoAssetToFiatRate)\n .toFixed(fiatCurrencyDecimals);\n setFiatAmountValue(fiatAmount);\n handleFiatAmountChange(fiatAmount);\n } else {\n setFiatAmountValue(\"\");\n }\n } catch (e) {\n setFiatAmountValue(null);\n logErrorOrOutputToConsole(e);\n }\n })();\n setInteractedWith(true);\n };\n\n const handleChangeAmountFiat = newAmountString => {\n if (cryptoAssetToFiatRate == null) return;\n (async () => {\n try {\n const correctedFiatAmount = InputValuesProviders.provideFormatOfFloatValueByInputString(\n newAmountString,\n fiatCurrencyDecimals\n );\n setFiatAmountValue(correctedFiatAmount);\n handleFiatAmountChange(correctedFiatAmount);\n\n const coinAmount =\n correctedFiatAmount !== \"\"\n ? BigNumber(correctedFiatAmount).div(cryptoAssetToFiatRate).toFixed(assetDecimalPlaces)\n : \"0\";\n const coinsAmount = BigNumber(coinAmount).isZero() ? \"\" : coinAmount;\n setCoinAmountValue(coinsAmount);\n handleCoinAmountChange(coinsAmount);\n } catch (e) {\n setFiatAmountValue(null);\n logErrorOrOutputToConsole(e);\n }\n })();\n };\n\n const placeholderByDecimalCount = decimalCount =>\n \"0\" + (decimalCount > 0 ? \".\" + \"0\".repeat(decimalCount) : \"\");\n\n const handleFiatInteraction = () => {\n if (disabled || locked) return;\n setFiatAmountAutoFocus(true);\n setInteractedWith(true);\n };\n\n useEffect(() => {\n predefinedValue != null && handleChangeAmount(predefinedValue + \"\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [predefinedValue]);\n\n useEffect(() => {\n try {\n setCoinAmountPlaceholder(placeholderByDecimalCount(assetDecimalPlaces));\n } catch (e) {\n logErrorOrOutputToConsole(e);\n }\n resetToDefault();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ticker]);\n\n // Check if input & balance highlights are needed after a change in either the asset amount or the balance\n useEffect(() => {\n if (!showBalanceValidation || assetBalance?.assetAmount == null) return;\n\n let enableHighlight = BigNumber(coinAmountValue).gt(assetBalance?.assetAmount);\n\n handleBalanceValidationChange(enableHighlight);\n setHighlightBalance(enableHighlight);\n setHighlightInput(enableHighlight);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [coinAmountValue, assetBalance]);\n\n // Clearing the custom focus upon disabling or enabling the form\n useEffect(() => setIsInFocus(false), [disabled, locked]);\n\n return (\n <>\n <TitleBox\n title={label}\n linkText={isSendAll !== null ? (isSendAll ? linkButtonActiveText : linkButtonInactiveText) : null}\n linkButtonClick={handleSendAllClick}\n >\n <div\n className={[\n s[\"amount-input-container\"],\n isInFocus ? s[\"focus\"] : \"\",\n errorEncountered || highlightInput ? s[\"error-encountered\"] : \"\",\n upperFormPosition ? s[\"upper-form-position\"] : \"\",\n lowerFormPosition ? s[\"lower-form-position\"] : \"\",\n ].join(\" \")}\n >\n <div\n className={`${s[\"amount-input-container-input-wrapper\"]} ${disabled ? s[\"disabled\"] : \"\"}\n ${children ? s[\"bottom-margin\"] : \"\"}`}\n >\n {showBalance ? (\n <div className={s[\"asset-balance\"] + \" \" + (highlightBalance ? s[\"red\"] : \"\")}>\n <WalletIcon />\n <p>\n {assetBalance?.assetAmount != null &&\n assetBalance?.fiatAmount != null &&\n ticker &&\n fiatCurrencyCode ? (\n <>\n {AmountUtils.cryptoFull(\n assetBalance.assetAmount,\n tickerPrintable,\n assetDecimalPlaces\n )}\n <span>\n {\" ~ \" +\n AmountUtils.fiat(assetBalance.fiatAmount, fiatCurrencyCode)}\n </span>\n </>\n ) : (\n balanceLoaderText\n )}\n </p>\n </div>\n ) : (\n \"\"\n )}\n\n <div className={s[\"requested-amount-coin\"]}>\n <span className={s[\"requested-amount-coin-currency\"]}>\n {tickerPrintable ? (estimateAmount ? \"~ \" : \"\") + tickerPrintable : \"\"}\n </span>\n {!isLoading ? (\n <input\n type=\"text\"\n inputMode=\"decimal\"\n value={coinAmountValue}\n onChange={e => handleChangeAmount(e.target.value)}\n placeholder={coinAmountPlaceholder}\n className={s[\"requested-amount-coin-input\"]}\n disabled={disabled || locked}\n onFocus={e => callHandlingErrors(() => setIsInFocus(true), e)}\n onBlur={e => callHandlingErrors(() => setIsInFocus(false), e)}\n />\n ) : (\n <div className={s[\"requested-amount-coin-skeleton\"]}>\n <span\n className={\n s[\"requested-amount-coin-skeleton-content\"] + \" \" + s[\"skeleton-dark\"]\n }\n ></span>\n </div>\n )}\n </div>\n {fiatCurrencyCode !== null ? (\n <>\n <div\n className={\n s[\"requested-amount-fiat\"] + (interactedWith ? \" \" + s[\"interacted\"] : \"\")\n }\n >\n {interactedWith ? (\n <>\n <span className={s[\"requested-amount-fiat-currency\"]}>\n {(estimateAmount ? \"~ \" : \"\") + fiatCurrencyCode}\n </span>\n <input\n type=\"text\"\n inputMode=\"decimal\"\n className={s[\"requested-amount-fiat-input\"]}\n value={fiatAmountValue}\n disabled={disabled || locked}\n onChange={e => handleChangeAmountFiat(e.target.value)}\n placeholder={placeholderByDecimalCount(fiatCurrencyDecimals)}\n autoFocus={fiatAmountAutoFocus}\n onFocus={e => callHandlingErrors(() => setIsInFocus(true), e)}\n onBlur={e => callHandlingErrors(() => setIsInFocus(false), e)}\n />\n </>\n ) : (\n <span\n className={s[\"requested-amount-fiat-placeholder\"]}\n onClick={e => callHandlingErrors(() => handleFiatInteraction(), e)}\n >\n {fiatInputPlaceholderText}\n </span>\n )}\n </div>\n </>\n ) : null}\n </div>\n {showChangeAssetButton && ticker ? (\n <div className={s[\"amount-input-container-button-wrapper\"]} ref={buttonForwardRef}>\n <AssetSelection\n assetIconSrc={assetIconSrc}\n assetIconProtocolSrc={assetIconProtocolSrc}\n fallbackSrc={fallbackAssetIconSrc}\n handleClick={handleChangeAssetClick}\n disabled={changeAssetButtonDisabled}\n protocolName={changeAssetButtonProtocol}\n />\n </div>\n ) : (\n \"\"\n )}\n {children}\n </div>\n </TitleBox>\n {alertText ? <Validation text={alertText} /> : null}\n </>\n );\n }\n);\n","import React, { forwardRef } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./textarea.module.scss\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors\";\nimport { Validation } from \"../Validation/Validation\";\n\n/**\n * A textarea component with optional adaptive height and validation messaging.\n *\n * @param {string} name - The name of the textarea.\n * @param {function} onChange - Handler for change events.\n * @param {string} placeholder - Placeholder text for the textarea.\n * @param {string} alertText - Text for the alert message.\n * @param {string} successAlertText - Text for the success alert message.\n * @param {string} value - Value of the textarea.\n * @param {string} label - Label text for the textarea.\n * @param {string|null} id - ID for the textarea element.\n * @param {boolean} autoFocus - If the textarea should be auto-focused.\n * @param {boolean} fullHeight - If the textarea should be full height.\n * @param {boolean} smallText - If the textarea should use small text styling.\n * @param {boolean} adaptiveHeight - If the textarea should adjust its height based on content.\n * @param {boolean} disabled - If the textarea is disabled.\n * @param {boolean} errorEncountered - If there is an error related to the textarea.\n * @param {boolean} ignoreEnter - If Enter key presses should be ignored.\n */\nexport const Textarea = forwardRef(\n (\n {\n name = \"\",\n onChange = () => {},\n placeholder = \"\",\n alertText = \"\",\n successAlertText = \"\",\n value = \"\",\n label = \"\",\n id = null,\n autoFocus = false,\n fullHeight = false,\n smallText = false,\n adaptiveHeight = false,\n disabled = false,\n errorEncountered = false,\n ignoreEnter = false,\n },\n ref\n ) => {\n const callHandlingErrors = useCallHandlingErrors();\n\n const onChangeProxy = e => {\n if (ignoreEnter) e.target.value = e.target.value.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n\n if (e.target?.value.indexOf(\"\\n\") === -1 || !ignoreEnter) onChange(e);\n };\n\n return (\n <div className={s[\"textarea\"] + ` ${fullHeight ? \" \" + s[\"full-height\"] : \"\"}`}>\n {label ? (\n <label htmlFor={id} className={s[\"textarea-input-label\"]}>\n {label}\n </label>\n ) : null}\n\n {adaptiveHeight ? (\n <TextareaAutosize\n className={\n s[\"textarea-input\"] +\n \" \" +\n s[\"adaptive-height\"] +\n (disabled ? \" \" + s[\"disabled\"] : \"\") +\n (errorEncountered ? \" \" + s[\"error-encountered\"] : \"\")\n }\n minRows={1}\n maxRows={3}\n onChange={e => callHandlingErrors(onChangeProxy, e)}\n placeholder={placeholder}\n value={value}\n id={id}\n autoFocus={autoFocus}\n ref={ref}\n disabled={disabled}\n />\n ) : (\n <textarea\n name={name}\n className={\n s[\"textarea-input\"] +\n ` ${fullHeight ? s[\"full-height\"] : \"\"} ${smallText ? s[\"small-text\"] : \"\"} ${\n disabled ? s[\"disabled\"] : \"\"\n }`\n }\n onChange={e => callHandlingErrors(onChange, e)}\n placeholder={placeholder}\n value={value}\n id={id}\n autoFocus={autoFocus}\n ref={ref}\n disabled={disabled}\n />\n )}\n\n {alertText || successAlertText ? (\n <Validation text={alertText || successAlertText} isSuccessAlert={!alertText} />\n ) : null}\n </div>\n );\n }\n);\n\nTextarea.propTypes = {\n name: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n alertText: PropTypes.string,\n successAlertText: PropTypes.string,\n value: PropTypes.string,\n label: PropTypes.string,\n id: PropTypes.string,\n autoFocus: PropTypes.bool,\n fullHeight: PropTypes.bool,\n smallText: PropTypes.bool,\n adaptiveHeight: PropTypes.bool,\n disabled: PropTypes.bool,\n errorEncountered: PropTypes.bool,\n ignoreEnter: PropTypes.bool,\n};\n\nTextarea.defaultProps = {\n name: \"\",\n onChange: () => {},\n placeholder: \"\",\n alertText: \"\",\n successAlertText: \"\",\n value: \"\",\n label: \"\",\n id: null,\n autoFocus: false,\n fullHeight: false,\n smallText: false,\n adaptiveHeight: false,\n disabled: false,\n errorEncountered: false,\n ignoreEnter: false,\n};\n","import React from \"react\";\n\nimport s from \"./rate-selector.module.scss\";\n\nexport const RateSelector = ({\n isFixed = false,\n setIsFixed = () => {},\n translations = {\n floatingRate: \"Floating rate\",\n fixedRate: \"Fixed rate\",\n },\n}) => {\n return (\n <div className={s[\"rate-selector\"]}>\n <div\n className={`${s[\"rate-selector-item\"]} ${!isFixed ? s[\"selected\"] : \"\"}`}\n onClick={() => setIsFixed(false)}\n >\n <div className={s[\"rate-selector-item-text\"]}>{translations.floatingRate}</div>\n </div>\n <div\n className={`${s[\"rate-selector-item\"]} ${isFixed ? s[\"selected\"] : \"\"}`}\n onClick={() => setIsFixed(true)}\n >\n <div className={s[\"rate-selector-item-text\"]}>{translations.fixedRate}</div>\n </div>\n </div>\n );\n};\n","import { BigNumber } from \"bignumber.js\";\nimport React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./swap-form.module.scss\";\n\nimport { useReferredState } from \"../../hooks/useReferredState.js\";\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\n\nimport { AmountUtils } from \"../../../common/amountUtils.js\";\nimport { TitleBox } from \"../../atoms/TitleBox/TitleBox.jsx\";\nimport { AmountInput } from \"../../molecules/AmountInput/AmountInput.jsx\";\nimport { Validation } from \"../../atoms/Validation/Validation.jsx\";\nimport { Button } from \"../../atoms/buttons/Button/Button.jsx\";\nimport { Textarea } from \"../../atoms/Textarea/Textarea.jsx\";\nimport { TOOLTIP_POSITIONS } from \"../../../constants/atoms/Tooltip/tooltip.jsx\";\nimport { RateSelector } from \"../../atoms/RateSelector/RateSelector.jsx\";\n\n/**\n * This is the type definition of a function used inside SwapForm to compose the URL for the hero button.\n *\n * @function\n * @name composeConfirmButtonTo\n * @param {string} [fromTicker] - Ticker symbol of the asset being sent.\n * @param {string} [toTicker] - Ticker symbol of the asset being received.\n * @param {string} [fromAmount] - Amount of the asset being sent.\n * @return {string} Full URL or relative URL that can be used for <a href=\"...\" />.\n */\n\n/**\n * Common click handler without parameters and return value, just your logic execution.\n *\n * @function\n * @name handleClick\n * @return {void}\n */\n\n/**\n * Form executes this function when swap creation info retrieval is finished successfully.\n *\n * @function\n * @name setSwapCreationEstimation\n * @param {BaseSwapCreationInfo} details - Details of the swap creation estimation.\n * @return {void}\n */\n\n/**\n * Error handler for unexpected errors.\n *\n * @function\n * @name handleUnexpectedError\n * @param {Error} error - The unexpected error encountered.\n * @return {void}\n */\n\n/**\n * Should implement the logic with rotating assets (if you want \"to\" to become \"from\" and \"from\" to become \"to\").\n *\n * @function\n * @name rotateAssets\n * @param {string} sendingAssetTicker - Ticker symbol of the asset being sent.\n * @param {string} receivingAssetTicker - Ticker symbol of the asset being received.\n * @return {void}\n */\n\n/**\n * Error handler for standard errors that we can recognize.\n *\n * @function\n * @name handleSwapServiceError\n * @param {string} errorCode - Error code returned as \"reason\" from your handlers.\n * @param {function} setValidationContent - Function to set the validation error message on the form.\n * @param {function} setBalanceValid - Function to set the balance validity, accepts a boolean.\n * @param {function} setMinimalAmountValid - Function to set the minimal amount validity, accepts a boolean.\n * @param {function} setMaximumAmountValid - Function to set the maximum amount validity, accepts a boolean.\n * @param {function} setIsPairSupported - Function to set the pair support status, accepts a boolean.\n * @param {function} setIsSameCoins - Function to set the status if the same coins are used, accepts a boolean.\n * @return {void}\n */\n\n/**\n * Handler for the confirm button click. You should implement errors handling inside it.\n *\n * @function\n * @name handleConfirmButtonClick\n * @param {function} resetButtonLoader - callback resetting the confirm button loader\n * @param {function} setValidationContent - Function to set the validation error message on the form.\n * @param {function} setBalanceValid - Function to set the balance validity, accepts a boolean.\n * @param {function} setMinimalAmountValid - Function to set the minimal amount validity, accepts a boolean.\n * @param {function} setMaximumAmountValid - Function to set the maximum amount validity, accepts a boolean.\n * @param {function} setIsPairSupported - Function to set the pair support status, accepts a boolean.\n * @param {function} setIsSameCoins - Function to set the status if the same coins are used, accepts a boolean.\n * @return {void}\n */\n\n/**\n * Async function that retrieves swap creation info by given params.\n *\n * @function\n * @name retrieveSwapDetails\n * @param {string} sendingAssetTicker - Ticker symbol of the asset being sent.\n * @param {string} receivingAssetTicker - Ticker symbol of the asset being received.\n * @param {string} amount - Amount of the asset to be swapped.\n * @param {boolean} [isSwapAll=false] - Indicates if the swap should use all available balance.\n * @return {Promise<{\n * result: false,\n * reason: string,\n * min: (string|null),\n * max: (string|null),\n * rate: (string|undefined),\n * fiatMin: (number|null),\n * fiatMax: (number|null)\n * }|{\n * result: true,\n * swapCreationInfo: BaseSwapCreationInfo\n * }>}\n */\n\n/**\n * Async function that retrieves initial swap details for a pair like whether the pair is available, min/max swappable amounts, etc.\n *\n * @function\n * @name retrieveInitialSwapData\n * @param {string} sendingAssetTicker - Ticker symbol of the asset being sent.\n * @param {string} receivingAssetTicker - Ticker symbol of the asset being received.\n * @return {Promise<{\n * result: true,\n * min: string,\n * fiatMin: (number|null),\n * max: string,\n * fiatMax: (number|null),\n * rate: (string|null)\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n\n/**\n * Swap form provides basic functionality for entering to/from amounts both in crypto and fiat, switching assets,\n * selecting assets, showing balance for assets. It gracefully handles unavailable fiat rates and can work\n * both with and without a wallet environment (without balances).\n *\n * @param {object} props - Props object for SwapForm component.\n * @param {string} props.sendingAssetTicker - Rabbit format of the ticker symbol for the asset being sent.\n * @param {string} props.receivingAssetTicker - Rabbit format of the ticker symbol for the asset being received.\n * @param {number} [props.sendingAssetDecimalCount=AmountUtils.significantDecimalCount] - Decimal count for the sending asset.\n * @param {number} [props.receivingAssetDecimalCount=AmountUtils.significantDecimalCount] - Decimal count for the receiving asset.\n * @param {string} props.sendingAssetTickerPrintable - Standard ticker symbol for the sending asset.\n * @param {string} props.receivingAssetTickerPrintable - Standard ticker symbol for the receiving asset.\n * @param {string} [props.sendingAssetProtocol] - Protocol name to be displayed in text on the change asset button.\n * @param {string} [props.receivingAssetProtocol] - Protocol name to be displayed in text on the change asset button.\n * @param {string} props.sendingAssetIconSrc - Source URL for the sending asset icon.\n * @param {string} [props.sendingAssetProtocolIconSrc=null] - Optional source URL for the sending asset protocol icon.\n * @param {string} props.receivingAssetIconSrc - Source URL for the receiving asset icon.\n * @param {string} [props.receivingAssetProtocolIconSrc=null] - Optional source URL for the receiving asset protocol icon.\n * @param {string} [props.fallBackAssetIconSrc=null] - Optional source URL for a fallback icon used when an icon fails to load.\n * @param {string} [props.sendingAssetFeeCoinTickerPrintable] - Optional standard ticker symbol for the fee coin of the sending asset.\n * @param {string} [props.sendingAssetBalance] - Balance of the sending asset.\n * @param {string} [props.receivingAssetBalance] - Balance of the receiving asset.\n * @param {handleClick} props.handleChangeSendingAssetClick - Function to handle clicking on the change sending asset button.\n * @param {handleClick} props.handleChangeReceivingAssetClick - Function to handle clicking on the change receiving asset button.\n * @param {handleConfirmButtonClick} props.handleConfirmButtonClick - Function to handle clicking on the confirm button.\n * @param {composeConfirmButtonTo} props.composeConfirmButtonTo - Function to compose the URL for the confirm button.\n * @param {setSwapCreationEstimation} props.setSwapCreationEstimation - Function to set the swap creation estimation.\n * @param {handleUnexpectedError} props.handleUnexpectedError - Function to handle unexpected errors.\n * @param {rotateAssets} props.rotateAssets - Function to rotate the assets (swap sending and receiving assets).\n * @param {string} [props.preservedAmount=null] - Amount to be preserved.\n * @param {handleSwapServiceError} props.handleSwapServiceError - Function to handle standard errors that we can recognize.\n * @param {boolean} [props.formHasBalance] - Indicates if the form has balance information.\n * @param {retrieveSwapDetails} props.retrieveSwapDetails - Function to retrieve swap details based on the given parameters.\n * @param {retrieveInitialSwapData} props.retrieveInitialSwapData - Function to retrieve initial swap data for a given pair of assets.\n * @param {number} props.triggerDataUpdateResetting - Number to reset interval updating the data periodically.\n * @param {React.Ref} props.fromAssetSelectionButtonRef - Reference to the from asset selection button.\n * @param {React.Ref} props.toAssetSelectionButtonRef - Reference to the to asset selection button.\n * @param {number|string} [props.sendingAssetToFiatRate] - Rate for converting the sending asset to fiat.\n * @param {number|string} [props.receivingAssetToFiatRate] - Rate for converting the receiving asset to fiat.\n * @param {string} [props.fiatCurrencyCode] - Code for the fiat currency.\n * @param {number} [props.fiatCurrencyDecimals] - Decimal places for the fiat currency.\n * @param {boolean} [props.formHasFiat] - Indicates if the form supports fiat currency.\n * @param {string|null} [props.termsOfUseUrl] - Terms of use URL, shown only if both terms & privacy policy passed.\n * @param {string|null} [props.privacyPolicyUrl] - Privacy policy of use URL, shown only if both terms & privacy policy passed.\n * @param {object} [props.translations] - Object containing translations, default English texts will be used if omitted.\n * @param {string} props.swapSeparatorIconSrc - Source URL for the swap separator icon.\n * @param {boolean} props.swapButtonAlwaysActive - Setting that allows the form state to proceed to the next step regardless of validity.\n * @return {JSX.Element} Rendered SwapForm component.\n * @constructor\n */\nexport const SwapForm = ({\n sendingAssetTicker,\n receivingAssetTicker,\n sendingAssetDecimalCount = AmountUtils.significantDecimalCount,\n receivingAssetDecimalCount = AmountUtils.significantDecimalCount,\n sendingAssetTickerPrintable,\n receivingAssetTickerPrintable,\n sendingAssetProtocol,\n receivingAssetProtocol,\n sendingAssetIconSrc,\n sendingAssetProtocolIconSrc = null,\n receivingAssetIconSrc,\n receivingAssetProtocolIconSrc = null,\n fallBackAssetIconSrc = null,\n sendingAssetFeeCoinTickerPrintable,\n sendingAssetBalance,\n receivingAssetBalance,\n handleChangeSendingAssetClick,\n handleChangeReceivingAssetClick,\n handleConfirmButtonClick = (\n resetButtonLoader,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n ) => {},\n composeConfirmButtonTo = (fromTicker, toTicker, fromAmount) => \"\",\n setSwapCreationEstimation = details => {},\n handleUnexpectedError = error => {},\n rotateAssets = (fromTicker, toTicker) => {},\n preservedAmount = null,\n handleSwapServiceError = (\n errorCode,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n ) => {},\n formHasBalance = false,\n retrieveSwapDetails = async (sendingAssetTicker, receivingAssetTicker, amount, isSwapAll = false) => {},\n retrieveInitialSwapData = async (sendingAssetTicker, receivingAssetTicker) => {},\n triggerDataUpdateResetting = 0,\n fromAssetSelectionButtonRef = null,\n toAssetSelectionButtonRef = null,\n sendingAssetToFiatRate = null,\n receivingAssetToFiatRate = null,\n fiatCurrencyCode = null,\n fiatCurrencyDecimals = null,\n formHasFiat = true,\n termsOfUseUrl = null,\n privacyPolicyUrl = null,\n translations = {\n swapAllButtonTitles: {\n enable: \"Swap all\",\n cancel: \"Cancel\",\n },\n input: {\n fiatPlaceholder: \"Enter fiat amount\",\n balanceLoaderText: \"Loading balance...\",\n },\n consents: {\n consentText: 'By clicking \"Swap\" you agree with Rabbit Swap\\'s',\n termsOfUse: \"Terms of Use\",\n and: \"and\",\n privacyPolicy: \"Privacy Policy\",\n },\n informationBlock: {\n minimumAmount: \"Minimal amount: \",\n maximumAmount: \"Maximum amount: \",\n transactionFee: \"Network fee: \",\n calculatingNetworkFee: \"Calculating network fee..\",\n loadingMinimalAmount: \"Loading minimal amount..\",\n swapRate: \"Rate: \",\n calculatingSwapRates: \"Calculating swap rates..\",\n pairNotAvailable: \"Pair is not available now. Please, try again later or choose another pair.\",\n },\n addressFields: {\n addressTitle: \"Recepient address\",\n extraIdTitle: \"Extra ID (optional)\",\n extraIdPlaceholder: \"Example: ABC123\",\n extraIdNotice:\n \"Please check if your recipient address requires a 'Memo' or 'Destination Tag' - sometimes called a tag, ID, label, or a note. Exchanges may require such ID for the deposit. Including this identifier is crucial when required, as omitting or misentering it can result in lost assets.\",\n },\n rateSelector: {\n floatingRate: \"Floating rate\",\n fixedRate: \"Fixed rate\",\n },\n confirmButtonText: \"Swap\",\n },\n swapSeparatorIconSrc,\n swapButtonAlwaysActive = false,\n recepientAddress,\n recepientAddressExtraId,\n recepientAddressValid = true,\n recepientAddressExtraIdValid = true,\n setRecepientAddress,\n setRecepientAddressExtraId,\n recepientAddressExtraIdAvailable = false,\n displayRateSelector = false,\n}) => {\n const DETAIL_REFRESH_INTERVAL_MS = 1.5 * 60000;\n const IS_FIXED_BY_DEFAULT = false;\n\n // Updating the states below will insert the new value into the send or receive input field\n const [updateSendInputTo, setUpdateSendInputTo] = useState(preservedAmount ?? null);\n const [updateReceiveInputTo, setUpdateReceiveInputTo] = useState(null);\n\n const [sendAssetAmount, setSendAssetAmount] = useReferredState(\n preservedAmount == null || preservedAmount === \"\" ? null : preservedAmount\n );\n\n const [swapRate, setSwapRate] = useState();\n const [minimalAmount, setMinimalAmount] = useReferredState(null);\n const [maximumAmount, setMaximumAmount] = useReferredState(null);\n const [validationContent, setValidationContent] = useState();\n\n const [minimalAmountValid, setMinimalAmountValid] = useState(true); // Whether the amount is above the minimal amount\n const [maximumAmountValid, setMaximumAmountValid] = useState(true);\n const [isPairSupported, setIsPairSupported] = useState(true);\n const [isSameCoins, setIsSameCoins] = useState(false);\n const [isSwapCalculated, setIsSwapCalculated] = useState(false);\n const [readyToSwap, setReadyToSwap] = useState(false); // Basically a param that enables/disables the \"Next\" button\n // TODO: [refactoring, moderate] instead of handling preservedAmount at a lot of cases below, just\n // write single useEffect setting sendAssetAmount to the=is passed value and simplify the logic below. task_id=6453251e49b04c5e88a3cc771479ffb5\n const [isAmountZero, setIsAmountZero] = useState(preservedAmount == null || String(preservedAmount) === \"0\");\n const [isLoading, setIsLoading] = useReferredState(false); // Whether the form is in the progress of loading some data (new rates, for example)\n const [isAddressFieldEnabled, setIsAddressFieldEnabled] = useState(false);\n const [isFixedRate, setIsFixedRate] = useReferredState(null);\n\n const [confirmButtonTo, setConfirmButtonTo] = useState(\n composeConfirmButtonTo(sendingAssetTicker, receivingAssetTicker, preservedAmount)\n );\n\n const [transactionFee, setTransactionFee] = useState();\n const [balanceValid, setBalanceValid] = useState(true); // Whether the amount is less than total balance\n const [isSwapAll, setIsSwapAll] = useReferredState(null);\n const [swapAllButtonLoaderReSetter, setSwapAllButtonLoaderReSetter] = useState([]);\n\n const [dataUpdateTimeoutId, setDataUpdateTimeoutId] = useReferredState(null);\n const [idleDataUpdateTimeoutId, setIdleDataUpdateTimeoutId] = useReferredState(null);\n\n const callHandlingErrors = useCallHandlingErrors();\n\n const recalculationDelayOnTyping = 1000;\n\n const handleSendAssetAmountChange = amount => {\n if (amount != null && amount !== \"\") {\n setUpdateReceiveInputTo(AmountUtils.trim(BigNumber(amount).times(swapRate), receivingAssetDecimalCount));\n } else {\n setUpdateReceiveInputTo(\"\");\n }\n setSendAssetAmount(amount);\n };\n\n const handleReceiveAssetAmountChange = amount => {\n let sendAssetAmount = \"\";\n if (amount != null && amount !== \"\") {\n sendAssetAmount = AmountUtils.trim(BigNumber(amount).div(swapRate), sendingAssetDecimalCount);\n }\n setUpdateSendInputTo(sendAssetAmount);\n setSendAssetAmount(sendAssetAmount);\n };\n\n const handleMinimalAmountClick = () => {\n if (!minimalAmount.current) return;\n\n setUpdateSendInputTo(minimalAmount.current?.crypto);\n handleSendAssetAmountChange(minimalAmount.current?.crypto);\n };\n\n const handleMaximumAmountClick = () => {\n if (!maximumAmount.current) return;\n\n setUpdateSendInputTo(maximumAmount.current?.crypto);\n handleSendAssetAmountChange(maximumAmount.current?.crypto);\n };\n\n const handleSwapAllClick = resetButtonLoader => {\n setIsSwapAll(prev => {\n if (prev) {\n // Setting amount inputs to empty string if we are handling the disabling of previously enabled swap all\n setUpdateSendInputTo(\"\");\n setUpdateReceiveInputTo(\"\");\n setSendAssetAmount(null);\n }\n return !prev;\n });\n setSwapAllButtonLoaderReSetter([resetButtonLoader]);\n };\n\n const processMinMaxAmounts = amount => {\n if (amount === null) return;\n\n setMaximumAmountValid(\n !maximumAmount.current || BigNumber(amount).eq(\"0\") || BigNumber(amount).lte(maximumAmount.current.crypto)\n );\n setMinimalAmountValid(\n !minimalAmount.current || BigNumber(amount).eq(\"0\") || BigNumber(amount).gte(minimalAmount.current?.crypto)\n );\n };\n\n const requestDataRefresh = (amount, immediately = false, isSwapAll = false) => {\n try {\n clearTimeout(dataUpdateTimeoutId.current);\n\n if (isSwapAll) {\n loadFullEstimation(null);\n return;\n }\n\n if (!amount) {\n return;\n }\n\n if (BigNumber(amount).eq(\"0\")) {\n if (immediately) {\n loadMinimalAmountAndSwapRate(true);\n } else {\n setDataUpdateTimeoutId(\n setTimeout(() => loadMinimalAmountAndSwapRate(true), recalculationDelayOnTyping)\n );\n }\n } else {\n if (immediately) {\n loadFullEstimation(amount, preservedAmount && String(preservedAmount) !== \"0\" ? true : undefined);\n } else {\n setDataUpdateTimeoutId(setTimeout(() => loadFullEstimation(amount), recalculationDelayOnTyping));\n }\n }\n } catch (e) {\n handleUnexpectedError(e);\n }\n };\n\n const setAmountLimitsAndRate = details => {\n setSwapRate(details?.rate ?? null);\n setMinimalAmount(details.min == null ? null : { crypto: details.min, fiat: details.fiatMin });\n setMaximumAmount(details.max == null ? null : { crypto: details.max, fiat: details.fiatMax });\n if (details.feeCoins != null) {\n setTransactionFee({\n crypto: details.feeCoins,\n fiat: details.feeFiat,\n });\n } else {\n setTransactionFee(null);\n }\n };\n\n const loadFullEstimation = (amount, isForPreserved = false) => {\n (async () => {\n try {\n const dataMemento = {\n rate: swapRate,\n min: minimalAmount.current?.crypto,\n max: maximumAmount.current?.crypto,\n feeCoins: transactionFee?.crypto,\n feeFiat: transactionFee?.fiat,\n };\n setIsLoading(true);\n setMinimalAmount(null);\n setMaximumAmount(null);\n setTransactionFee(null);\n setValidationContent(null);\n setSwapCreationEstimation(null);\n setIsSameCoins(false);\n setIsPairSupported(true);\n setIsSwapCalculated(false);\n\n const response = await retrieveSwapDetails(\n sendingAssetTicker,\n receivingAssetTicker,\n amount,\n isSwapAll.current,\n isFixedRate.current ?? IS_FIXED_BY_DEFAULT\n );\n\n if (\n !isSwapAll.current &&\n String(amount) !==\n String(\n isForPreserved && sendAssetAmount.current == null\n ? preservedAmount\n : sendAssetAmount.current\n )\n ) {\n // Means amount changed and we no more need to do this exact calculation\n return;\n }\n\n if (response.result) {\n const swapCreationInfo = response.swapCreationInfo;\n\n setUpdateSendInputTo(swapCreationInfo.fromAmountCoins);\n setUpdateReceiveInputTo(swapCreationInfo.toAmountCoins);\n\n if (isSwapAll.current) {\n setIsAmountZero(BigNumber(\"0\").eq(swapCreationInfo.fromAmountCoins));\n }\n\n setAmountLimitsAndRate(swapCreationInfo);\n setSwapCreationEstimation(swapCreationInfo);\n processMinMaxAmounts(isSwapAll.current ? swapCreationInfo.fromAmountCoins : amount);\n setIsSwapCalculated(true);\n } else {\n handleSwapServiceError(\n response.reason,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n );\n if (isSwapAll.current) {\n /* We disable swap all if swap all details retrieval fails and set\n * previous limits and rate. We set null to avoid triggering reloading of initial data.\n */\n setIsSwapAll(null);\n setAmountLimitsAndRate(dataMemento);\n } else {\n /* We set returned amount limits and rate only if the failed details retrieval is not\n * for the swap All case.\n */\n setAmountLimitsAndRate(response);\n }\n }\n setIsLoading(false);\n } catch (e) {\n handleUnexpectedError(e);\n }\n })();\n };\n\n const loadMinimalAmountAndSwapRate = (isCalledForClearedInput = false) => {\n (async () => {\n try {\n setIsLoading(true);\n setMinimalAmount(null);\n setMaximumAmount(null);\n setSwapRate(null);\n setValidationContent(null);\n setIsPairSupported(true);\n setIsSwapCalculated(false);\n\n const swapData = await retrieveInitialSwapData(sendingAssetTicker, receivingAssetTicker);\n\n if (sendAssetAmount.current != null && !isCalledForClearedInput) {\n // Means user already entered amount after starting the form initialization\n return;\n }\n\n if (swapData.result === true) {\n setAmountLimitsAndRate(swapData);\n } else {\n handleSwapServiceError(\n swapData.reason,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n );\n }\n\n setIsLoading(false);\n } catch (e) {\n handleUnexpectedError(e);\n }\n })();\n };\n\n const handleChangeAssetsIconClick = e => {\n callHandlingErrors(() => {\n if (!isLoading.current) {\n setIsSwapAll(null);\n setMaximumAmountValid(true);\n setMinimalAmountValid(true);\n rotateAssets(sendingAssetTicker, receivingAssetTicker);\n }\n }, e);\n };\n\n const handleRateModeChanged = isFixed => {\n setIsFixedRate(isFixed);\n requestDataRefresh(sendAssetAmount.current, true);\n };\n\n useEffect(() => {\n if (isSwapAll.current === true) {\n requestDataRefresh(undefined, true, true);\n } else if (isSwapAll.current === false) {\n loadMinimalAmountAndSwapRate();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isSwapAll.current]);\n\n useEffect(() => {\n setConfirmButtonTo(\n composeConfirmButtonTo(\n sendingAssetTicker,\n receivingAssetTicker,\n sendAssetAmount.current || preservedAmount || null\n )\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sendingAssetTicker, receivingAssetTicker]);\n\n useEffect(() => {\n if (!sendingAssetTicker || !receivingAssetTicker) return;\n\n const isCurrentAmountNotZero = sendAssetAmount.current && !BigNumber(\"0\").eq(sendAssetAmount.current);\n const isPreservedAmountNotZero = preservedAmount && !BigNumber(\"0\").eq(preservedAmount);\n if (isCurrentAmountNotZero) {\n loadFullEstimation(sendAssetAmount.current);\n } else if (isPreservedAmountNotZero) {\n loadFullEstimation(preservedAmount, true);\n } else {\n loadMinimalAmountAndSwapRate();\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sendingAssetTicker, receivingAssetTicker]);\n\n useEffect(() => {\n if (!minimalAmountValid || isAmountZero) {\n setTransactionFee(null);\n }\n if (isAmountZero) {\n clearTimeout(dataUpdateTimeoutId.current);\n }\n\n setReadyToSwap(\n swapButtonAlwaysActive ||\n ((balanceValid || !formHasBalance) &&\n minimalAmountValid &&\n !isAmountZero &&\n isSwapCalculated &&\n (!isSameCoins || !formHasBalance) &&\n isPairSupported &&\n (!isAddressFieldEnabled || recepientAddressValid))\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n balanceValid,\n formHasBalance,\n minimalAmountValid,\n isAmountZero,\n isSwapCalculated,\n isSameCoins,\n isPairSupported,\n isAddressFieldEnabled,\n recepientAddressValid,\n ]);\n\n useEffect(() => {\n // Here we set up auto recalculations for the swap details if the form is ready to swap but is idle for some time\n let timeoutId = null;\n if (readyToSwap) {\n timeoutId = setTimeout(\n () => requestDataRefresh(sendAssetAmount.current ?? preservedAmount, true),\n DETAIL_REFRESH_INTERVAL_MS\n );\n setIdleDataUpdateTimeoutId(timeoutId);\n } else {\n clearTimeout(idleDataUpdateTimeoutId.current);\n setIdleDataUpdateTimeoutId(null);\n }\n return () => {\n timeoutId != null && clearTimeout(timeoutId);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [readyToSwap]);\n\n // TODO: [refactoring, critical] this code looks like a hack related to task_id=6e328d39063142b7b9fa01d497e616da\n useEffect(() => {\n if (triggerDataUpdateResetting) {\n clearTimeout(dataUpdateTimeoutId.current);\n setDataUpdateTimeoutId(null);\n\n clearTimeout(idleDataUpdateTimeoutId.current);\n setIdleDataUpdateTimeoutId(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [triggerDataUpdateResetting]);\n\n // Resets the passed \"set value to\" param to null, so it can be used multiple times with any value\n useEffect(() => {\n if (!!updateSendInputTo) setUpdateSendInputTo(null);\n if (!!updateReceiveInputTo) setUpdateReceiveInputTo(null);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [updateSendInputTo, updateReceiveInputTo]);\n\n useEffect(() => {\n if (swapRate != null && sendAssetAmount.current != null) {\n setUpdateReceiveInputTo(\n AmountUtils.trim(BigNumber(sendAssetAmount.current).times(swapRate), receivingAssetDecimalCount)\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [swapRate]);\n\n useEffect(() => {\n if (isLoading.current === false && swapAllButtonLoaderReSetter?.length) {\n swapAllButtonLoaderReSetter[0]();\n setSwapAllButtonLoaderReSetter([]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLoading.current, swapAllButtonLoaderReSetter]);\n\n // Handlers upon changing the asset amount\n useEffect(() => {\n setConfirmButtonTo(composeConfirmButtonTo(sendingAssetTicker, receivingAssetTicker, sendAssetAmount.current));\n\n if (sendAssetAmount.current == null) return;\n let processingAmount = sendAssetAmount.current === \"\" ? \"0\" : sendAssetAmount.current;\n requestDataRefresh(processingAmount);\n processMinMaxAmounts(processingAmount);\n setIsAmountZero(BigNumber(\"0\").eq(processingAmount));\n setIsSwapCalculated(false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sendAssetAmount.current]);\n\n // Checking if all necessary props for address input are passed properly.\n useEffect(() => {\n setIsAddressFieldEnabled(\n recepientAddress !== undefined &&\n recepientAddressExtraId !== undefined &&\n recepientAddressValid !== undefined &&\n setRecepientAddress !== undefined &&\n typeof setRecepientAddress === \"function\" &&\n setRecepientAddressExtraId !== undefined &&\n typeof setRecepientAddressExtraId === \"function\"\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n recepientAddress,\n recepientAddressExtraId,\n recepientAddressValid,\n recepientAddressExtraIdValid,\n setRecepientAddress,\n setRecepientAddressExtraId,\n ]);\n\n return (\n <div className={s[\"swap-form\"]}>\n <TitleBox\n linkButtonClick={\n BigNumber(sendingAssetBalance?.assetAmount).eq(0)\n ? null\n : resetButtonLoader => handleSwapAllClick(resetButtonLoader)\n }\n linkText={\n !formHasBalance\n ? \"\"\n : isSwapAll.current\n ? translations.swapAllButtonTitles.cancel\n : translations.swapAllButtonTitles.enable\n }\n linkButtonLoader={true}\n isLinkButtonDisabled={\n isLoading.current ||\n sendingAssetTicker === receivingAssetTicker ||\n BigNumber(sendingAssetBalance?.assetAmount).eq(0)\n }\n >\n <div className={s[\"swap-form-inputs\"]}>\n <AmountInput\n ticker={sendingAssetTicker}\n tickerPrintable={sendingAssetTickerPrintable}\n assetDecimalPlaces={sendingAssetDecimalCount}\n assetBalance={sendingAssetBalance}\n assetIconSrc={sendingAssetIconSrc}\n assetIconProtocolSrc={sendingAssetProtocolIconSrc}\n fallbackAssetIconSrc={fallBackAssetIconSrc}\n disabled={isSwapAll.current || sendingAssetTicker === null || receivingAssetTicker === null}\n handleCoinAmountChange={handleSendAssetAmountChange}\n handleChangeAssetClick={handleChangeSendingAssetClick}\n handleBalanceValidationChange={isValid => setBalanceValid(!isValid)}\n updateAssetInputTo={updateSendInputTo}\n showBalance={formHasBalance}\n showBalanceValidation={formHasBalance}\n showChangeAssetButton\n changeAssetButtonProtocol={sendingAssetProtocol}\n upperFormPosition\n errorEncountered={!minimalAmountValid}\n ref={fromAssetSelectionButtonRef}\n isLoading={false}\n cryptoAssetToFiatRate={sendingAssetToFiatRate}\n fiatCurrencyCode={formHasFiat ? fiatCurrencyCode : null}\n fiatCurrencyDecimals={fiatCurrencyDecimals}\n balanceLoaderText={translations.input.balanceLoaderText}\n fiatInputPlaceholderText={translations.input.fiatPlaceholder}\n />\n <div\n className={\n s[\"swap-form-inputs-separator\"] +\n \" \" +\n (isLoading.current || sendingAssetTicker === null || receivingAssetTicker === null\n ? s[\"disabled\"]\n : \"\")\n }\n >\n <img\n src={swapSeparatorIconSrc}\n alt=\"swap icon\"\n draggable={false}\n onClick={e => callHandlingErrors(handleChangeAssetsIconClick, e)}\n />\n </div>\n <AmountInput\n ticker={receivingAssetTicker}\n tickerPrintable={receivingAssetTickerPrintable}\n assetDecimalPlaces={receivingAssetDecimalCount}\n assetBalance={receivingAssetBalance}\n assetIconSrc={receivingAssetIconSrc}\n assetIconProtocolSrc={receivingAssetProtocolIconSrc}\n fallbackAssetIconSrc={fallBackAssetIconSrc}\n disabled={isSwapAll.current || sendingAssetTicker === null || receivingAssetTicker === null}\n locked={!formHasBalance}\n handleCoinAmountChange={handleReceiveAssetAmountChange}\n handleChangeAssetClick={handleChangeReceivingAssetClick}\n updateAssetInputTo={updateReceiveInputTo}\n showChangeAssetButton\n changeAssetButtonProtocol={receivingAssetProtocol}\n showBalance={formHasBalance}\n lowerFormPosition\n estimateAmount={!isFixedRate.current}\n ref={toAssetSelectionButtonRef}\n isLoading={isLoading.current}\n cryptoAssetToFiatRate={receivingAssetToFiatRate}\n fiatCurrencyCode={formHasFiat ? fiatCurrencyCode : null}\n fiatCurrencyDecimals={fiatCurrencyDecimals}\n balanceLoaderText={translations.input.balanceLoaderText}\n fiatInputPlaceholderText={translations.input.fiatPlaceholder}\n />\n </div>\n <div className={s[\"swap-form-information-field\"]}>\n {/* TODO: [refactoring, moderate] Add flags calculation for each message to avoid this ugly cumbersome implicit unclear logic of message displaying. task_id=8bc31dbcd94d46a598346e8bfb505971 */}\n <p>\n {!isPairSupported ? (\n translations.informationBlock.pairNotAvailable\n ) : transactionFee && minimalAmountValid ? (\n <>\n {translations.informationBlock.transactionFee}\n <span>\n {AmountUtils.crypto(transactionFee?.crypto, sendingAssetFeeCoinTickerPrintable)}\n </span>\n {transactionFee?.fiat != null && transactionFee?.fiat !== \"\" ? (\n <span className={s[\"semi-transparent\"]}>\n {\" ~ \" + AmountUtils.fiat(transactionFee?.fiat, fiatCurrencyCode)}\n </span>\n ) : (\n \"\"\n )}\n </>\n ) : !isLoading.current && (isSwapCalculated || (!minimalAmount.current && swapRate)) ? (\n <>\n {translations.informationBlock.swapRate}\n <span>\n {AmountUtils.composeRateText(\n sendingAssetTickerPrintable,\n receivingAssetTickerPrintable,\n swapRate,\n receivingAssetDecimalCount,\n isFixedRate.current ?? IS_FIXED_BY_DEFAULT\n )}\n </span>\n </>\n ) : minimalAmount.current || maximumAmount.current ? (\n !maximumAmountValid && maximumAmount.current != null ? (\n <>\n {translations.informationBlock.maximumAmount}\n <span\n className={s[\"interactable\"] + \" \" + s[\"red\"]}\n onClick={\n isLoading.current\n ? () => {}\n : e => callHandlingErrors(handleMaximumAmountClick, e)\n }\n >\n {AmountUtils.crypto(maximumAmount.current?.crypto, sendingAssetTickerPrintable)}\n </span>\n {maximumAmount.current?.fiat != null && maximumAmount.current?.fiat !== \"\" ? (\n <span className={s[\"semi-transparent\"]}>\n {\" ~ \" + AmountUtils.fiat(maximumAmount.current.fiat, fiatCurrencyCode)}\n </span>\n ) : (\n \"\"\n )}\n </>\n ) : (\n <>\n {translations.informationBlock.minimumAmount}\n <span\n className={s[\"interactable\"] + \" \" + (!minimalAmountValid ? s[\"red\"] : \"\")}\n onClick={\n isLoading.current\n ? () => {}\n : e => callHandlingErrors(handleMinimalAmountClick, e)\n }\n >\n {AmountUtils.crypto(minimalAmount.current.crypto, sendingAssetTickerPrintable)}\n </span>\n {minimalAmount.current?.fiat != null && minimalAmount.current.fiat !== \"\" ? (\n <span className={s[\"semi-transparent\"]}>\n {\" ~ \" + AmountUtils.fiat(minimalAmount.current.fiat, fiatCurrencyCode)}\n </span>\n ) : (\n \"\"\n )}\n </>\n )\n ) : isLoading.current ? (\n sendAssetAmount.current || isSwapAll.current ? (\n translations.informationBlock[\n formHasBalance ? \"calculatingNetworkFee\" : \"calculatingSwapRates\"\n ]\n ) : (\n translations.informationBlock.loadingMinimalAmount\n )\n ) : (\n \"\"\n )}\n </p>\n </div>\n\n {isAddressFieldEnabled ? (\n <div className={s[\"swap-form-address-field\"]}>\n <TitleBox title={translations.addressFields.addressTitle}>\n <Textarea\n type={\"text\"}\n onChange={e => setRecepientAddress(e.target.value)}\n value={recepientAddress}\n adaptiveHeight={true}\n errorEncountered={!recepientAddressValid && recepientAddress !== \"\"}\n />\n </TitleBox>\n {recepientAddressExtraIdAvailable ? (\n <TitleBox\n title={translations.addressFields.extraIdTitle}\n titleNoticeText={translations.addressFields.extraIdNotice}\n titleNoticePosition={TOOLTIP_POSITIONS.TOP_LEFT}\n >\n <Textarea\n type={\"text\"}\n onChange={e => setRecepientAddressExtraId(e.target.value)}\n value={recepientAddressExtraId}\n adaptiveHeight={true}\n errorEncountered={!recepientAddressExtraIdValid}\n placeholder={translations.addressFields.extraIdPlaceholder}\n />\n </TitleBox>\n ) : (\n \"\"\n )}\n </div>\n ) : (\n \"\"\n )}\n\n {displayRateSelector ? (\n <div className={s[\"swap-form-rate-selector\"]}>\n <RateSelector\n isFixed={isFixedRate.current ?? IS_FIXED_BY_DEFAULT}\n setIsFixed={!isLoading.current ? handleRateModeChanged : () => {}}\n translations={translations.rateSelector}\n />\n </div>\n ) : (\n \"\"\n )}\n\n {validationContent ? (\n <div className={s[\"swap-form-validation-text\"]}>\n <Validation text={validationContent} />\n </div>\n ) : (\n \"\"\n )}\n <div className={s[\"swap-form-button-container\"]}>\n {!termsOfUseUrl || !privacyPolicyUrl ? null : (\n <p className={s[\"swap-form-button-container-consent-text\"]}>\n {translations.consents.consentText + \" \"}\n <a\n href={termsOfUseUrl}\n className={s[\"swap-form-button-container-consent-text-link\"]}\n target=\"_blank\"\n >\n {translations.consents.termsOfUse}\n </a>\n {\" \" + translations.consents.and + \" \"}\n <a\n href={privacyPolicyUrl}\n className={s[\"swap-form-button-container-consent-text-link\"]}\n target=\"_blank\"\n >\n {translations.consents.privacyPolicy}\n </a>\n .\n </p>\n )}\n <Button\n size=\"lg\"\n mode=\"primary\"\n content={translations.confirmButtonText}\n onClick={resetButtonLoader =>\n handleConfirmButtonClick(\n resetButtonLoader,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n )\n }\n fullWidthOnMobiles\n isDisabled={!readyToSwap}\n to={formHasBalance ? \"\" : confirmButtonTo}\n loader\n handleError={callHandlingErrors}\n />\n </div>\n </TitleBox>\n </div>\n );\n};\n\nSwapForm.propTypes = {\n sendingAssetTicker: PropTypes.string.isRequired,\n receivingAssetTicker: PropTypes.string.isRequired,\n sendingAssetDecimalCount: PropTypes.number,\n receivingAssetDecimalCount: PropTypes.number,\n sendingAssetTickerPrintable: PropTypes.string.isRequired,\n receivingAssetTickerPrintable: PropTypes.string.isRequired,\n sendingAssetProtocol: PropTypes.string,\n receivingAssetProtocol: PropTypes.string,\n sendingAssetIconSrc: PropTypes.string.isRequired,\n sendingAssetProtocolIconSrc: PropTypes.oneOfType([PropTypes.string, null]),\n receivingAssetIconSrc: PropTypes.string.isRequired,\n receivingAssetProtocolIconSrc: PropTypes.oneOfType([PropTypes.string, null]),\n fallBackAssetIconSrc: PropTypes.oneOfType([PropTypes.string, null]),\n sendingAssetFeeCoinTickerPrintable: PropTypes.string,\n sendingAssetBalance: PropTypes.string,\n receivingAssetBalance: PropTypes.string,\n handleChangeSendingAssetClick: PropTypes.func.isRequired,\n handleChangeReceivingAssetClick: PropTypes.func.isRequired,\n handleConfirmButtonClick: PropTypes.func,\n composeConfirmButtonTo: PropTypes.func,\n setSwapCreationEstimation: PropTypes.func,\n handleUnexpectedError: PropTypes.func,\n rotateAssets: PropTypes.func,\n preservedAmount: PropTypes.oneOfType([PropTypes.string, null]),\n handleSwapServiceError: PropTypes.func.isRequired,\n formHasBalance: PropTypes.bool,\n retrieveSwapDetails: PropTypes.func.isRequired,\n retrieveInitialSwapData: PropTypes.func.isRequired,\n triggerDataUpdateResetting: PropTypes.number,\n fromAssetSelectionButtonRef: PropTypes.any,\n toAssetSelectionButtonRef: PropTypes.any,\n sendingAssetToFiatRate: PropTypes.oneOfType([PropTypes.number, PropTypes.string, null]),\n receivingAssetToFiatRate: PropTypes.oneOfType([PropTypes.number, PropTypes.string, null]),\n fiatCurrencyCode: PropTypes.oneOfType([PropTypes.string, null]),\n fiatCurrencyDecimals: PropTypes.oneOfType([PropTypes.number, null]),\n formHasFiat: PropTypes.bool,\n translations: PropTypes.object,\n swapSeparatorIconSrc: PropTypes.string.isRequired,\n swapButtonAlwaysActive: PropTypes.bool,\n};\n\nSwapForm.defaultProps = {\n sendingAssetDecimalCount: AmountUtils.significantDecimalCount,\n receivingAssetDecimalCount: AmountUtils.significantDecimalCount,\n sendingAssetProtocolIconSrc: null,\n receivingAssetProtocolIconSrc: null,\n fallBackAssetIconSrc: null,\n handleConfirmButtonClick: (\n resetButtonLoader,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n ) => {},\n composeConfirmButtonTo: (fromTicker, toTicker, fromAmount) => \"\",\n setSwapCreationEstimation: details => {},\n handleUnexpectedError: error => {},\n rotateAssets: (fromTicker, toTicker) => {},\n preservedAmount: null,\n handleSwapServiceError: (\n errorCode,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n ) => {},\n retrieveSwapDetails: async (sendingAssetTicker, receivingAssetTicker, amount, isSwapAll = false) => {},\n retrieveInitialSwapData: async (sendingAssetTicker, receivingAssetTicker) => {},\n triggerDataUpdateResetting: 0,\n fromAssetSelectionButtonRef: null,\n toAssetSelectionButtonRef: null,\n sendingAssetToFiatRate: null,\n receivingAssetToFiatRate: null,\n fiatCurrencyCode: null,\n fiatCurrencyDecimals: null,\n formHasFiat: true,\n swapButtonAlwaysActive: false,\n};\n","import QRCode from \"qrcode\";\n\nimport { improveAndRethrow } from \"../errorUtils\";\n\n/**\n * Generates QR as svg xml string.\n * Note that you should care about the element size by your self - the generated QR will just fill all available space\n *\n * @param encodingString {string} to be encoded as QR-code image\n * @return {Promise<string>} xml string of generated svg image\n */\nexport async function generateQrAndShowInCanvas(encodingString) {\n try {\n return await QRCode.toString(encodingString, { type: \"svg\" });\n } catch (e) {\n improveAndRethrow(e, \"generateQrAndShowInCanvas\");\n }\n}\n","import React, { useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { logErrorOrOutputToConsole } from \"../../../common/errorUtils\";\nimport { generateQrAndShowInCanvas } from \"../../../common/adapters/qrUtils\";\n\nimport s from \"./qr-code.module.scss\";\n\nexport const QrCode = ({ address, fill = false }) => {\n const canvasRef = useRef();\n\n useEffect(() => {\n (async () => {\n try {\n if (address) {\n canvasRef.current.innerHTML = await generateQrAndShowInCanvas(address);\n }\n } catch (e) {\n logErrorOrOutputToConsole(e);\n }\n })();\n }, [address]);\n\n return <div className={s[\"qr-code\"] + (fill ? \" \" + s[\"fill\"] : \"\")} ref={canvasRef} />;\n};\n\nQrCode.propTypes = {\n address: PropTypes.string.isRequired,\n fill: PropTypes.bool,\n};\n\nQrCode.defaultProps = {\n address: \"\",\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./lines-of-text.module.scss\";\n\n/**\n * Renders up to three lines of text with configurable options for horizontal layout, text wrapping, and breaking.\n * Optionally, displays a default text content centered vertically if provided.\n *\n * @param {string} firstLineText - Text for the first line.\n * @param {string} secondLineText - Text for the second line.\n * @param {string} thirdLineText - Text for the third line.\n * @param {boolean} isHorizontal - If true, displays the text horizontally.\n * @param {string} defaultTextContent - Default text content to display, centered vertically.\n * @param {boolean} isFirstLineTextReducible - If true, the first line text can be reduced.\n * @param {string} firstLineNotReducibleSuffix - Suffix to append to the first line text if not reducible.\n * @param {boolean} wrapFirstLine - If true, allows the first line text to wrap.\n * @param {boolean} breakFirstLine - If true, allows the first line text to break onto the next line.\n */\nexport const LinesOfText = ({\n firstLineText = \"\",\n secondLineText = \"\",\n thirdLineText = \"\",\n isHorizontal = false,\n defaultTextContent = \"\",\n isFirstLineTextReducible = false,\n firstLineNotReducibleSuffix = \"\",\n wrapFirstLine = false,\n breakFirstLine = false,\n}) => {\n return defaultTextContent ? (\n <div className={s[\"centered-vertically\"]}>{defaultTextContent}</div>\n ) : (\n <div className={isHorizontal ? s[\"horizontal\"] : \"\"}>\n <h5 className={s[\"first-line-text\"]}>\n <span\n className={`${isFirstLineTextReducible ? s[\"shorted\"] : s[\"full-text\"]} ${\n wrapFirstLine ? \" \" + s[\"wrap\"] : \"\"\n } ${breakFirstLine ? \" \" + s[\"break\"] : \"\"}`}\n >\n {firstLineText}\n </span>\n {`\\u00A0${firstLineNotReducibleSuffix}`}\n </h5>\n {isHorizontal ? <div className={s[\"line\"]} /> : null}\n {secondLineText ? <p className={s[\"second-line-text\"]}>{secondLineText}</p> : null}\n {thirdLineText ? <p className={s[\"second-line-text\"]}>{thirdLineText}</p> : null}\n </div>\n );\n};\n\nLinesOfText.propTypes = {\n firstLineText: PropTypes.string,\n secondLineText: PropTypes.string,\n thirdLineText: PropTypes.string,\n isHorizontal: PropTypes.bool,\n defaultTextContent: PropTypes.string,\n isFirstLineTextReducible: PropTypes.bool,\n firstLineNotReducibleSuffix: PropTypes.string,\n wrapFirstLine: PropTypes.bool,\n breakFirstLine: PropTypes.bool,\n};\n\nLinesOfText.defaultProps = {\n firstLineText: \"\",\n secondLineText: \"\",\n thirdLineText: \"\",\n isHorizontal: false,\n defaultTextContent: \"\",\n isFirstLineTextReducible: false,\n firstLineNotReducibleSuffix: \"\",\n wrapFirstLine: false,\n breakFirstLine: false,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./line-with-icon-link.module.scss\";\n\n/**\n * Renders a line with text and an accompanying icon that serves as a link.\n *\n * @param {Object} props - Component props.\n * @param {string} props.text - Text to be displayed.\n * @param {string} props.icon - URL of the icon image.\n * @param {string} props.url - Target URL that the icon link points to.\n */\nexport const LineWithIconLink = ({ text, icon, url }) => {\n return (\n <div className={s[\"line-with-icon-link\"]}>\n <h5 className={s[\"line-with-icon-link-text\"]}>{text}</h5>\n <a href={url} target=\"_blank\" rel=\"noopener noreferrer\" className={\"line-with-icon-link-icon\"}>\n <img src={icon} alt=\"Link Icon\" />\n </a>\n </div>\n );\n};\n\nLineWithIconLink.propTypes = {\n text: PropTypes.string.isRequired,\n icon: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n};\n\nLineWithIconLink.defaultProps = {\n text: \"\",\n icon: \"\",\n url: \"\",\n};\n","import React from \"react\";\n\n// Originally: determined-error.svg\nexport default () => (\n <svg\n id=\"Group_5\"\n data-name=\"Group 5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"173\"\n height=\"173\"\n viewBox=\"0 0 173 173\"\n >\n <defs>\n <clipPath id=\"clip-path\">\n <circle id=\"Oval\" cx=\"86.5\" cy=\"86.5\" r=\"86.5\" fill=\"#ffa799\" />\n </clipPath>\n </defs>\n <g id=\"Group_2\" data-name=\"Group 2\">\n <circle id=\"Oval-2\" data-name=\"Oval\" cx=\"86.5\" cy=\"86.5\" r=\"86.5\" fill=\"#ffa799\" />\n <g id=\"Group_2-2\" data-name=\"Group 2\" clip-path=\"url(#clip-path)\">\n <g id=\"Group_232\" data-name=\"Group 232\" transform=\"translate(-5 -4)\">\n <rect\n id=\"Rectangle\"\n width=\"30\"\n height=\"172\"\n transform=\"translate(122.205 0.582) rotate(45)\"\n fill=\"#fff\"\n opacity=\"0.3\"\n />\n <rect\n id=\"Rectangle-2\"\n data-name=\"Rectangle\"\n width=\"30\"\n height=\"172\"\n transform=\"translate(161.205 36.582) rotate(45)\"\n fill=\"#fff\"\n opacity=\"0.3\"\n />\n <path\n id=\"Rectangle-3\"\n data-name=\"Rectangle\"\n d=\"M12,0H146a0,0,0,0,1,0,0V128a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V12A12,12,0,0,1,12,0Z\"\n transform=\"translate(34 53)\"\n fill=\"#f18573\"\n />\n <path\n id=\"Rectangle-4\"\n data-name=\"Rectangle\"\n d=\"M4,0H97a4,4,0,0,1,4,4V92a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V4A4,4,0,0,1,4,0Z\"\n transform=\"translate(43 91)\"\n fill=\"#e95d44\"\n opacity=\"0.5\"\n />\n <path\n id=\"Rectangle-5\"\n data-name=\"Rectangle\"\n d=\"M12,0H146a0,0,0,0,1,0,0V28a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V12A12,12,0,0,1,12,0Z\"\n transform=\"translate(34 53)\"\n fill=\"#eb5e49\"\n />\n <circle\n id=\"Oval-3\"\n data-name=\"Oval\"\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n transform=\"translate(44 63)\"\n fill=\"#ffa191\"\n />\n <circle\n id=\"Oval-4\"\n data-name=\"Oval\"\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n transform=\"translate(57 63)\"\n fill=\"#ffa191\"\n />\n <circle\n id=\"Oval-5\"\n data-name=\"Oval\"\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n transform=\"translate(70 63)\"\n fill=\"#ffa191\"\n />\n </g>\n </g>\n </g>\n <g id=\"Group_3\" data-name=\"Group 3\" transform=\"translate(63 105)\">\n <g id=\"Group_4\" data-name=\"Group 4\">\n <path\n id=\"Path\"\n d=\"M24.75,0A24.745,24.745,0,1,0,39.078,4.567\"\n fill=\"none\"\n stroke=\"#fff\"\n stroke-linecap=\"round\"\n stroke-miterlimit=\"10\"\n stroke-width=\"3.6\"\n />\n <text\n id=\"_\"\n data-name=\"!\"\n transform=\"translate(25.2 38.8)\"\n fill=\"#fff\"\n font-size=\"34.2\"\n font-family=\"SegoeUI, Segoe UI\"\n letter-spacing=\"0.023em\"\n >\n <tspan x=\"-4.859\" y=\"0\">\n !\n </tspan>\n </text>\n </g>\n </g>\n </svg>\n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { DialogStep } from \"../../organisms/Dialog/DialogStep/DialogStep\";\n\nimport determinedErrorImage from \"../../../assets/wrappedImages/determinedError\";\n\n/**\n * Template dialog step to display an error through the title and subtitle.\n * You can insert it into any dialog windows and implement them into flows.\n *\n * @param {object} props - Component props.\n * @param {object} props.controls - Control elements for the dialog.\n * @param {string} props.stepName - Name of the current step.\n * @param {string} props.title - Title of the dialog.\n * @param {string} props.subtitle - Subtitle of the dialog.\n * @param {string} props.backButtonText - Text for the back button.\n * @param {Function} props.backButtonClick - Handler for back button click.\n * @param {string} props.backButtonLink - Link for the back button.\n * @param {string} props.confirmButtonText - Text for the confirm button.\n * @param {Function} props.confirmButtonClick - Handler for confirm button click.\n * @param {string} props.confirmButtonLink - Link for the confirm button.\n * @param {boolean} props.showCornerBackButton - Whether to show the corner back button.\n * @returns {JSX.Element} React component\n */\nexport const DeterminedErrorDialogStep = ({\n controls,\n stepName,\n title,\n subtitle,\n backButtonText,\n backButtonClick,\n backButtonLink,\n confirmButtonText,\n confirmButtonClick,\n confirmButtonLink,\n showCornerBackButton,\n}) => {\n return (\n <DialogStep\n controls={controls}\n stepName={stepName}\n ImageRaw={determinedErrorImage}\n title={title}\n subtitle={subtitle}\n backButtonText={backButtonText}\n backButtonClick={backButtonClick}\n backButtonTo={backButtonLink}\n confirmButtonText={confirmButtonText}\n confirmButtonClick={confirmButtonClick}\n confirmButtonLink={confirmButtonLink}\n showCornerBackButton={showCornerBackButton}\n />\n );\n};\n\nDeterminedErrorDialogStep.propTypes = {\n controls: PropTypes.object,\n stepName: PropTypes.string,\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string.isRequired,\n backButtonText: PropTypes.string,\n backButtonClick: PropTypes.func,\n backButtonLink: PropTypes.string,\n confirmButtonText: PropTypes.string,\n confirmButtonClick: PropTypes.func,\n confirmButtonLink: PropTypes.string,\n showCornerBackButton: PropTypes.bool,\n};\n\nDeterminedErrorDialogStep.defaultProps = {\n backButtonText: \"\",\n backButtonClick: null,\n confirmButtonText: \"\",\n confirmButtonClick: null,\n showCornerBackButton: false,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { TitleBox } from \"../../atoms/TitleBox/TitleBox\";\nimport { LineWithIconLink } from \"../LineWithIconLink/LineWithIconLink\";\n\n/**\n * TitledLineWithIconLink component renders a title box with a text line that includes an icon with a clickable link.\n *\n * @param {string} title - The title to display in the TitleBox.\n * @param {string} text - The text to display in the LineWithIconLink.\n * @param {string} icon - The icon to display next to the text in the LineWithIconLink.\n * @param {string} url - The URL for the LineWithIconLink.\n */\nexport const TitledLineWithIconLink = ({ title, text, icon, url }) => {\n return (\n <TitleBox title={title}>\n <LineWithIconLink text={text} icon={icon} url={url} />\n </TitleBox>\n );\n};\n\nTitledLineWithIconLink.propTypes = {\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n icon: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n};\n\nTitledLineWithIconLink.defaultProps = {};\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./radio-button-with-text.module.scss\";\n\nimport { useCallHandlingErrors } from \"../../../hooks/useCallHandlingErrors.js\";\n\nimport { Tooltip } from \"../../Tooltip/Tooltip.jsx\";\nimport { LoadingDots } from \"../../LoadingDots/LoadingDots.jsx\";\n\n/**\n * RadioButtonWithText component with a label and optional tooltip.\n *\n * @component\n * @param {string} [text=\"\"] - The text to display next to the radio button.\n * @param {function} onStateChange - Callback function triggered when the state of the radio button changes.\n * @param {boolean} [isSwitchedOn=false] - Whether the radio button is switched on.\n * @param {boolean} [isDisabled=false] - Whether the radio button is disabled.\n * @param {string} [tooltipText=\"\"] - Text to display in the tooltip when hovering over the component.\n * @param {string} [id=\"\"] - The id of the radio button.\n */\nexport const RadioButtonWithText = ({\n text = \"\",\n onStateChange,\n isSwitchedOn = false,\n isDisabled = false,\n tooltipText = \"\",\n id = \"\",\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const [showTooltip, setShowTooltip] = useState(false);\n const [showTooltipTimeoutId, setShowTooltipTimeoutId] = useState(-1);\n\n const handleError = useCallHandlingErrors();\n\n function handleChange() {\n if (!isLoading && !isDisabled) {\n setIsLoading(true);\n handleError(() => onStateChange(() => setIsLoading(false)));\n }\n }\n\n const onMouseEnter = () => {\n if (tooltipText) {\n setShowTooltipTimeoutId(setTimeout(() => setShowTooltip(true), 700));\n }\n };\n\n const onMouseLeave = () => {\n if (tooltipText) {\n setShowTooltip(false);\n clearTimeout(showTooltipTimeoutId);\n setShowTooltipTimeoutId(null);\n }\n };\n\n return (\n <div className={s[\"radio-button-with-text-container\"]}>\n <label\n htmlFor={\"radio-button-with-text-\" + id}\n className={[\n s[\"radio-button-with-text\"],\n isSwitchedOn ? s[\"selected\"] : \"\",\n isLoading ? s[\"hide\"] : \"\",\n isDisabled ? s[\"disabled\"] : \"\",\n ].join(\" \")}\n onMouseEnter={e => handleError(onMouseEnter, e)}\n onMouseLeave={e => handleError(onMouseLeave, e)}\n >\n {tooltipText && showTooltip ? (\n <div>\n {/*TODO: [bug, critical] click is still propagated*/}\n <Tooltip showTooltip={showTooltip} handleClick={() => setShowTooltip(false)}>\n {tooltipText}\n </Tooltip>\n </div>\n ) : null}\n <div className={s[\"radio-button-with-text-dots\"] + (isLoading ? s[\"show\"] : \"\")}>\n <LoadingDots />\n </div>\n <div className={s[\"radio-button-with-text-content\"] + \" \" + (false ? s[\"hide\"] : \"\")}>\n <input\n id={\"radio-button-with-text-\" + id}\n type=\"checkbox\"\n value={isSwitchedOn}\n onChange={handleChange}\n />\n <span className={s[\"radio-button-with-text-wrapper\"]}>{text}</span>\n </div>\n </label>\n </div>\n );\n};\n\nRadioButtonWithText.propTypes = {\n text: PropTypes.string,\n onStateChange: PropTypes.func,\n isSwitchedOn: PropTypes.bool,\n isDisabled: PropTypes.bool,\n tooltipText: PropTypes.string,\n id: PropTypes.string,\n};\n\nRadioButtonWithText.defaultProps = {\n text: \"\",\n isSwitchedOn: false,\n isDisabled: false,\n tooltipText: \"\",\n id: \"\",\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\"\n fill=\"#8C9CBF\"\n />\n <path\n d=\"M11.6001 9.65598H13.6001V17.48H11.6001V9.65598ZM13.6961 6.02398V7.99198H11.4881V6.02398H13.6961Z\"\n fill=\"white\"\n />\n </svg>\n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./information-message.module.scss\";\n\nimport InfoIcon from \"../../../assets/wrappedImages/infoIcon.jsx\";\n\n/**\n * InformationMessage component to display an informational message with an optional icon.\n *\n * @component\n * @param {string} [text=\"\"] - The text content of the message.\n * @param {string|boolean} [icon=false] - The URL or boolean indicating whether to display an icon.\n * @param {boolean} [bigImage=false] - Whether to use a larger image for the icon.\n * @param {boolean} [whiteText=false] - Whether the text should be displayed in white color.\n * @param {ReactNode} [children=null] - Additional child components.\n */\nexport const InformationMessage = ({\n text = \"\",\n icon = false,\n bigImage = false,\n whiteText = false,\n children = null,\n}) => {\n return (\n <div className={s[\"information-message\"] + (bigImage ? \" \" + s[\"big-image\"] : \"\")}>\n {icon ? <img src={icon} alt=\"info icon\" /> : <InfoIcon />}\n <p className={s[\"information-message-text\"] + (whiteText ? \" \" + s[\"white-text\"] : \"\")}>\n {text}\n {children}\n </p>\n </div>\n );\n};\n\nInformationMessage.propTypes = {\n text: PropTypes.string,\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n bigImage: PropTypes.bool,\n whiteText: PropTypes.bool,\n children: PropTypes.node,\n};\n\nInformationMessage.defaultProps = {\n text: \"\",\n icon: false,\n bigImage: false,\n whiteText: false,\n children: null,\n};\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./input.module.scss\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\nimport { logErrorOrOutputToConsole } from \"../../../common/errorUtils.js\";\n\nimport { Close } from \"../buttons/Close/Close.jsx\";\nimport { Validation } from \"../Validation/Validation.jsx\";\n\n/**\n * Input component for forms.\n *\n * @component\n * @param {string} [type=\"text\"] - The type of input (e.g., \"text\", \"number\", \"email\").\n * @param {string} [name=\"\"] - The name of the input field.\n * @param {function} [onChange=() => {}] - Function called when the input value changes.\n * @param {string} [alertText=\"\"] - Text for alert messages.\n * @param {string} [placeholder=\"\"] - Placeholder text for the input.\n * @param {string} [className=\"\"] - Additional CSS classes for styling.\n * @param {string} [defaultValue=\"\"] - Default value for the input.\n * @param {boolean} [isBigHeight=false] - Whether the input has a larger height.\n * @param {boolean} [isSmallHeight=false] - Whether the input has a smaller height.\n * @param {string} [label=\"\"] - Label text for the input.\n * @param {string} [id=null] - Unique ID for the input.\n * @param {string} [value=\"\"] - Value of the input.\n * @param {string} [successAlertText=\"\"] - Text for success alert messages.\n * @param {boolean} [disabled=false] - Whether the input is disabled.\n * @param {function} [onKeyUp=() => {}] - Function called on key up event.\n * @param {boolean} [autoFocus=false] - Whether the input should be autofocused.\n * @param {boolean} [fillWidth=false] - Whether the input should fill the width of its container.\n * @param {boolean} [clearButton=false] - Whether to show a clear button for the input.\n * @param {boolean} [imageBackground=false] - Whether the input has an image background.\n * @param {boolean} [errorEncountered=false] - Whether an error has been encountered for the input.\n */\nexport const Input = forwardRef(\n (\n {\n type = \"text\",\n name = \"\",\n onChange = () => {},\n alertText = \"\",\n placeholder = \"\",\n className = \"\",\n defaultValue = \"\",\n isBigHeight = false,\n isSmallHeight = false,\n label = \"\",\n id = null,\n value = \"\",\n successAlertText = \"\",\n disabled = false,\n onKeyUp = event => {},\n autoFocus = false,\n fillWidth = false,\n clearButton = false,\n imageBackground = false,\n errorEncountered = false,\n },\n ref\n ) => {\n const handleError = useCallHandlingErrors();\n\n const handleClearButtonClick = () => {\n onChange({ target: { value: \"\" } });\n try {\n ref.current.focus();\n } catch (e) {\n logErrorOrOutputToConsole(\n \"Input clear button will not work unless you provide a ref to the Input. Please pass a 'ref' parameter to the Input or disable the clear button.\"\n );\n }\n };\n\n return (\n <div\n className={[\n s[\"input\"],\n isBigHeight ? s[\"big-height\"] : \"\",\n isSmallHeight ? s[\"small-height\"] : \"\",\n disabled ? s[\"disabled\"] : \"\",\n fillWidth ? s[\"fill-width\"] : \"\",\n imageBackground ? s[\"image-background\"] : \"\",\n ].join(\" \")}\n >\n {label ? (\n <label htmlFor={id} className={s[\"input-label\"]}>\n {label}\n </label>\n ) : null}\n\n {clearButton ? (\n <div className={s[\"input-clear-button\"]}>\n <Close onClick={handleClearButtonClick} color={\"dark-invert\"} />\n </div>\n ) : (\n \"\"\n )}\n\n {defaultValue ? (\n <input\n id={id}\n type={type}\n name={name}\n onChange={e => handleError(onChange, e)}\n placeholder={placeholder}\n className={className + (errorEncountered ? \" \" + s[\"error-encountered\"] : \"\")}\n defaultValue={defaultValue}\n disabled={disabled}\n onKeyUp={event => onKeyUp(event)}\n autoFocus={autoFocus}\n ref={ref}\n />\n ) : (\n <input\n id={id}\n type={type}\n name={name}\n onChange={e => handleError(onChange, e)}\n placeholder={placeholder}\n className={className + (errorEncountered ? \" \" + s[\"error-encountered\"] : \"\")}\n value={value}\n disabled={disabled}\n onKeyUp={event => onKeyUp(event)}\n autoFocus={autoFocus}\n ref={ref}\n />\n )}\n\n {alertText || successAlertText ? (\n <Validation text={alertText || successAlertText} isSuccessAlert={!alertText} />\n ) : null}\n </div>\n );\n }\n);\n\nInput.propTypes = {\n type: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n alertText: PropTypes.string,\n placeholder: PropTypes.string,\n className: PropTypes.string,\n defaultValue: PropTypes.string,\n isBigHeight: PropTypes.bool,\n isSmallHeight: PropTypes.bool,\n label: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.string,\n successAlertText: PropTypes.string,\n disabled: PropTypes.bool,\n onKeyUp: PropTypes.func,\n autoFocus: PropTypes.bool,\n fillWidth: PropTypes.bool,\n clearButton: PropTypes.bool,\n imageBackground: PropTypes.bool,\n errorEncountered: PropTypes.bool,\n};\n\nInput.defaultProps = {\n type: \"text\",\n onChange: () => {},\n alertText: \"\",\n placeholder: \"\",\n className: \"\",\n defaultValue: \"\",\n isBigHeight: false,\n isSmallHeight: false,\n label: \"\",\n id: null,\n value: \"\",\n successAlertText: \"\",\n disabled: false,\n onKeyUp: () => {},\n autoFocus: false,\n fillWidth: false,\n clearButton: false,\n imageBackground: false,\n errorEncountered: false,\n};\n","export const FALLBACK_ASSET_ICON_URL = \"https://rabbit.io/asset-icons/fallback.svg\";\n\nexport const DEFAULT_CRYPTO_DECIMAL_COUNT = 8;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./coin-picker.module.scss\";\nimport ArrowIcon from \"../../../assets/wrappedImages/arrowIcon.jsx\";\n\nimport { useReferredState } from \"../../hooks/useReferredState.js\";\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\nimport { logErrorOrOutputToConsole } from \"../../../common/errorUtils.js\";\n\nimport { RadioButtonWithText } from \"../../atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx\";\nimport { Input } from \"../../atoms/Input/Input.jsx\";\nimport { InformationMessage } from \"../../atoms/InformationMessage/InformationMessage.jsx\";\nimport { FALLBACK_ASSET_ICON_URL } from \"../../../constants/globalConstants.jsx\";\nimport { AssetIcon } from \"../../atoms/AssetIcon/AssetIcon.jsx\";\nimport { Button } from \"../../atoms/buttons/Button/Button.jsx\";\nimport { LoadingDots } from \"../../atoms/LoadingDots/LoadingDots.jsx\";\n\nexport const COIN_PICKER_MODES = {\n BUTTON: \"BUTTON\",\n CHECKBOX: \"CHECKBOX\",\n};\n\nconst defaultTexts = {\n searchPlaceholder: \"Search..\",\n noAssetsMessage: \"No matching assets found\",\n loadMoreButton: \"Load more\",\n assetSuggestionMessage: {\n part1: \"Need more?\",\n part2: \"Let us know\",\n part3: \"which coin to add next.\",\n },\n};\n\n/**\n * Component that can be used either for one-time selection of an asset, or\n * for a multi-selection in a CHECKBOX format.\n * CoinPicker can show all assets with a subtitle.\n *\n * Usage rules:\n * 1. for CHECKBOX mode\n * - you MUST pass allCoins, initiallyEnabledCoinsList and setCoinPickerValue\n * 2. for BUTTON mode\n * - you MUST NOT pass setCoinPickerValue (it will be ignored)\n * - if you don't pass loadCoinsAndContent function, you MUST pass allCoins\n *\n * @param [mode] {string} one-time button selection or multi-selection via toggles, available options are located in COIN_PICKER_MODES\n * @param [allCoins] {Coin[]} all coins despite on their enabled/disabled status. Pass this list if you use CHECKBOX mode or you don't pass the loadCoinsAndContent function\n * @param [initiallyEnabledCoinsList] {Coin[]} - pass this when using CHECKBOX mode\n * @param [handleClick] {function} handler function for the event when an asset is clicked\n * @param [triggerToReloadData] {number|undefined} trigger to reload the component when some related data changes\n * @param [search=false] {boolean} whether to show the search bar above the assets list, when enabled overrides searchAdaptive and locks the list height\n * @param [searchAdaptive=true] {boolean} show search bar only after six assets in the list\n * @param [setCoinPickerValue] {function} is called with the only parameter (final enabled tickers list) when closing/confirming dialog in CHECKBOX mode\n * @param [setCoinPickerListChanged] {function} is called with the only parameter (flag signalling that the list of enabled coins was changed - true, or was not changed - false) when closing/confirming dialog in CHECKBOX mode\n * @param [loadCoinsAndContent] {function} optional, you can provide it if you need custom logic for coins list composing or custom subtitles\n * {\n * coins: Coin[],\n * content: { coin: Coin, subtitle: string }[],\n * isCoinsDataReloadable: boolean\n * }\n * @param [showRequestMissingCoinsInfoMessage=true] {boolean} whether to show message about advising missing coins\n * @param [supportUrl] {string} needed when showRequestMissingCoinsInfoMessage=true\n * @param coinToIconPaths {function}\n * @param [partialLoadingEnabled=true] {boolean} enables only partialLoadingIncrement items are shown by default and user can show more clicking the load-more button\n * @param [partialLoadingIncrement=100]\n * @param [texts] {object} texts translated to desired locale, default texts use english locale\n */\nexport const CoinPicker = ({\n mode = COIN_PICKER_MODES.BUTTON,\n allCoins,\n initiallyEnabledCoinsList,\n handleClick = ticker => {},\n triggerToReloadData,\n search = false,\n searchAdaptive = true,\n setCoinPickerValue = () => {},\n setCoinPickerListChanged = () => {},\n loadCoinsAndContent = null,\n showRequestMissingCoinsInfoMessage = true,\n supportUrl = null,\n coinToIconPaths = coin => ({\n assetIconSrc: undefined,\n assetIconProtocolSrc: undefined,\n }),\n partialLoadingEnabled = true,\n partialLoadingIncrement = 100,\n texts = defaultTexts,\n}) => {\n const handleError = useCallHandlingErrors();\n\n const [coins, setCoins] = useState(null);\n const [filteredCoins, setFilteredCoins] = useState([]);\n const [initiallyEnabledCoins, setInitiallyEnabledCoins] = useReferredState({});\n const [currentlyEnabledCoins, setCurrentlyEnabledCoins] = useReferredState({});\n const [searchFieldValue, setSearchFieldValue] = useState(\"\");\n const [scrollWrapperClass, setScrollWrapperClass] = useState(\"\");\n\n const [searchEnabled, setSearchEnabled] = useState(false);\n const [coinsContent, setCoinsContent] = useState(null);\n const [isCoinsDataReloadable, setIsCoinsDataReloadable] = useState(false);\n\n const [limitedCoinsNumber, setLimitedCoinsNumber] = useState(0);\n const [displayedCoins, setDisplayedCoins] = useState([]);\n const [isListFull, setIsListFull] = useState(true);\n\n const searchRef = useRef();\n const scrollContainerRef = useRef();\n const skeletonItemsCount =\n initiallyEnabledCoinsList?.length || (partialLoadingEnabled ? partialLoadingIncrement : 6);\n\n const defaultLoadCoinsAndContent = async () => {\n const allCoinsSorted = sortCoinsArrayByAlphabet(allCoins, composeEnabledCoinsObject(allCoins));\n return {\n coins: allCoinsSorted,\n content: allCoinsSorted.map(c => ({\n coin: c,\n subtitle: c.blockchain?.name,\n })),\n isCoinsDataReloadable: false,\n };\n };\n\n const sortCoinsArrayByAlphabet = (coinsToSort, enabledCoinsObject) => {\n return [\n ...coinsToSort\n .filter(coin => enabledCoinsObject[coin.ticker])\n .sort((a, b) => a.latinName.toUpperCase() > b.latinName.toUpperCase()),\n ...coinsToSort\n .filter(coin => !enabledCoinsObject[coin.ticker])\n .sort((a, b) => a.latinName.toUpperCase() > b.latinName.toUpperCase()),\n ];\n };\n\n const composeEnabledCoinsObject = coins => {\n if (mode === COIN_PICKER_MODES.CHECKBOX) {\n return coins.reduce((prev, coin) => {\n return {\n ...prev,\n [coin.ticker]: !!initiallyEnabledCoinsList.find(enabledCoin => enabledCoin.ticker === coin.ticker),\n };\n }, {});\n }\n return {};\n };\n\n const handleToggleClick = (ticker, resetButtonLoader = () => {}) => {\n resetButtonLoader && resetButtonLoader();\n setCurrentlyEnabledCoins(prev => {\n return { ...prev, [ticker]: !prev[ticker] };\n });\n };\n\n const handleCoinClick = coin => {\n if (mode === COIN_PICKER_MODES.CHECKBOX) handleToggleClick(coin.ticker);\n handleClick(coin.ticker);\n };\n\n const handleSearchAsset = value => {\n // TODO: [refactoring, high] use unified search function. task_id=be0475316f374dd4a926c948d969e704\n setSearchFieldValue(value); // Trim the input to handle leading/trailing spaces\n const searchTerm = value.trim().toLowerCase();\n if (searchTerm !== \"\") {\n const searchWords = searchTerm.split(/\\s+/); // Split search terms on whitespace\n\n const filteredAndSortedCoins = coins\n .filter(coin => {\n // Check if all search words are found in any of the given properties\n return searchWords.every(\n word =>\n coin?.latinName?.toLowerCase().includes(word) ||\n coin?.ticker?.toLowerCase().includes(word) ||\n coin?.tickerPrintable?.toLowerCase().includes(word)\n );\n })\n .sort((a, b) => {\n // Check for exact matches\n const aMatch =\n a.latinName.toLowerCase() === searchTerm ||\n a.ticker.toLowerCase() === searchTerm ||\n a.tickerPrintable.toLowerCase() === searchTerm\n ? 1\n : 0;\n const bMatch =\n b.latinName.toLowerCase() === searchTerm ||\n b.ticker.toLowerCase() === searchTerm ||\n b.tickerPrintable.toLowerCase() === searchTerm\n ? 1\n : 0;\n if (bMatch - aMatch !== 0) {\n // Prioritize exact matches to the top\n return bMatch - aMatch;\n } else {\n // Sort remaining items alphabetically by latinName\n return a.latinName.toLowerCase().localeCompare(b.latinName.toLowerCase());\n }\n });\n\n setFilteredCoins(filteredAndSortedCoins);\n } else {\n setFilteredCoins(coins); // Reset to original list if search term is empty\n }\n };\n\n const loadCoinsAndSaveToState = () => {\n (async () => {\n try {\n const data = loadCoinsAndContent ? await loadCoinsAndContent() : await defaultLoadCoinsAndContent();\n setCoins(data.coins);\n setFilteredCoins(data.coins);\n setCoinsContent(data.content);\n setIsCoinsDataReloadable(!!data.isCoinsDataReloadable);\n } catch (e) {\n logErrorOrOutputToConsole(e);\n }\n })();\n };\n\n // Initializes enabled coins logic if the mode is CHECKBOX\n useEffect(() => {\n if (mode === COIN_PICKER_MODES.CHECKBOX) {\n const enabledCoinsObject = composeEnabledCoinsObject(allCoins);\n setInitiallyEnabledCoins(enabledCoinsObject);\n setCurrentlyEnabledCoins(enabledCoinsObject);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode]);\n\n useEffect(() => {\n loadCoinsAndSaveToState();\n if (isCoinsDataReloadable) {\n const intervalId = setInterval(loadCoinsAndSaveToState, 60000);\n return () => clearInterval(intervalId);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [triggerToReloadData]);\n\n useEffect(() => {\n const enabled = currentlyEnabledCoins.current;\n if (enabled) {\n const enabledCoinsTickers = Object.keys(enabled).filter(ticker => enabled[ticker]);\n setCoinPickerValue(enabledCoinsTickers);\n setCoinPickerListChanged(\n JSON.stringify(initiallyEnabledCoins.current) !== JSON.stringify(currentlyEnabledCoins.current)\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentlyEnabledCoins.current]);\n\n useEffect(() => {\n setSearchEnabled(\n search ? true : searchAdaptive && initiallyEnabledCoinsList ? initiallyEnabledCoinsList.length > 6 : false\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [search, searchAdaptive, coins]);\n\n useEffect(() => {\n if (filteredCoins?.length > partialLoadingIncrement && partialLoadingEnabled) {\n setLimitedCoinsNumber(partialLoadingIncrement);\n } else {\n setLimitedCoinsNumber(0);\n setDisplayedCoins(filteredCoins);\n setIsListFull(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredCoins]);\n\n useEffect(() => {\n if (limitedCoinsNumber > 0) {\n const coinsToDisplay = filteredCoins.slice(0, limitedCoinsNumber);\n setDisplayedCoins(coinsToDisplay);\n setIsListFull(coinsToDisplay.length === filteredCoins.length);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [limitedCoinsNumber]);\n\n const displayMoreCoins = () => {\n setLimitedCoinsNumber(prev => prev + partialLoadingIncrement);\n };\n\n const skeleton = () => {\n let skeletonItems = [];\n for (let i = 0; i < skeletonItemsCount; i++) {\n skeletonItems.push(\n <div className={s[\"item\"]} key={\"coin-picker-skeleton-\" + i}>\n <div className={s[\"link\"] + \" \" + s[\"loading\"]}>\n <div className={s[\"icon\"] + \" \" + s[\"skeleton-dark\"]}></div>\n <div className={s[\"content\"]}>\n <div className={s[\"name\"] + \" \" + s[\"skeleton-dark\"]}></div>\n <div className={s[\"amount\"] + \" \" + s[\"skeleton-dark\"]}></div>\n </div>\n </div>\n </div>\n );\n }\n return skeletonItems;\n };\n\n const handleScroll = () => {\n if (scrollWrapperClass !== \"\") setScrollWrapperClass(\"\");\n\n if (scrollContainerRef.current?.scrollTop === 0)\n setScrollWrapperClass(\n s[\"reached-top\"] +\n (scrollContainerRef.current?.scrollHeight - scrollContainerRef.current?.clientHeight === 0\n ? \" \" + s[\"reached-bottom\"]\n : \"\")\n );\n\n if (\n scrollContainerRef.current?.scrollTop > 0 &&\n scrollContainerRef.current?.scrollTop ===\n scrollContainerRef.current?.scrollHeight - scrollContainerRef.current?.clientHeight\n )\n setScrollWrapperClass(s[\"reached-bottom\"]);\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(handleScroll, []);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(handleScroll, [filteredCoins]);\n\n const shouldShowSkeleton = coins == null;\n\n return coins ? (\n <>\n <div className={s[\"coin-picker\"] + (shouldShowSkeleton ? \" \" + s[\"loading\"] : \"\")}>\n {searchEnabled ? (\n <div className={s[\"coin-picker-search\"]}>\n <Input\n value={searchFieldValue}\n onChange={e => handleSearchAsset(e.target.value)}\n placeholder={texts.searchPlaceholder}\n isSmallHeight={true}\n clearButton\n ref={searchRef}\n disabled={shouldShowSkeleton}\n />\n </div>\n ) : (\n \"\"\n )}\n <div\n className={\n s[\"coin-picker-wrapper\"] +\n \" \" +\n scrollWrapperClass +\n (searchEnabled ? \" \" + s[\"fixed-height\"] : \"\")\n }\n >\n <div\n className={s[\"coin-picker-wrapper-content\"] + (searchEnabled ? \" \" + s[\"fixed-height\"] : \"\")}\n ref={scrollContainerRef}\n onScroll={handleScroll}\n >\n <div className={s[\"coin-picker-wrapper-content-assets\"]}>\n {shouldShowSkeleton\n ? skeleton()\n : displayedCoins.map((coin, index) => {\n const { assetIconSrc, assetIconProtocolSrc } = coinToIconPaths(coin);\n\n return (\n <div\n className={s[\"item\"]}\n key={`picker-${coin.ticker}-${index}`}\n onClick={e => handleError(() => handleCoinClick(coin), e)}\n >\n <div\n className={\n s[\"link\"] +\n (currentlyEnabledCoins.current[coin.ticker] !==\n initiallyEnabledCoins.current[coin.ticker]\n ? \" \" + s[\"outline\"]\n : \"\")\n }\n >\n <AssetIcon\n assetIconSrc={assetIconSrc}\n assetIconProtocolSrc={assetIconProtocolSrc}\n fallbackSrc={FALLBACK_ASSET_ICON_URL}\n />\n <div className={s[\"content\"]} key={coin.ticker}>\n <p className={s[\"name\"]}>{coin.latinName}</p>\n <p className={s[\"amount\"]}>\n {coinsContent?.find(i => i.coin === coin)?.subtitle ?? \"\"}\n </p>\n </div>\n {mode === COIN_PICKER_MODES.BUTTON ? (\n <div className={s[\"arrow\"]}>\n <ArrowIcon />\n </div>\n ) : mode === COIN_PICKER_MODES.CHECKBOX ? (\n <div className={s[\"toggle-container\"]}>\n <RadioButtonWithText\n onStateChange={resetButtonLoader =>\n handleToggleClick(coin.ticker, resetButtonLoader)\n }\n isSwitchedOn={currentlyEnabledCoins.current[coin.ticker]}\n id={index}\n />\n </div>\n ) : (\n \"\"\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {filteredCoins?.length === 0 && searchFieldValue !== \"\" ? (\n <div className={s[\"coin-picker-wrapper-content-asset-not-found\"]}>\n <h6>{texts.noAssetsMessage}</h6>\n </div>\n ) : (\n \"\"\n )}\n {partialLoadingEnabled && !isListFull ? (\n <div className={s[\"coin-picker-wrapper-content-load-more-button\"]}>\n <Button\n mode=\"primary-transparent\"\n size=\"sm\"\n loader={false}\n content={texts.loadMoreButton}\n onClick={displayMoreCoins}\n handleError={handleError}\n />\n </div>\n ) : (\n \"\"\n )}\n {searchEnabled && showRequestMissingCoinsInfoMessage ? (\n <div className={s[\"coin-picker-wrapper-content-bottom-message\"]}>\n <InformationMessage\n text={\n <>\n {texts.assetSuggestionMessage.part1}\n <a\n target=\"_blank\"\n rel=\"noreferrer\"\n href={supportUrl}\n className={s[\"coin-picker-wrapper-content-bottom-message-link\"]}\n >\n {\" \" + texts.assetSuggestionMessage.part2 + \" \"}\n </a>\n {texts.assetSuggestionMessage.part3}\n </>\n }\n />\n </div>\n ) : (\n \"\"\n )}\n </div>\n </div>\n </div>\n </>\n ) : (\n <LoadingDots />\n );\n};\n\nCoinPicker.propTypes = {\n mode: PropTypes.oneOf([COIN_PICKER_MODES.BUTTON, COIN_PICKER_MODES.CHECKBOX]),\n allCoins: PropTypes.array,\n initiallyEnabledCoinsList: PropTypes.array,\n handleClick: PropTypes.func,\n triggerToReloadData: PropTypes.number,\n search: PropTypes.bool,\n searchAdaptive: PropTypes.bool,\n setCoinPickerValue: PropTypes.func,\n setCoinPickerListChanged: PropTypes.func,\n loadCoinsAndContent: PropTypes.func,\n showRequestMissingCoinsInfoMessage: PropTypes.bool,\n supportUrl: PropTypes.string,\n coinToIconPaths: PropTypes.func,\n partialLoadingEnabled: PropTypes.bool,\n partialLoadingIncrement: PropTypes.number,\n texts: PropTypes.shape({\n searchPlaceholder: PropTypes.string,\n noAssetsMessage: PropTypes.string,\n loadMoreButton: PropTypes.string,\n assetSuggestionMessage: PropTypes.shape({\n part1: PropTypes.string,\n part2: PropTypes.string,\n part3: PropTypes.string,\n }),\n }),\n};\n\nCoinPicker.defaultProps = {\n mode: COIN_PICKER_MODES.BUTTON,\n handleClick: ticker => {},\n search: false,\n searchAdaptive: true,\n setCoinPickerValue: () => {},\n setCoinPickerListChanged: () => {},\n loadCoinsAndContent: null,\n showRequestMissingCoinsInfoMessage: true,\n supportUrl: null,\n coinToIconPaths: coin => ({\n assetIconSrc: undefined,\n assetIconProtocolSrc: undefined,\n }),\n partialLoadingEnabled: true,\n partialLoadingIncrement: 100,\n texts: defaultTexts,\n};\n","import React from \"react\";\n\nimport { CoinPicker } from \"../../molecules/CoinPicker/CoinPicker.jsx\";\nimport { DialogStep } from \"../Dialog/DialogStep/DialogStep.jsx\";\nimport { DIALOG_SIZES } from \"../../../constants/organisms/dialog/dialog.js\";\n\nexport const CoinPickerDialogStep = ({\n stepName,\n controls,\n title,\n subtitle,\n handleCoinSelection = () => {},\n cornerBackButtonTitle,\n cornerBackButtonClick = null,\n confirmButtonText,\n confirmButtonClick,\n showCornerBackButton,\n mode,\n allCoins,\n initiallyEnabledCoinsList,\n triggerToReloadData,\n search,\n searchAdaptive,\n loadCoinsAndContent,\n showRequestMissingCoinsInfoMessage,\n coinToIconPaths = coin => ({\n assetIconSrc: undefined,\n assetIconProtocolSrc: undefined,\n }),\n supportUrl,\n texts,\n}) => {\n return (\n <DialogStep\n controls={controls}\n stepName={stepName}\n title={title}\n subtitle={subtitle}\n cornerBackButtonTitle={cornerBackButtonTitle}\n cornerBackButtonClick={cornerBackButtonClick}\n confirmButtonText={confirmButtonText}\n confirmButtonClick={confirmButtonClick}\n showCornerBackButton={showCornerBackButton}\n headerTitleLeft={true}\n subtitleSmallMargin={true}\n width={controls ? DIALOG_SIZES.largePlus.width : null}\n >\n <CoinPicker\n mode={mode}\n allCoins={allCoins}\n initiallyEnabledCoinsList={initiallyEnabledCoinsList}\n handleClick={ticker => handleCoinSelection(ticker)}\n triggerToReloadData={triggerToReloadData}\n search={search}\n searchAdaptive={searchAdaptive}\n loadCoinsAndContent={loadCoinsAndContent}\n showRequestMissingCoinsInfoMessage={showRequestMissingCoinsInfoMessage}\n coinToIconPaths={coinToIconPaths}\n supportUrl={supportUrl}\n texts={texts}\n />\n </DialogStep>\n );\n};\n","const PARAMETER_VALUES_SEPARATOR = \"|*|\"; // Sting that with high probability will not be in the user's data\n\n/**\n * Adds specified parameter with values to the URL query string\n *\n * @param parameterName - String - name of the parameter\n * @param values - Array of String values\n * @param updateURLCallback - callback that will be called with the updated query string. Can be used to save it to URL\n */\nexport function saveQueryParameterAndValues(parameterName, values, updateURLCallback = newQueryString => {}) {\n let parametersAndValues = parseSearchString();\n parametersAndValues = parametersAndValues.filter(parameterAndValues => parameterAndValues[0] !== parameterName);\n const parameterValuesForURL = encodeURIComponent(values.join(PARAMETER_VALUES_SEPARATOR));\n parametersAndValues.push([parameterName, parameterValuesForURL]);\n const newQueryString = `?${parametersAndValues.map(parameterAndValues => parameterAndValues.join(\"=\")).join(\"&\")}`;\n updateURLCallback(newQueryString);\n\n return newQueryString;\n}\n\n/**\n * Removes specified parameter with values from the URL query string\n *\n * @param parameterName - String - name of the parameter\n * @param updateURLCallback - callback that will be called with the updated query string. Can be used to save it to URL\n */\n// TODO: [tests, moderate] units required the same as or other functions in this module\nexport function removeQueryParameterAndValues(parameterName, updateURLCallback = newQueryString => {}) {\n let parametersAndValues = parseSearchString();\n parametersAndValues = parametersAndValues.filter(parameterAndValues => parameterAndValues[0] !== parameterName);\n const newQueryString = `?${parametersAndValues.map(parameterAndValues => parameterAndValues.join(\"=\")).join(\"&\")}`;\n updateURLCallback(newQueryString);\n\n return newQueryString;\n}\n\n/**\n * Retrieves parameter values from the URL query string.\n *\n * If there are several parameters with the same name in the URL then all their values are returned\n *\n * @param name {string} - parameter name\n * @return {string[]} [] - if the parameter is not present in URL. [\"\"] - if parameter present but has empty value\n */\nexport function getQueryParameterValues(name) {\n return parseSearchString()\n .filter(parameterAndValue => parameterAndValue[0] === name)\n .reduce((allValues, parameterAndValue) => {\n const values = decodeURIComponent(parameterAndValue[1] || \"\").split(PARAMETER_VALUES_SEPARATOR);\n return [...allValues, ...values];\n }, []);\n}\n\nfunction parseSearchString() {\n const trimmed = (window.location.search?.slice(1) || \"\").trim();\n\n return (trimmed && trimmed.split(\"&\").map(parameterAndValue => parameterAndValue.split(\"=\"))) || [];\n}\n\nexport function getQueryParameterSingleValue(name) {\n return (getQueryParameterValues(name) || [])[0];\n}\n","export class Blockchain {\n /**\n * @param name {string} latin printable name of blockchain\n * @param supportedProtocols {Protocol[]}\n */\n constructor(name, supportedProtocols = []) {\n this.name = name;\n this.supportedProtocols = supportedProtocols;\n }\n}\n","export class Protocol {\n constructor(protocolName) {\n this.protocol = protocolName;\n }\n}\n","import { improveAndRethrow } from \"./../errorUtils.js\";\n\n/**\n * The model for cryptocurrency coins.\n *\n * WARNING: this class should not be instantiated directly. Use only predefined singleton Coin (or descendants) instances.\n */\nexport class Coin {\n /**\n * Creates new coin\n *\n * @param latinName {string} the coin name in latin symbols like \"Bitcoin\"\n * @param ticker {string} the coin symbol/ticker/code like 'BTC'. Always upper case. A unique coin identifier\n * @param tickerPrintable {string} ticker but in printable format. Useful for tokens based on external blockchains\n * like ERC20 or TRC20. It is not friendly to display USDTERC20 or BUSDTRC20 - more neat options are just\n * USDT and BUSD. Note that you should always care about user's understanding of what coin he/she is working\n * with as printable ticker for USDTERC20 and USDTTRC20 are the same.\n * @param digitsCountAfterComma {number} count of digits after the comma. E.g. 8 for bitcoin\n * @param maxValue {number|null} max possible value for cryptocurrency. Null means that the currency has no max possible value\n * @param atomName {string} name of the coin's atomic value. Like 'satoshi' for bitcoin\n * @param mainnet {Network} main network for this coin\n * @param testnet {Network} test network for this coin\n * @param minConfirmations {number} min confirmations count to treat the coin's transaction confirmed\n * @param payableEntityStringForFeeRate {string|null} the payable fee entity like byte for bitcoin or gas for ether if present\n * @param feeOptionsTimeStringsSortedDesc {string[]} array of 4 strings for fee options when sending coins. Should be sorted from the highest time to the smallest\n * @param feeRatesExpirationTimeMs {number} number of milliseconds to treat the fee rates as expired\n * @param blockchain {Blockchain} blockchain object\n * @param [protocol] {Protocol|null} token/coin protocol if relevant\n * @param [tokenAddress] {string|null} address of contract of this token (if the coin is token)\n * @param [doesUseLowerCaseAddresses] {boolean} flag to clarify whether we can use lower case addresses to ensure more robust comparisons\n * @param [doesUseOutputs=false] {boolean} true if this coin uses inputs/outputs concept and false if it uses just balances\n */\n constructor(\n latinName,\n ticker,\n tickerPrintable,\n digitsCountAfterComma,\n maxValue,\n atomName,\n mainnet,\n testnet,\n minConfirmations,\n payableEntityStringForFeeRate,\n feeOptionsTimeStringsSortedDesc,\n feeRatesExpirationTimeMs,\n blockchain,\n protocol = null,\n tokenAddress = null,\n doesUseLowerCaseAddresses = true,\n doesUseOutputs = false\n ) {\n this.latinName = latinName;\n this.ticker = ticker;\n this.tickerPrintable = tickerPrintable;\n this.digits = digitsCountAfterComma;\n this.maxValue = maxValue;\n this.atomName = atomName;\n this.mainnet = mainnet;\n this.testnet = testnet;\n this.minConfirmations = minConfirmations;\n this.payableEntityStringForFeeRate = payableEntityStringForFeeRate;\n this.feeOptionsTimeStringsSortedDesc = feeOptionsTimeStringsSortedDesc;\n this.feeRatesExpirationTimeMs = feeRatesExpirationTimeMs;\n this.protocol = protocol;\n this.blockchain = blockchain;\n // TODO: [bug, critical] use testnet property for testnet contract address as it blocks the app work in testnets\n this.tokenAddress = tokenAddress;\n this.feeCoin = this;\n this._significantDigits = 8;\n this.doesUseLowerCaseAddresses = doesUseLowerCaseAddresses;\n this.doesUseOutputs = doesUseOutputs;\n }\n\n /**\n * Sets fee coin\n *\n * @param feeCoin {Coin} some tokens use another coin to charge transaction fee as they work on top of some external\n * blockchain. So pass here the coin the token uses for fee charging. Like for ERC20 token the fee coin is ETH.\n * By default, the creating coin will be set as a value for this field.\n */\n setFeeCoin(feeCoin) {\n this.feeCoin = feeCoin;\n }\n\n /**\n * Checks whether this coin uses another coin (blockchain) to charge fee for transactions (means works on base of\n * some external blockchain).\n *\n * @return {boolean} true if this coin uses external blockchain to perform transactions and charge fee\n */\n doesUseDifferentCoinFee() {\n return this.feeCoin !== this;\n }\n\n /**\n * Converts the given atoms string/number to string representing the same amount in coin itself - floating point number\n *\n * @param atoms {string} atoms positive integer amount\n * @return {string} coin amount floating point number as a string\n */\n atomsToCoinAmount(atoms) {\n throw new Error(\"Not implemented in base Coin\");\n }\n\n /**\n * Converts the given coins amount string/number to string representing the same amount in coin atoms - integer number\n *\n * @param coinsAmount {string} coins positive floating point amount\n * @return {string} coin atoms amount integer number as a string\n */\n coinAmountToAtoms(coinsAmount) {\n throw new Error(\"Not implemented in base Coin\");\n }\n\n /**\n * Composes URL to view the tx with given id in the external blockchain explorer\n *\n * @param txId {string} id of transaction\n * @return {string} URL string\n */\n composeUrlToTransactionExplorer(txId) {\n throw new Error(\"Not implemented in base Coin\");\n }\n\n /**\n * Most of the cryptocurrencies has specific fee rate or fee price metric. This value usually has specific measure\n * like satoshi/byte or gWei/gas. This function adds the described denomination string to the given amount\n * as a suffix and returns the result string ready to be show to a user.\n *\n * @param coinAtomsString {string} coin atoms positive integer amount\n * @return {string} string of coin amount and fee rate units\n */\n coinAtomsFeeRateToCommonlyUsedAmountFormatWithDenominationString(coinAtomsString) {\n throw new Error(\"Not implemented in base Coin\");\n }\n\n /**\n * Check whether this coin support transaction prioritisation during the sending process.\n *\n * @return {boolean} true if support transaction prioritisation and false otherwise\n */\n doesSupportTransactionPrioritisation() {\n return Array.isArray(this.feeOptionsTimeStringsSortedDesc);\n }\n\n tickerAndProtocol() {\n try {\n return `${this.tickerPrintable}${this.protocol ? \" \" + this.protocol.protocol ?? \"\" : \"\"}`;\n } catch (e) {\n improveAndRethrow(e, \"tickerAndProtocol\");\n }\n }\n}\n","import { improveAndRethrow } from \"../errorUtils.js\";\nimport { Logger } from \"./logging/logger.js\";\n\n/**\n * TODO: [tests, critical] Ued by payments logic\n *\n * Simple cache based on Map.\n * Provides ability to store event-dependent data.\n */\nexport class Cache {\n /**\n * @param [eventBus=null] {EventBus} EventBus.js lib instance if you plan to use Cache with events handling\n * @param [noSessionEvents=[]] {string[]} array of events that will be treated as \"no session\", you should pass EventBus to make it work\n */\n constructor(eventBus = null, noSessionEvents = []) {\n this._cache = new Map();\n this._eventDependentDataKeys = [];\n this._noSessionEvents = noSessionEvents;\n this._eventBus = eventBus;\n }\n\n _setupIntervalClearingExpired() {\n let cleaner = function () {\n try {\n for (const key of this._cache.keys()) {\n const item = this._cache.get(key);\n if (item && item.ttlMs && item.addedMsTimestamp + item.ttlMs < Date.now()) {\n this._cache.delete(key);\n }\n }\n } catch (e) {\n improveAndRethrow(e, \"_intervalClearingExpiredCache\");\n }\n };\n\n cleaner = cleaner.bind(this);\n\n setInterval(cleaner, 1000);\n }\n\n /**\n * Puts data to cache\n *\n * @param key {string} string key for this data\n * @param data {any} any data\n * @param ttlMs {number|null} optional milliseconds number for cache lifetime\n * @throws {Error} when the data is null/undefined because these values for data are reserved for internal logic\n */\n put(key, data, ttlMs = null) {\n try {\n if (typeof key !== \"string\" || data == null) {\n throw new Error(`Trying to cache corrupted data: ${key}, ${data}`);\n }\n this._cache.set(key, {\n data: data,\n addedMsTimestamp: Date.now(),\n ttlMs: ttlMs,\n });\n } catch (e) {\n improveAndRethrow(e, \"cache.put\");\n }\n }\n\n putSessionDependentData(key, data, ttlMs = null) {\n this._putEventDependentData(key, data, this._noSessionEvents, ttlMs);\n }\n\n /**\n * Puts data to cache and adds its key to list of keys that should be related by each of given events.\n *\n * @param key {string} key for cache\n * @param data {any} any caching data\n * @param events {string[]} list of events forcing putting data to be removed when triggered\n * @param ttlMs {|null} optional time to live for this cache item\n * @throws {Error} when the data is null/undefined because these values for data are reserved for internal logic\n */\n putEventDependentData(key, data, events, ttlMs = null) {\n this._putEventDependentData(key, data, events, ttlMs);\n }\n\n _putEventDependentData(key, data, events, ttlMs = null) {\n try {\n if (typeof key !== \"string\" || data == null) {\n throw new Error(`Trying to cache corrupted data: ${key}, ${data}`);\n }\n this._cache.set(key, {\n data: data,\n addedMsTimestamp: Date.now(),\n ttlMs: ttlMs,\n });\n for (let event of events) {\n const eventAndKeys = this._eventDependentDataKeys.find(item => item[0] === event);\n if (eventAndKeys) {\n eventAndKeys.push(key);\n } else if (this._eventBus) {\n this._eventDependentDataKeys.push([event, key]);\n this._eventBus.addEventListener(event, () => {\n try {\n const keys = this._eventDependentDataKeys.find(item => item[0] === event);\n (keys ?? [event]).slice(1).forEach(key => this._cache.delete(key));\n } catch (e) {\n Logger.logError(e, \"cache.removing-for-event\", `Event: ${event}`);\n }\n });\n }\n }\n } catch (e) {\n improveAndRethrow(e, \"cache.putEventDependentData\");\n }\n }\n\n // TODO: [feature, low] add clearing of expired data by schedule\n get(key) {\n try {\n const item = this._cache.get(key);\n if (item) {\n if (item.addedMsTimestamp && item.ttlMs !== null && item.addedMsTimestamp + item.ttlMs < Date.now()) {\n this._cache.delete(key);\n return null;\n } else {\n return item.data;\n }\n }\n\n return null;\n } catch (e) {\n improveAndRethrow(e, \"cache.get\");\n }\n }\n\n getLastUpdateTimestamp(key) {\n return this._cache.get(key)?.addedMsTimestamp ?? null;\n }\n\n /**\n * Updates the timestamp of the last update for specified key to the provided value.\n * Can be useful when TTL is controlled outside this class.\n *\n * @param key {string}\n * @param timestamp {number}\n * @return {boolean}\n */\n setLastUpdateTimestamp(key, timestamp) {\n try {\n const item = this._cache.get(key);\n if (item != null && typeof timestamp === \"number\") {\n this._cache.set(key, { ...item, addedTimestampMs: timestamp });\n return true;\n }\n return false;\n } catch (e) {\n improveAndRethrow(\"cache.setLastUpdateTimestamp\");\n }\n }\n\n invalidate(key) {\n try {\n this._cache.delete(key);\n } catch (e) {\n improveAndRethrow(e, \"cache.invalidate\");\n }\n }\n\n invalidateContaining(keyPart) {\n if (typeof keyPart !== \"string\" || keyPart === \"\") {\n throw new Error(\"Trying to invalidate containing wrong key or empty key: \" + keyPart);\n }\n\n try {\n const matchedKeys = Array.from(this._cache.keys()).filter(\n key => typeof key === \"string\" && new RegExp(keyPart).test(key)\n );\n for (let i = 0; i < matchedKeys.length; ++i) {\n this._cache.delete(matchedKeys[i]);\n }\n } catch (e) {\n improveAndRethrow(e, \"invalidateContaining\");\n }\n }\n\n clear() {\n this._cache.clear();\n this._sessionDependentDataKeys = [];\n }\n\n /**\n * Saves given data string to persistent cache.\n * NOTE: we have no TTL here, implement if needed.\n *\n * WARNING: use only when really needed and don't store big data as we use localStorage\n * under the hood and its capacity is restricted.\n *\n * @param uniqueKey {string} the key should be unique\n * @param data {string} only string data allowed\n */\n putClientPersistentData(uniqueKey, data) {\n try {\n if (typeof window !== \"undefined\") {\n localStorage.setItem(uniqueKey, data);\n }\n } catch (e) {\n improveAndRethrow(e, \"cache.putClientPersistentData\");\n }\n }\n\n /**\n * @param uniqueKey {string}\n * @return {string|null}\n */\n getClientPersistentData(uniqueKey) {\n try {\n if (typeof window !== \"undefined\") {\n return localStorage.getItem(uniqueKey);\n }\n return null;\n } catch (e) {\n improveAndRethrow(e, \"cache.getClientPersistentData\");\n }\n }\n\n /**\n * Only makes effect if the TTL is not null.\n *\n * @param key {string}\n * @param ttlMs {number|null}\n */\n markCacheItemAsExpiredButDontRemove(key, ttlMs = null) {\n try {\n const item = this._cache.get(key);\n const ttlFinalMs = ttlMs ?? item?.ttlMs;\n if (item != null && ttlFinalMs) {\n this._cache.set(key, {\n data: item.data,\n addedMsTimestamp: Date.now() - ttlFinalMs - 1,\n ttlMs: ttlFinalMs,\n });\n }\n } catch (e) {\n improveAndRethrow(e, \"cache.markCacheItemAsExpiredButDontRemove\");\n }\n }\n}\n","export function postponeExecution(execution, timeoutMS = 1000) {\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n resolve(await execution());\n } catch (e) {\n reject(e);\n }\n }, timeoutMS);\n });\n}\n","import axios from \"axios\";\n\nexport class AxiosAdapter {\n static async call(method, ...args) {\n return await axios[method](...args);\n }\n\n static async get(...args) {\n return await axios.get(...args);\n }\n\n static async post(...args) {\n return await axios.post(...args);\n }\n\n static async put(...args) {\n return await axios.put(...args);\n }\n\n static async delete(...args) {\n return await axios.delete(...args);\n }\n\n static async patch(...args) {\n return await axios.patch(...args);\n }\n\n static async options(...args) {\n return await axios.options(...args);\n }\n\n static async head(...args) {\n return await axios.head(...args);\n }\n}\n","import axios from \"axios\";\n\nimport { improveAndRethrow } from \"../errorUtils.js\";\n\nexport class EmailsApi {\n static serverEndpointEntity = \"emails\";\n\n static async sendEmail(subject, body) {\n try {\n const url = `${window.location.protocol + \"//\" + window.location.host}/api/v1/${this.serverEndpointEntity}`;\n await axios.post(url, { subject, body });\n } catch (e) {\n improveAndRethrow(e, \"sendEmail\", subject + body);\n }\n }\n}\n","export class ExternalApiProvider {\n /**\n * Creates an instance of external api provider.\n *\n * If you need sub-request then use 'subRequestIndex' to check current request index in functions below.\n * Also use array for 'httpMethod'.\n *\n * If the endpoint of dedicated provider has pagination then you should customize the behavior using\n * \"changeQueryParametersForPageNumber\", \"checkWhetherResponseIsForLastPage\".\n *\n * We perform RPS counting all over the App to avoid blocking our clients due to abuses of the providers.\n *\n * @param endpoint {string} URL to the provider's endpoint. Note: you can customize it using composeQueryString\n * @param [httpMethod] {string|string[]} one of \"get\", \"post\", \"put\", \"patch\", \"delete\" or an array of these values\n * for request having sub-requests\n * @param [timeout] {number} number of milliseconds to wait for the response\n * @param [apiGroup] {ApiGroup} singleton object containing parameters of API group. Helpful when you use the same\n * api for different providers to avoid hardcoding RPS inside each provider what can cause mistakes\n * @param [specificHeaders] {Object} contains specific keys (headers) and values (their content) if needed for this provider\n * @param [maxPageLength] {number} optional number of items per page if the request supports pagination\n */\n constructor(\n endpoint,\n httpMethod,\n timeout,\n apiGroup,\n specificHeaders = {},\n maxPageLength = Number.MAX_SAFE_INTEGER\n ) {\n this.endpoint = endpoint;\n this.httpMethod = httpMethod ?? \"get\";\n // TODO: [refactoring, critical] We have two timeouts for robust data retrieval - here and inside the service method call, need to remain the only\n this.timeout = timeout ?? 10000;\n // TODO: [refactoring, critical] We need single place for all RPSes as we use them as hardcoded constants now inside different services\n this.apiGroup = apiGroup;\n this.maxPageLength = maxPageLength ?? Number.MAX_SAFE_INTEGER;\n this.niceFactor = 1;\n this.specificHeaders = specificHeaders ?? {};\n }\n\n getRps() {\n return this.apiGroup.rps ?? 2;\n }\n\n isRpsExceeded() {\n return this.apiGroup.isRpsExceeded();\n }\n\n actualizeLastCalledTimestamp() {\n this.apiGroup.actualizeLastCalledTimestamp();\n }\n\n getApiGroupId() {\n return this.apiGroup.id;\n }\n\n /**\n * Some endpoint can require several sub requests. Example is one request to get confirmed transactions\n * and another request for unconfirmed transactions. You should override this method to return true for such requests.\n *\n * @return {boolean} true if this provider requires several requests to retrieve the data\n */\n doesRequireSubRequests() {\n return false;\n }\n\n /**\n * Some endpoint support pagination. Override this method if so and implement corresponding methods.\n *\n * @return {boolean} true if this provider requires several requests to retrieve the data\n */\n doesSupportPagination() {\n return false;\n }\n\n /**\n * Composes a query string to be added to the endpoint of this provider.\n *\n * @param params {any[]} params array passed to the RobustExternalAPICallerService\n * @param [subRequestIndex] {number} optional number of the sub-request the call is performed for\n * @returns {string} query string to be concatenated with endpoint\n */\n composeQueryString(params, subRequestIndex = 0) {\n return \"\";\n }\n\n /**\n * Composes a body to be added to the request\n *\n * @param params {any[]} params array passed to the RobustExternalAPICallerService\n * @param [subRequestIndex] {number} optional number of the sub-request the call is performed for\n * @returns {string}\n */\n composeBody(params, subRequestIndex = 0) {\n return \"\";\n }\n\n /**\n * Extracts data from the response and returns it\n *\n * @param response {Object} HTTP response returned by provider\n * @param [params] {any[]} params array passed to the RobustExternalAPICallerService\n * @param [subRequestIndex] {number} optional number of the sub-request the call is performed for\n * @param iterationsData {any[]} array of data retrieved from previous sub-requests\n * @returns {any}\n */\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return [];\n }\n\n /**\n * Function changing the query string according to page number and previous response\n * Only for endpoints supporting pagination\n *\n * @param params {any[]} params array passed to the RobustExternalAPICallerService\n * @param previousResponse {Object} HTTP response returned by provider for previous call (previous page)\n * @param pageNumber {number} new page number. We count from 0. You need to manually increment with 1 if your\n * provider counts pages starting with 1\n * @param [subRequestIndex] {number} optional number of the sub-request the call is performed for\n * @returns {any[]}\n */\n changeQueryParametersForPageNumber(params, previousResponse, pageNumber, subRequestIndex = 0) {\n return params;\n }\n\n /**\n * Function checking whether the response is for the last page to stop requesting for a next page.\n * Only for endpoints supporting pagination.\n *\n * @param previousResponse {Object} HTTP response returned by provider for previous call (previous page)\n * @param currentResponse {Object} HTTP response returned by provider for current call (current page, next after the previous)\n * @param currentPageNumber {number} current page number (for current response)\n * @param [subRequestIndex] {number} optional number of the sub-request the call is performed for\n * @returns {boolean}\n */\n checkWhetherResponseIsForLastPage(previousResponse, currentResponse, currentPageNumber, subRequestIndex = 0) {\n return true;\n }\n\n /**\n * Resets the nice factor to default value\n */\n resetNiceFactor() {\n this.niceFactor = 1;\n }\n\n /**\n * Internal method used for requests requiring sub-requests.\n *\n * @param iterationsData {any[]} iterations data retrieved from getDataByResponse called per sub-request.\n * @return {any} by default flatten the passed iterations data array. Should be redefined if you need another logic.\n */\n incorporateIterationsData(iterationsData) {\n return iterationsData.flat();\n }\n}\n","/**\n * Models a group of APIs provided by the same owner and used for different services in our app.\n * It means we need to mention RPS several times for each usage and also have some holder of last call timestamp per\n * api group. So this concept allows to use it for exact ExternalApiProvider and make sure that you use the same\n * RPS value and make decisions on base of the same timestamp of last call to the API group owner.\n */\nexport class ApiGroup {\n constructor(id, rps, backendProxyIdGenerator = null) {\n this.id = id;\n this.rps = rps;\n this.lastCalledTimestamp = null;\n this.backendProxyIdGenerator = backendProxyIdGenerator;\n }\n\n isRpsExceeded() {\n return (this.lastCalledTimestamp ?? 0) + Math.floor(1000 / this.rps) > Date.now();\n }\n\n actualizeLastCalledTimestamp() {\n this.lastCalledTimestamp = Date.now();\n }\n}\n\nexport const ApiGroups = {\n /**\n * Currently we use free version of etherscan provider with 0.2 RPS. But we have API key with 100k requests free\n * per month. So we can add it if not enough current RPS.\n */\n ETHERSCAN: new ApiGroup(\"etherscan\", 0.17), // Actually 0.2 but fails sometime, so we use smaller\n ALCHEMY: new ApiGroup(\"alchemy\", 0.3, networkKey => `alchemy-${networkKey}`),\n BLOCKSTREAM: new ApiGroup(\"blockstream\", 0.2),\n BLOCKCHAIN_INFO: new ApiGroup(\"blockchain.info\", 1),\n BLOCKNATIVE: new ApiGroup(\"blocknative\", 0.5),\n ETHGASSTATION: new ApiGroup(\"ethgasstation\", 0.5),\n TRONGRID: new ApiGroup(\"trongrid\", 0.3, networkKey => `trongrid-${networkKey}`),\n TRONSCAN: new ApiGroup(\"tronscan\", 0.3),\n GETBLOCK: new ApiGroup(\"getblock\", 0.3),\n COINCAP: new ApiGroup(\"coincap\", 0.5), // 200 per minute without API key\n COINGECKO: new ApiGroup(\"coingecko\", 0.9), // actually 0.13-0.5 according to the docs but we use smaller due to expirienced frequent abuses\n MESSARI: new ApiGroup(\"messari\", 0.2),\n BTCCOM: new ApiGroup(\"btccom\", 0.2),\n BITAPS: new ApiGroup(\"bitaps\", 0.25), // Docs say that RPS is 3 but using it causes frequent 429 HTTP errors\n CEX: new ApiGroup(\"cex\", 0.5), // Just assumption for RPS\n BIGDATACLOUD: new ApiGroup(\"bigdatacloud\", 1), // Just assumption for RPS\n TRACKIP: new ApiGroup(\"trackip\", 1), // Just assumption for RPS\n IPIFY: new ApiGroup(\"ipify\", 1), // Just assumption for RPS\n WHATISMYIPADDRESS: new ApiGroup(\"whatismyipaddress\", 1), // Just assumption for RPS\n EXCHANGERATE: new ApiGroup(\"exchangerate\", 1), // Just assumption for RPS\n FRANKFURTER: new ApiGroup(\"frankfurter\", 1), // Just assumption for RPS\n BITGO: new ApiGroup(\"bitgo\", 1), // Just assumption for RPS\n BITCOINER: new ApiGroup(\"bitcoiner\", 1), // Just assumption for RPS\n BITCORE: new ApiGroup(\"bitcore\", 1), // Just assumption for RPS\n // BLOCKCHAIR: new ApiGroup(\"blockchair\", 0.04), // this provider require API key for commercial use (10usd 10000 reqs), we will add it later\n MEMPOOL: new ApiGroup(\"mempool\", 0.2), // Just assumption for RPS\n};\n","import { v4 } from \"uuid\";\n\nimport { Logger } from \"../common/utils/logging/logger.js\";\n\n// TODO: [refactoring, low] Consider removing this logic task_id=c360f2af75764bde8badd9ff1cc00d48\nexport class ConcurrentCalculationsMetadataHolder {\n constructor() {\n this._calculations = {};\n }\n\n startCalculation(domain, calculationsHistoryMaxLength = 100) {\n if (!this._calculations[domain]) {\n this._calculations[domain] = [];\n }\n\n if (this._calculations[domain].length > calculationsHistoryMaxLength) {\n this._calculations[domain] = this._calculations[domain].slice(\n Math.round(calculationsHistoryMaxLength * 0.2)\n );\n }\n\n const newCalculation = {\n startTimestamp: Date.now(),\n endTimestamp: null,\n uuid: v4(),\n };\n\n this._calculations[domain].push(newCalculation);\n\n return newCalculation.uuid;\n }\n\n endCalculation(domain, uuid, isFailed = false) {\n try {\n const calculation = this._calculations[domain].find(calculation => calculation?.uuid === uuid);\n if (calculation) {\n calculation.endTimestamp = Date.now();\n calculation.isFiled = isFailed;\n }\n\n const elapsed = (((calculation?.endTimestamp ?? 0) - (calculation?.startTimestamp ?? 0)) / 1000).toFixed(1);\n Logger.log(\"endCalculation\", `${elapsed} ms: ${domain}.${(calculation?.uuid ?? \"\").slice(0, 7)}`);\n\n return calculation;\n } catch (e) {\n Logger.logError(e, \"endCalculation\");\n }\n }\n\n isCalculationLate(domain, uuid) {\n const queue = this._calculations[domain];\n const analysingCalculation = queue.find(item => item.uuid === uuid);\n return (\n analysingCalculation &&\n !!queue.find(\n calculation =>\n calculation.endTimestamp != null && calculation.startTimestamp > analysingCalculation.startTimestamp\n )\n );\n }\n\n printCalculationsWaitingMoreThanSpecifiedSeconds(waitingLastsMs = 2000) {\n const calculations = Object.keys(this._calculations)\n .map(domain => this._calculations[domain].map(c => ({ ...c, domain })))\n .flat()\n .filter(c => c.endTimestamp === null && Date.now() - c.startTimestamp > waitingLastsMs);\n Logger.log(\n \"printCalculationsWaitingMoreThanSpecifiedSeconds\",\n `Calculations waiting more than ${(waitingLastsMs / 1000).toFixed(1)}s:\\n` +\n calculations.map(c => `${c.domain}.${c.uuid.slice(0, 8)}: ${Date.now() - c.startTimestamp}\\n`)\n );\n }\n}\n\nexport const concurrentCalculationsMetadataHolder = new ConcurrentCalculationsMetadataHolder();\n","import { improveAndRethrow } from \"../common/errorUtils.js\";\nimport { Logger } from \"../common/utils/logging/logger.js\";\n\nexport class ExternalServicesStatsCollector {\n constructor() {\n this.stats = new Map();\n }\n\n externalServiceFailed(serviceUrl, message) {\n try {\n const processMessage = (stat, errorMessage) => {\n const errors = stat.errors ?? {};\n errorMessage = errorMessage ?? \"\";\n if (errorMessage.match(/.*network.+error.*/i)) {\n errors[\"networkError\"] = (errors[\"networkError\"] || 0) + 1;\n } else if (errorMessage.match(/.*timeout.+exceeded.*/i)) {\n errors[\"timeoutExceeded\"] = (errors[\"timeoutExceeded\"] || 0) + 1;\n } else if (errors[\"other\"]) {\n errors[\"other\"].push(message);\n } else {\n errors[\"other\"] = [message];\n }\n\n stat.errors = errors;\n };\n\n if (this.stats.has(serviceUrl)) {\n const stat = this.stats.get(serviceUrl);\n stat.callsCount += 1;\n stat.failsCount += 1;\n processMessage(stat, message);\n } else {\n this.stats.set(serviceUrl, { callsCount: 1, failsCount: 1 });\n processMessage(this.stats.get(serviceUrl), message);\n }\n } catch (e) {\n improveAndRethrow(e, \"externalServiceFailed\");\n }\n }\n\n externalServiceCalledWithoutError(serviceUrl) {\n try {\n if (this.stats.has(serviceUrl)) {\n const stat = this.stats.get(serviceUrl);\n stat.callsCount += 1;\n } else {\n this.stats.set(serviceUrl, { callsCount: 1, failsCount: 0 });\n }\n } catch (e) {\n improveAndRethrow(e, \"externalServiceCalledWithoutError\");\n }\n }\n\n /**\n * Returns statistics about external services failures.\n * Provides how many calls were performed and what the percent of failed calls. Also returns errors stat.\n *\n * @return {Array<object>} Array of objects of type { failsPerCent: number, calls: number }\n * sorted by the highest fails percent desc\n */\n getStats() {\n try {\n return Array.from(this.stats.keys())\n .map(key => {\n const stat = this.stats.get(key);\n return {\n url: key,\n failsPerCent: ((stat.failsCount / stat.callsCount) * 100).toFixed(2),\n calls: stat.callsCount,\n errors: stat.errors ?? [],\n };\n })\n .sort((s1, s2) => s1.failsPerCent - s2.failsPerCent);\n } catch (e) {\n Logger.logError(e, \"getStats\");\n }\n }\n}\n","import { improveAndRethrow } from \"../common/errorUtils.js\";\nimport { safeStringify } from \"../common/utils/safeStringify.js\";\nimport { Logger } from \"../common/utils/logging/logger.js\";\nimport { postponeExecution } from \"../common/utils/postponeExecution.js\";\nimport { AxiosAdapter } from \"../common/adapters/axiosAdapter.js\";\n\nimport { concurrentCalculationsMetadataHolder } from \"./concurrentCalculationsMetadataHolder.js\";\nimport { ExternalServicesStatsCollector } from \"./externalServicesStatsCollector.js\";\n\n/**\n * TODO: [refactoring, critical] update backend copy of this service. Also there is a task to extract this\n * service and other related to it stuff to dedicated npm package task_id=b008ee5e4a3f42c08c73831c4bb3db4e\n *\n * Template service needed to avoid duplication of the same logic when we need to call\n * external APIs to retrieve some data. The idea is to use several API providers to retrieve the same data. It helps to\n * improve the reliability of a data retrieval.\n */\nexport class RobustExternalAPICallerService {\n static statsCollector = new ExternalServicesStatsCollector();\n\n static getStats() {\n return this.statsCollector.getStats();\n }\n\n /**\n * @param bio {string} service name for logging\n * @param providersData {ExternalApiProvider[]} array of providers\n * @param [logger] {function} function to be used for logging\n */\n constructor(bio, providersData, logger = Logger.logError) {\n providersData.forEach(provider => {\n if ((!provider.endpoint && provider.endpoint !== \"\") || !provider.httpMethod) {\n throw new Error(`Wrong format of providers data for: ${JSON.stringify(provider)}`);\n }\n });\n\n // We add niceFactor - just number to order the providers array by. It is helpful to call\n // less robust APIs only if more robust fails\n this.providers = providersData;\n providersData.forEach(provider => provider.resetNiceFactor());\n this.bio = bio;\n this._logger = (...args) => {\n Logger.logError(...args);\n };\n }\n\n static defaultRPSFactor = 1;\n static rpsMultiplier = 1.05;\n\n /**\n * Performs data retrieval from external APIs. Tries providers till the data is retrieved.\n *\n * @param parametersValues {array} array of values of the parameters for URL query string [and/or body]\n * @param timeoutMS {number} http timeout to wait for response. If provider has its specific timeout value then it is used\n * @param [cancelToken] {object|undefined} axios token to force-cancel requests from high-level code\n * @param [attemptsCount] {number|undefined} number of attempts to be performed\n * @param [doNotFailForNowData] {boolean|undefined} pass true if you do not want us to throw an error if we retrieved null data from all the providers\n * @return {Promise<any>} resolving to retrieved data (or array of results if specific provider requires\n * several requests. NOTE: we flatten nested arrays - results of each separate request done for the specific provider)\n * @throws Error if requests to all providers are failed\n */\n async callExternalAPI(\n parametersValues = [],\n timeoutMS = 3500,\n cancelToken = null,\n attemptsCount = 1,\n doNotFailForNowData = false\n ) {\n let result;\n const calculationUuid = concurrentCalculationsMetadataHolder.startCalculation(this.bio);\n\n try {\n for (let i = 0; (i < attemptsCount || result?.shouldBeForceRetried) && result?.data == null; ++i) {\n /**\n * We use rpsFactor to improve re-attempting to call the providers if the last attempt resulted with\n * the fail due to abused RPSes of some (most part of) providers.\n * The _performCallAttempt in such a case will return increased rpsFactor inside the result object.\n */\n const rpsFactor = result ? result.rpsFactor : RobustExternalAPICallerService.defaultRPSFactor;\n\n result = null;\n\n try {\n if (i === 0 && !result?.shouldBeForceRetried) {\n result = await this._performCallAttempt(\n parametersValues,\n timeoutMS,\n cancelToken,\n rpsFactor,\n doNotFailForNowData\n );\n } else {\n const maxRps = Math.max(...this.providers.map(provider => provider.getRps() ?? 0));\n const waitingTimeMs = maxRps ? 1000 / (maxRps / rpsFactor) : 0;\n\n result = await new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n resolve(\n await this._performCallAttempt(\n parametersValues,\n timeoutMS,\n cancelToken,\n rpsFactor,\n doNotFailForNowData\n )\n );\n } catch (e) {\n reject(e);\n }\n }, waitingTimeMs);\n });\n }\n if (result.errors?.length) {\n const errors = result.errors;\n this._logger(\n new Error(\n `Failed at attempt ${i}. ${errors.length} errors. Messages: ${safeStringify(\n errors.map(error => error.message)\n )}: ${safeStringify(errors)}.`\n ),\n `${this.bio}.callExternalAPI`,\n \"\",\n true\n );\n }\n } catch (e) {\n this._logger(e, `${this.bio}.callExternalAPI`, \"Failed to perform external providers calling\");\n }\n }\n\n if (result?.data == null) {\n // TODO: [feature, moderate] looks like we should not fail for null data as it is strange - the provider will fail when processing data internally\n const error = new Error(\n `Failed to retrieve data. It means all attempts have been failed. DEV: add more attempts to this data retrieval`\n );\n if (!doNotFailForNowData) {\n throw error;\n } else {\n this._logger(error, `${this.bio}.callExternalAPI`);\n }\n }\n\n return result?.data;\n } catch (e) {\n improveAndRethrow(e, `${this.bio}.callExternalAPI`);\n } finally {\n concurrentCalculationsMetadataHolder.endCalculation(this.bio, calculationUuid);\n }\n }\n\n async _performCallAttempt(parametersValues, timeoutMS, cancelToken, rpsFactor, doNotFailForNowData) {\n const providers = this._reorderProvidersByNiceFactor();\n let data = undefined,\n providerIndex = 0,\n countOfRequestsDeclinedByRps = 0,\n errors = [];\n while (!data && providerIndex < providers.length) {\n let provider = providers[providerIndex];\n if (provider.isRpsExceeded()) {\n /**\n * Current provider's RPS is exceeded, so we try next provider. Also, we count such cases to make\n * a decision about the force-retry need.\n */\n ++providerIndex;\n ++countOfRequestsDeclinedByRps;\n continue;\n }\n\n try {\n const axiosConfig = {\n ...(cancelToken ? { cancelToken } : {}),\n timeout: provider.timeout || timeoutMS,\n headers: provider.specificHeaders ?? {},\n };\n const httpMethods = Array.isArray(provider.httpMethod) ? provider.httpMethod : [provider.httpMethod];\n const iterationsData = [];\n for (let subRequestIndex = 0; subRequestIndex < httpMethods.length; ++subRequestIndex) {\n const query = provider.composeQueryString(parametersValues, subRequestIndex);\n const endpoint = `${provider.endpoint}${query}`;\n const axiosParams = [endpoint, axiosConfig];\n if ([\"post\", \"put\", \"patch\"].find(method => method === httpMethods[subRequestIndex])) {\n const body = provider.composeBody(parametersValues, subRequestIndex) ?? null;\n axiosParams.splice(1, 0, body);\n }\n\n let pageNumber = 0;\n const responsesForPages = [];\n let hasNextPage = provider.doesSupportPagination();\n do {\n if (subRequestIndex === 0 && pageNumber === 0) {\n provider.actualizeLastCalledTimestamp();\n responsesForPages[pageNumber] = await AxiosAdapter.call(\n httpMethods[subRequestIndex],\n ...axiosParams\n );\n RobustExternalAPICallerService.statsCollector.externalServiceCalledWithoutError(\n provider.getApiGroupId()\n );\n } else {\n if (pageNumber > 0) {\n const actualizedParams = provider.changeQueryParametersForPageNumber(\n parametersValues,\n responsesForPages[pageNumber - 1],\n pageNumber,\n subRequestIndex\n );\n const query = provider.composeQueryString(actualizedParams, subRequestIndex);\n axiosParams[0] = `${provider.endpoint}${query}`;\n }\n /**\n * For second and more request we postpone each request to not exceed RPS\n * of current provider. We use rpsFactor to dynamically increase the rps to avoid\n * too frequent calls if we continue failing to retrieve the data due to RPS exceeding.\n * TODO: [dev] test RPS factor logic (units or integration)\n */\n\n const waitingTimeMS = provider.getRps() ? 1000 / (provider.getRps() / rpsFactor) : 0;\n\n const postponeUntilRpsExceeded = async (recursionLevel = 0) => {\n return await postponeExecution(async () => {\n const maxCountOfPostponingAttempts = 2;\n if (provider.isRpsExceeded() && recursionLevel < maxCountOfPostponingAttempts) {\n return await postponeUntilRpsExceeded(recursionLevel + 1);\n }\n provider.actualizeLastCalledTimestamp();\n return await AxiosAdapter.call(httpMethods[subRequestIndex], ...axiosParams);\n }, waitingTimeMS);\n };\n\n responsesForPages[pageNumber] = await postponeUntilRpsExceeded();\n }\n\n if (hasNextPage) {\n hasNextPage = !provider.checkWhetherResponseIsForLastPage(\n responsesForPages[pageNumber - 1],\n responsesForPages[pageNumber],\n pageNumber,\n subRequestIndex\n );\n }\n pageNumber++;\n } while (hasNextPage);\n\n const responsesDataForPages = responsesForPages.map(response =>\n provider.getDataByResponse(response, parametersValues, subRequestIndex, iterationsData)\n );\n\n let allData = responsesDataForPages;\n if (Array.isArray(responsesDataForPages[0])) {\n allData = responsesDataForPages.flat();\n } else if (responsesDataForPages.length === 1) {\n allData = responsesDataForPages[0];\n }\n\n iterationsData.push(allData);\n }\n if (iterationsData.length) {\n if (httpMethods.length > 1) {\n data = provider.incorporateIterationsData(iterationsData);\n } else {\n data = iterationsData[0];\n }\n } else if (!doNotFailForNowData) {\n RobustExternalAPICallerService.statsCollector.externalServiceFailed(\n provider.getApiGroupId(),\n \"Response data was null for some reason\"\n );\n punishProvider(provider);\n }\n } catch (e) {\n punishProvider(provider);\n RobustExternalAPICallerService.statsCollector.externalServiceFailed(\n provider.getApiGroupId(),\n e?.message\n );\n errors.push(e);\n } finally {\n providerIndex++;\n }\n }\n\n // If we are declining more than 50% of providers (by exceeding RPS) then we note that it better to retry the whole process of providers requesting\n const shouldBeForceRetried = data == null && countOfRequestsDeclinedByRps > Math.floor(providers.length * 0.5);\n const rpsMultiplier = shouldBeForceRetried ? RobustExternalAPICallerService.rpsMultiplier : 1;\n\n return {\n data: data ?? null,\n shouldBeForceRetried,\n rpsFactor: rpsFactor * rpsMultiplier,\n errors,\n };\n }\n\n _reorderProvidersByNiceFactor() {\n const providersCopy = [...this.providers];\n\n return providersCopy.sort((p1, p2) => p2.niceFactor - p1.niceFactor);\n }\n}\n\nfunction punishProvider(provider) {\n provider.niceFactor = provider.niceFactor - 1;\n}\n","import { v4 } from \"uuid\";\n\nimport { improveAndRethrow } from \"../common/errorUtils.js\";\nimport { Logger } from \"../common/utils/logging/logger.js\";\n\n/**\n * This util helps to avoid duplicated calls to a shared resource.\n * It tracks is there currently active calculation for the specific cache id and make all other requests\n * with the same cache id waiting for this active calculation to be finished. When the calculation ends\n * the resolver allows all the waiting requesters to get the data from cache and start their own calculations.\n *\n * This class should be instantiated inside some other service where you need to request some resource concurrently.\n * Rules:\n * 1. When you need to make a request inside your main service call 'getCachedOrWaitForCachedOrAcquireLock'\n * on the instance of this class and await for the result. If the flag allowing to start calculation is true\n * then you can request data inside your main service. Otherwise you should use the cached data as an another\n * requester just finished the most resent requesting and there is actual data in the cache that\n * is returned to you here.\n * 1.1 Also you can acquire a lock directly if you don't want to get cached data. Use the corresponding method 'acquireLock'.\n *\n * 2. If you start requesting (when you successfully acquired the lock) then after receiving the result of your\n * requesting you should call the 'saveCachedData' so the retrieved data will appear in the cache.\n *\n * 3. If you successfully acquired the lock then you should after calling the 'saveCachedData' call\n * the 'releaseLock' - this is mandatory to release the lock and allow other requesters to perform their requests.\n * WARNING: If for any reason you forget to call this method then this class instance will wait perpetually for\n * the lock releasing and all your attempts to request the data will constantly fail. So usually call it\n * inside the 'finally' block.\n *\n * TODO: [tests, critical++] add unit tests - massively used logic and can produce sophisticated concurrency bugs\n */\nexport class CacheAndConcurrentRequestsResolver {\n /**\n * @param bio {string} unique identifier for the exact service\n * @param cache {Cache} cache\n * @param cacheTtl {number|null} time to live for cache ms. 0 or null means the cache cannot expire\n * @param [maxCallAttemptsToWaitForAlreadyRunningRequest=100] {number} number of request allowed to do waiting for\n * result before we fail the original request. Use custom value only if you need to make the attempts count\n * and polling interval changes.\n * @param [timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished=1000] {number}\n * timeout ms for polling for a result. if you change maxCallAttemptsToWaitForAlreadyRunningRequest\n * then this parameter maybe also require the custom value.\n * @param [removeExpiredCacheAutomatically=true] {boolean}\n */\n constructor(\n bio,\n cache,\n cacheTtl,\n removeExpiredCacheAutomatically = true,\n maxCallAttemptsToWaitForAlreadyRunningRequest = 100,\n timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished = 1000\n ) {\n if (cacheTtl != null && cacheTtl < timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished * 2) {\n /*\n * During the lifetime of this service e.g. if the data is being retrieved slowly we can get\n * RACE CONDITION when we constantly retrieve data and during retrieval it is expired, so we are trying\n * to retrieve it again and again.\n * We have a protection mechanism that we will wait no more than\n * maxCallAttemptsToWaitForAlreadyRunningRequest * timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished\n * but this additional check is aimed to reduce potential loading time for some requests.\n */\n throw new Error(\n `DEV: Wrong parameters passed to construct ${bio} - TTL ${cacheTtl} should be 2 times greater than ${timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished}`\n );\n }\n this._bio = bio;\n this._cache = cache;\n this._cacheTtlMs = cacheTtl != null ? cacheTtl : null;\n this._maxExecutionTimeMs =\n maxCallAttemptsToWaitForAlreadyRunningRequest *\n timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished;\n this._removeExpiredCacheAutomatically = removeExpiredCacheAutomatically;\n this._requestsManager = new ManagerOfRequestsToTheSameResource(\n bio,\n maxCallAttemptsToWaitForAlreadyRunningRequest,\n timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished\n );\n }\n\n /**\n * When using this service this is the major method you should call to get data by cache id.\n * This method checks is there cached data and ether\n * - returns you flag that you can start requesting data from the shared resource\n * - or if there is already started calculation waits until it is finished (removed from this service)\n * and returns you the retrieved data\n * - or just returns you the cached data\n *\n * 'canStartDataRetrieval' equal true means that the lock was acquired, and you should manually call 'saveCachedData'\n * if needed and then 'releaseLock' to mark this calculation as finished so other\n * requesters can take their share of the resource.\n *\n * @param cacheId {string}\n * @return {Promise<({\n * canStartDataRetrieval: true,\n * cachedData: any,\n * lockId: string\n * }|{\n * canStartDataRetrieval: false,\n * cachedData: any\n * })>}\n */\n async getCachedOrWaitForCachedOrAcquireLock(cacheId) {\n try {\n const startedAtTimestamp = Date.now();\n let cached = this._cache.get(cacheId);\n let cachedDataBackupIsPresentButExpired = null;\n if (cached != null && !this._removeExpiredCacheAutomatically) {\n const lastUpdateTimestamp = this._cache.getLastUpdateTimestamp(cacheId);\n if ((lastUpdateTimestamp ?? 0) + this._cacheTtlMs < Date.now()) {\n /*\n * Here we are manually clearing 'cached' value retrieved from cache to force the data loading.\n * But we save its value first to the backup variable to be able to return this value if ongoing\n * requesting fails.\n */\n cachedDataBackupIsPresentButExpired = cached;\n cached = null;\n }\n }\n let calculationId = null;\n let isRetrievedCacheExpired = true;\n let isWaitingForActiveCalculationSucceeded;\n let weStillHaveSomeTimeToProceedExecution = true;\n while (\n calculationId == null &&\n cached == null &&\n isRetrievedCacheExpired &&\n weStillHaveSomeTimeToProceedExecution\n ) {\n const result = await this._requestsManager.startCalculationOrWaitForActiveToFinish(cacheId);\n calculationId = typeof result === \"string\" ? result : null;\n isWaitingForActiveCalculationSucceeded = typeof result === \"boolean\" ? result : null;\n cached = this._cache.get(cacheId);\n isRetrievedCacheExpired = isWaitingForActiveCalculationSucceeded && cached == null;\n weStillHaveSomeTimeToProceedExecution = Date.now() - startedAtTimestamp < this._maxExecutionTimeMs;\n }\n if (calculationId) {\n return {\n canStartDataRetrieval: true,\n cachedData: cached ?? cachedDataBackupIsPresentButExpired,\n lockId: calculationId,\n };\n }\n\n return {\n canStartDataRetrieval: false,\n cachedData: cached ?? cachedDataBackupIsPresentButExpired,\n };\n } catch (e) {\n improveAndRethrow(e, `${this._bio}.getCachedOrWaitForCachedOrAcquireLock`);\n }\n }\n\n /**\n * Returns just the current cache value for the given id.\n * Doesn't wait for the active calculation, doesn't acquire lock, just retrieves the current cache as it is.\n *\n * @param cacheId {string}\n * @return {any}\n */\n getCached(cacheId) {\n try {\n return this._cache.get(cacheId);\n } catch (e) {\n improveAndRethrow(e, \"getCached\");\n }\n }\n\n _getTtl() {\n return this._removeExpiredCacheAutomatically ? this._cacheTtlMs : null;\n }\n\n /**\n * Directly acquires the lock despite on cached data availability.\n * So if this method returns result === true you can start the data retrieval.\n *\n * @param cacheId {string}\n * @return {Promise<{ result: true, lockId: string }|{ result: false }>}\n */\n async acquireLock(cacheId) {\n try {\n return await this._requestsManager.acquireLock(cacheId);\n } catch (e) {\n improveAndRethrow(e, \"acquireLock\");\n }\n }\n\n /**\n * This method should be called only if you acquired a lock successfully.\n *\n * If the current lock id is not equal to the passed one the passed data will be ignored.\n * Or you can do the synchronous data merging on your side and pass the\n * wasDataMergedSynchronouslyWithMostRecentCacheState=true so your data will be stored\n * despite on the lockId.\n * WARNING: you should do this only if you are sure you perform the synchronous update.\n *\n * @param cacheId {string}\n * @param lockId {string}\n * @param data {any}\n * @param [sessionDependentData=true] {boolean}\n * @param [wasDataMergedSynchronouslyWithMostRecentCacheState=false]\n */\n saveCachedData(\n cacheId,\n lockId,\n data,\n sessionDependentData = true,\n wasDataMergedSynchronouslyWithMostRecentCacheState = false\n ) {\n try {\n if (\n wasDataMergedSynchronouslyWithMostRecentCacheState ||\n this._requestsManager.isTheLockActiveOne(cacheId, lockId)\n ) {\n /* We save passed data only if the <caller> has the currently acquired lockId.\n * If the passed lockId is not the active one it means that other code cleared/stopped the lock\n * acquired by the <caller> recently due to some urgent/more prior changes.\n *\n * But we allow user to pass the 'wasDataMergedSynchronouslyWithMostRecentCacheState' flag\n * that tells us that the user had taken the most recent cache value and merged his new data\n * with that cached value (AFTER possibly performing async data retrieval). This means that we\n * can ignore the fact that his lockId is no more relevant and save the passed data\n * as it is synchronously merged with the most recent cached data. (Synchronously merged means that\n * the lost update cannot occur during the merge time as JS execute the synchronous functions\\\n * till the end).\n */\n if (sessionDependentData) {\n this._cache.putSessionDependentData(cacheId, data, this._getTtl());\n } else {\n this._cache.put(cacheId, data, this._getTtl());\n }\n }\n } catch (e) {\n improveAndRethrow(e, `${this._bio}.saveCachedData`);\n }\n }\n\n /**\n * Should be called then and only then if you successfully acquired a lock with the lock id.\n *\n * @param cacheId {string}\n * @param lockId {string}\n */\n releaseLock(cacheId, lockId) {\n try {\n if (this._requestsManager.isTheLockActiveOne(cacheId, lockId)) {\n this._requestsManager.finishActiveCalculation(cacheId);\n }\n } catch (e) {\n improveAndRethrow(e, `${this._bio}.releaseLock`);\n }\n }\n\n /**\n * Actualized currently present cached data by key. Applies the provided function to the cached data.\n *\n * @param cacheId {string} id of cache entry\n * @param synchronousCurrentCacheProcessor (function|null} synchronous function accepting cache entry. Should return\n * an object in following format:\n * {\n * isModified: boolean,\n * data: any\n * }\n * the flag signals whether data was changed during the processing or not\n * @param [sessionDependent=true] {boolean} whether to mark the cache entry as session-dependent\n */\n actualizeCachedData(cacheId, synchronousCurrentCacheProcessor, sessionDependent = true) {\n try {\n const cached = this._cache.get(cacheId);\n const result = synchronousCurrentCacheProcessor(cached);\n if (result?.isModified && result?.data != null) {\n if (sessionDependent) {\n this._cache.putSessionDependentData(cacheId, result?.data, this._getTtl());\n } else {\n this._cache.put(cacheId, result?.data, this._getTtl());\n }\n\n /* Here we call the lock releasing to ensure the currently active calculation will be ignored.\n * This is needed to ensure no 'lost update'.\n * Lost update can occur if we change data in this method and after that some calculation finishes\n * having the earlier data as its base to calculate its data set result. And the earlier data\n * has no changes applied inside this method, so we will lose them.\n *\n * This is not so good solution: ideally, we should acquire lock before performing any data updating.\n * But the goal of this method is to provide an instant ability to update the cached data.\n * And if we start acquiring the lock here the data update can be postponed significantly.\n * And this kills the desired nature of this method.\n * So we better lose some data retrieval (means abusing the resource a bit) than lose\n * the instant update expected after this method execution.\n */\n this._requestsManager.finishActiveCalculation(cacheId);\n }\n } catch (e) {\n improveAndRethrow(e, `${this._bio}.actualizeCachedData`);\n }\n }\n\n invalidate(key) {\n this._cache.invalidate(key);\n this._requestsManager.finishActiveCalculation(key);\n }\n\n invalidateContaining(keyPart) {\n this._cache.invalidateContaining(keyPart);\n this._requestsManager.finishAllActiveCalculations(keyPart);\n }\n\n markAsExpiredButDontRemove(key) {\n if (this._removeExpiredCacheAutomatically) {\n this._cache.markCacheItemAsExpiredButDontRemove(key, this._cacheTtlMs);\n } else {\n this._cache.setLastUpdateTimestamp(key, Date.now() - this._cacheTtlMs - 1);\n }\n this._requestsManager.finishAllActiveCalculations(key);\n }\n}\n\n/**\n * Util class to control access to a resource when it can be called in parallel for the same result.\n * (E.g. getting today coins-fiat rates from some API).\n */\nclass ManagerOfRequestsToTheSameResource {\n /**\n * @param bio {string} resource-related identifier for logging\n * @param [maxPollsCount=100] {number} max number of attempts to wait when waiting for a lock acquisition\n * @param [timeoutDuration=1000] {number} timeout between the polls for a lock acquisition\n */\n constructor(bio, maxPollsCount = 100, timeoutDuration = 1000) {\n this.bio = bio;\n this.maxPollsCount = maxPollsCount;\n this.timeoutDuration = timeoutDuration;\n this._activeCalculationsIds = new Map();\n this._nextCalculationIds = new Map();\n }\n\n /**\n * If there is no active calculation just creates uuid and returns it.\n * If there is active calculation waits until it removed from the active calculation uuid variable.\n *\n * @param requestHash {string}\n * @return {Promise<string|boolean>} returns uuid of new active calculation or true if waiting for active\n * calculation succeed or false if max attempts count exceeded\n */\n async startCalculationOrWaitForActiveToFinish(requestHash) {\n try {\n const activeCalculationIdForHash = this._activeCalculationsIds.get(requestHash);\n if (activeCalculationIdForHash == null) {\n const id = v4();\n this._activeCalculationsIds.set(requestHash, id);\n return id;\n }\n\n return await this._waitForCalculationIdToFinish(requestHash, activeCalculationIdForHash, 0);\n } catch (e) {\n Logger.logError(e, `startCalculationOrWaitForActiveToFinish_${this.bio}`);\n }\n\n return null;\n }\n\n /**\n * Acquires lock to the resource by the provided hash.\n *\n * @param requestHash {string}\n * @return {Promise<{ result: true, lockId: string }|{ result: false }>} result is true if the lock is successfully\n * acquired, false if the max allowed time to wait for acquisition expired or any unexpected error occurs\n * during the waiting.\n */\n async acquireLock(requestHash) {\n try {\n const activeId = this._activeCalculationsIds.get(requestHash);\n const nextId = v4();\n if (activeId == null) {\n this._activeCalculationsIds.set(requestHash, nextId);\n return { result: true, lockId: nextId };\n }\n\n const currentNext = this._nextCalculationIds.get(requestHash) ?? [];\n currentNext.push(nextId);\n this._nextCalculationIds.set(requestHash, currentNext);\n\n const waitingResult = await this._waitForCalculationIdToFinish(requestHash, activeId, 0, nextId);\n return {\n result: waitingResult,\n lockId: waitingResult ? nextId : undefined,\n };\n } catch (e) {\n improveAndRethrow(e, \"acquireLock\");\n }\n }\n\n /**\n * Clears active calculation id.\n * WARNING: if you forget to call this method the start* one will perform maxPollsCount attempts before finishing\n * @param requestHash {string} hash of request. Helps to distinct the request for the same resource but\n * having different request parameters and hold a dedicated calculation id per this hash\n */\n finishActiveCalculation(requestHash = \"default\") {\n try {\n this._activeCalculationsIds.delete(requestHash);\n const next = this._nextCalculationIds.get(requestHash) ?? [];\n if (next.length) {\n this._activeCalculationsIds.set(requestHash, next[0]);\n this._nextCalculationIds.set(requestHash, next.slice(1));\n }\n } catch (e) {\n improveAndRethrow(e, \"finishActiveCalculation\");\n }\n }\n\n finishAllActiveCalculations(keyPart = \"\") {\n try {\n Array.from(this._activeCalculationsIds.keys()).forEach(hash => {\n if (typeof hash === \"string\" && new RegExp(keyPart).test(hash)) {\n this.finishActiveCalculation(hash);\n }\n });\n } catch (e) {\n improveAndRethrow(e, \"finishAllActiveCalculations\");\n }\n }\n\n /**\n * @param requestHash {string}\n * @param lockId {string}\n * @return {boolean}\n */\n isTheLockActiveOne(requestHash, lockId) {\n try {\n return this._activeCalculationsIds.get(requestHash) === lockId;\n } catch (e) {\n improveAndRethrow(e, \"isTheLockActiveOne\");\n }\n }\n\n /**\n * @param requestHash {string}\n * @param activeCalculationId {string|null}\n * @param [attemptIndex=0] {number}\n * @param waitForCalculationId {string|null} if you want to wait for an exact id to appear as active then pass this parameter\n * @return {Promise<boolean>} true\n * - if the given calculation id is no more an active one\n * - or it is equal to waitForCalculationId\n * false\n * - if waiting period exceeds the max allowed waiting time or unexpected error occurs\n * @private\n */\n async _waitForCalculationIdToFinish(\n requestHash,\n activeCalculationId,\n attemptIndex = 0,\n waitForCalculationId = null\n ) {\n try {\n if (attemptIndex + 1 > this.maxPollsCount) {\n // Max number of polls for active calculation id change is achieved. So we return false.\n return false;\n }\n\n const currentId = this._activeCalculationsIds.get(requestHash);\n if (waitForCalculationId == null ? currentId !== activeCalculationId : currentId === waitForCalculationId) {\n /* We return true depending on the usage of this function:\n * 1. if there is calculation id that we should wait for to become an active then we return true only\n * if this id becomes the active one.\n *\n * Theoretically we can fail to wait for the desired calculation id. This can be caused by wrong use of\n * this service or by any other mistakes/errors. But this waiting function will return false anyway if\n * the number of polls done exceeds the max allowed.\n *\n * 2. if we just wait for the currently active calculation id to be finished then we return true\n * when we notice that the current active id differs from the original passed into this function.\n */\n return true;\n } else {\n /* The original calculation id is still the active one, so we are scheduling a new attempt to check\n * whether the active calculation id changed or not in timeoutDuration milliseconds.\n */\n const it = this;\n return new Promise((resolve, reject) => {\n setTimeout(function () {\n try {\n resolve(\n it._waitForCalculationIdToFinish(requestHash, activeCalculationId, attemptIndex + 1)\n );\n } catch (e) {\n reject(e);\n }\n }, this.timeoutDuration);\n });\n }\n } catch (e) {\n Logger.logError(e, \"_waitForCalculationIdToFinish\", \"Failed to wait for active calculation id change.\");\n return false;\n }\n }\n}\n","import Hashes from \"jshashes\";\n\nimport { improveAndRethrow } from \"../common/errorUtils.js\";\nimport { safeStringify } from \"../common/utils/safeStringify.js\";\nimport { Logger } from \"../common/utils/logging/logger.js\";\n\nimport { RobustExternalAPICallerService } from \"./robustExternalAPICallerService.js\";\nimport { CacheAndConcurrentRequestsResolver } from \"./cacheAndConcurrentRequestsResolver.js\";\n\n/**\n * Extended edit of RobustExternalApiCallerService supporting cache and management of concurrent requests\n * to the same resource.\n * TODO: [tests, critical] Massively used logic\n */\nexport class CachedRobustExternalApiCallerService {\n /**\n * @param bio {string} unique service identifier\n * @param cache {Cache} cache instance\n * @param providersData {ExternalApiProvider[]} array of providers\n * @param [cacheTtlMs=10000] {number} time to live for cache ms\n * @param [maxCallAttemptsToWaitForAlreadyRunningRequest=50] {number} see details in CacheAndConcurrentRequestsResolver\n * @param [timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished=3000] {number} see details in CacheAndConcurrentRequestsResolver\n * @param [removeExpiredCacheAutomatically=true] {boolean} whether to remove cached data automatically when ttl exceeds\n * @param [mergeCachedAndNewlyRetrievedData=null] {function} function accepting cached data, newly retrieved data and id field name for list items\n * and merging them. use if needed\n */\n constructor(\n bio,\n cache,\n providersData,\n cacheTtlMs = 10000,\n removeExpiredCacheAutomatically = true,\n mergeCachedAndNewlyRetrievedData = null,\n maxCallAttemptsToWaitForAlreadyRunningRequest = 100,\n timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished = 1000\n ) {\n this._provider = new RobustExternalAPICallerService(`cached_${bio}`, providersData, Logger.logError);\n this._cacheTtlMs = cacheTtlMs;\n this._cahceAndRequestsResolver = new CacheAndConcurrentRequestsResolver(\n bio,\n cache,\n cacheTtlMs,\n removeExpiredCacheAutomatically,\n maxCallAttemptsToWaitForAlreadyRunningRequest,\n timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished\n );\n this._cahceIds = [];\n this._mergeCachedAndNewlyRetrievedData = mergeCachedAndNewlyRetrievedData;\n }\n\n /**\n * Calls the external API or returns data from cache. Just waits if the same data already requested.\n *\n * @param parametersValues {array} array of values of the parameters for URL query string [and/or body]\n * @param timeoutMS {number} http timeout to wait for response. If provider has its specific timeout value then it is used\n * @param [cancelToken] {object|undefined} axios token to force-cancel requests from high-level code\n * @param [attemptsCount] {number|undefined} number of attempts to be performed\n * @param [customHashFunctionForParams] {function|undefined} function without params calculating the hash to be\n * added to bio of the service to compose a unique parameters-specific cache id\n * @param [doNotFailForNowData] {boolean|undefined} pass true if you do not want us to throw an error if we retrieved null data from all the providers\n * @return {Promise<any>} resolving to retrieved data (or array of results if specific provider requires\n * several requests. NOTE: we flatten nested arrays - results of each separate request done for the specific provider)\n * @throws Error if requests to all providers are failed\n */\n async callExternalAPICached(\n parametersValues = [],\n timeoutMS = 3500,\n cancelToken = null,\n attemptsCount = 1,\n customHashFunctionForParams = null,\n doNotFailForNowData = false\n ) {\n const loggerSource = `${this._provider.bio}.callExternalAPICached`;\n let cacheId;\n let result;\n try {\n cacheId = this._calculateCacheId(parametersValues, customHashFunctionForParams);\n result = await this._cahceAndRequestsResolver.getCachedOrWaitForCachedOrAcquireLock(cacheId);\n if (!result?.canStartDataRetrieval) {\n return result?.cachedData;\n }\n\n let data = await this._provider.callExternalAPI(\n parametersValues,\n timeoutMS,\n cancelToken,\n attemptsCount,\n doNotFailForNowData\n );\n\n const canPerformMerge = typeof this._mergeCachedAndNewlyRetrievedData === \"function\";\n if (canPerformMerge) {\n const mostRecentCached = this._cahceAndRequestsResolver.getCached(cacheId);\n data = this._mergeCachedAndNewlyRetrievedData(mostRecentCached, data, parametersValues);\n }\n if (data != null) {\n this._cahceAndRequestsResolver.saveCachedData(cacheId, result?.lockId, data, true, canPerformMerge);\n this._cahceIds.indexOf(cacheId) < 0 && this._cahceIds.push(cacheId);\n }\n\n return data;\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n } finally {\n this._cahceAndRequestsResolver.releaseLock(cacheId, result?.lockId);\n }\n }\n\n invalidateCaches() {\n this._cahceIds.forEach(key => this._cahceAndRequestsResolver.invalidate(key));\n }\n\n actualizeCachedData(\n params,\n synchronousCurrentCacheProcessor,\n customHashFunctionForParams = null,\n sessionDependent = true,\n actualizedAtTimestamp\n ) {\n const cacheId = this._calculateCacheId(params, customHashFunctionForParams);\n this._cahceAndRequestsResolver.actualizeCachedData(cacheId, synchronousCurrentCacheProcessor, sessionDependent);\n }\n\n markCacheAsExpiredButDontRemove(parametersValues, customHashFunctionForParams) {\n try {\n this._cahceAndRequestsResolver.markAsExpiredButDontRemove(\n this._calculateCacheId(parametersValues, customHashFunctionForParams)\n );\n } catch (e) {\n improveAndRethrow(e, \"markCacheAsExpiredButDontRemove\");\n }\n }\n\n _calculateCacheId(parametersValues, customHashFunctionForParams = null) {\n try {\n const hash =\n typeof customHashFunctionForParams === \"function\"\n ? customHashFunctionForParams(parametersValues)\n : !parametersValues\n ? \"\"\n : new Hashes.SHA512().hex(safeStringify(parametersValues));\n return `${this._provider.bio}-${hash}`;\n } catch (e) {\n improveAndRethrow(e, this._provider.bio + \"_calculateCacheId\");\n }\n }\n}\n","import EventBusInstance from \"eventbusjs\";\nimport { ExternalApiProvider } from \"../../robustExteranlApiCallerService/externalApiProvider.js\";\nimport { ApiGroups } from \"./apiGroups.js\";\nimport { CachedRobustExternalApiCallerService } from \"../../robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js\";\nimport { Cache } from \"../utils/cache.js\";\nimport { improveAndRethrow } from \"../errorUtils.js\";\n\nclass BigdatacloudIpAddressProvider extends ExternalApiProvider {\n constructor() {\n super(\"https://api.bigdatacloud.net/data/client-ip\", \"get\", 15000, ApiGroups.BIGDATACLOUD);\n }\n\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return response?.data && response.data?.ipString;\n }\n}\n\nclass TrackipIpAddressProvider extends ExternalApiProvider {\n constructor() {\n super(\"https://www.trackip.net/ip\", \"get\", 15000, ApiGroups.TRACKIP);\n }\n\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return response?.data;\n }\n}\n\nclass IpifyV6IpAddressProvider extends ExternalApiProvider {\n constructor() {\n super(\"https://api6.ipify.org/?format=json\", \"get\", 15000, ApiGroups.IPIFY);\n }\n\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return response?.data && response.data?.ip;\n }\n}\n\nclass IpifyIpAddressProvider extends ExternalApiProvider {\n constructor() {\n super(\"https://api.ipify.org/?format=json\", \"get\", 15000, ApiGroups.IPIFY);\n }\n\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return response?.data && response.data?.ip;\n }\n}\n\nclass WhatismyipaddressIpAddressProvider extends ExternalApiProvider {\n constructor() {\n super(\"http://bot.whatismyipaddress.com/\", \"get\", 15000, ApiGroups.WHATISMYIPADDRESS);\n }\n\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return response?.data;\n }\n}\n\nexport class IpAddressProvider {\n static externalIPAddressAPICaller = new CachedRobustExternalApiCallerService(\n \"externalIPAddressAPICaller\",\n new Cache(EventBusInstance),\n [\n new BigdatacloudIpAddressProvider(),\n new TrackipIpAddressProvider(),\n new IpifyV6IpAddressProvider(),\n new IpifyIpAddressProvider(),\n new WhatismyipaddressIpAddressProvider(),\n ],\n 300_000\n );\n\n /**\n * Returns current public IP address identified by one of external services.\n *\n * It is easier than manual identification and also (as ip needed for server side to check it) it saves us from\n * issues related to changes of infrastructure configurations (like adding proxies etc.) so we should not configure\n * anything on server side to get correct client's IP.\n *\n * @returns {Promise<String>} IP address\n * @throws {Error} if fails to retrieve IP address from all the services\n */\n static async getClientIpAddress() {\n try {\n return await this.externalIPAddressAPICaller.callExternalAPICached([], 7000);\n } catch (e) {\n improveAndRethrow(e, \"getClientIpAddress\");\n }\n }\n}\n","import axios from \"axios\";\n\n/**\n * Utils class needed to perform cancelling of axios request inside some process.\n * Provides cancel state and axios token for HTTP requests\n */\nexport class CancelProcessing {\n constructor() {\n this._cancelToken = axios.CancelToken.source();\n this._isCanceled = false;\n }\n\n cancel() {\n this._isCanceled = true;\n this._cancelToken.cancel();\n }\n\n isCanceled() {\n return this._isCanceled;\n }\n\n getToken() {\n return this._cancelToken.token;\n }\n\n static instance() {\n return new CancelProcessing();\n }\n}\n","export class ExistingSwap {\n /**\n * @param swapId {string}\n * @param status {SwapProvider.SWAP_STATUSES}\n * @param createdAt {number}\n * @param expiresAt {number}\n * @param confirmations {number}\n * @param rate {string}\n * @param fixed {boolean}\n * @param refundAddress {string}\n * @param payToAddress {string}\n * @param fromCoin {Coin}\n * @param fromAmount {string}\n * @param fromTransactionId {string}\n * @param fromTransactionLink {string}\n * @param toCoin {Coin}\n * @param toAmount {string}\n * @param toTransactionId {string|null}\n * @param toTransactionLink {string}\n * @param toAddress {string}\n * @param partner {string}\n * @param fromExtraId {string}\n * @param toExtraId {string}\n * @param refundExtraId {string}\n */\n constructor(\n swapId,\n status,\n createdAt,\n expiresAt,\n confirmations,\n rate,\n fixed,\n refundAddress,\n payToAddress,\n fromCoin,\n fromAmount,\n fromTransactionId,\n fromTransactionLink,\n toCoin,\n toAmount,\n toTransactionId,\n toTransactionLink,\n toAddress, // TODO: [refactoring, moderate] toAddress is not quite clear. How about recipientAddress? task_id=0815a111c99543b78d374217eadbde4f\n partner,\n fromExtraId,\n toExtraId,\n refundExtraId\n ) {\n this.swapId = swapId;\n this.status = status;\n this.createdAt = createdAt;\n this.expiresAt = expiresAt;\n this.confirmations = confirmations;\n this.rate = rate;\n this.fixed = fixed;\n this.refundAddress = refundAddress;\n this.payToAddress = payToAddress;\n this.fromCoin = fromCoin;\n this.fromTransactionId = fromTransactionId;\n this.fromAmount = fromAmount;\n this.fromTransactionLink = fromTransactionLink;\n this.toCoin = toCoin;\n this.toTransactionId = toTransactionId;\n this.toTransactionLink = toTransactionLink;\n this.toAmount = toAmount;\n this.toAddress = toAddress;\n this.partner = partner;\n this.fromExtraId = fromExtraId;\n this.toExtraId = toExtraId;\n this.refundExtraId = refundExtraId;\n }\n}\n","import { ExistingSwap } from \"./existingSwap.js\";\n\nexport class ExistingSwapWithFiatData extends ExistingSwap {\n /**\n * @param swapId {string}\n * @param status {SwapProvider.SWAP_STATUSES}\n * @param createdAt {number}\n * @param expiresAt {number}\n * @param confirmations {number}\n * @param rate {string}\n * @param fixed {boolean}\n * @param refundAddress {string}\n * @param payToAddress {string}\n * @param fromCoin {Coin}\n * @param fromAmount {string}\n * @param fromTransactionId {string}\n * @param fromTransactionLink {string}\n * @param toCoin {Coin}\n * @param toAmount {string}\n * @param toTransactionId {string|null}\n * @param toTransactionLink\n * @param toAddress {string}\n * @param partner {string}\n * @param fromExtraId {string}\n * @param toExtraId {string}\n * @param refundExtraId {string}\n * @param fromAmountFiat {number}\n * @param toAmountFiat {number}\n * @param fiatCurrencyCode {string}\n * @param fiatCurrencyDecimals {number}\n */\n constructor(\n swapId,\n status,\n createdAt,\n expiresAt,\n confirmations,\n rate,\n fixed,\n refundAddress,\n payToAddress,\n fromCoin,\n fromAmount,\n fromTransactionId,\n fromTransactionLink,\n toCoin,\n toAmount,\n toTransactionId,\n toTransactionLink,\n toAddress,\n partner,\n fromExtraId,\n toExtraId,\n refundExtraId,\n fromAmountFiat,\n toAmountFiat,\n fiatCurrencyCode,\n fiatCurrencyDecimals\n ) {\n super(\n swapId,\n status,\n createdAt,\n expiresAt,\n confirmations,\n rate,\n fixed,\n refundAddress,\n payToAddress,\n fromCoin,\n fromAmount,\n fromTransactionId,\n fromTransactionLink,\n toCoin,\n toAmount,\n toTransactionId,\n toTransactionLink,\n toAddress,\n partner,\n fromExtraId,\n toExtraId,\n refundExtraId\n );\n this.fromAmountFiat = fromAmountFiat;\n this.toAmountFiat = toAmountFiat;\n this.fiatCurrencyCode = fiatCurrencyCode;\n this.fiatCurrencyDecimals = fiatCurrencyDecimals;\n }\n\n /**\n * @param existingSwap {ExistingSwap}\n * @param fromAmountFiat {number}\n * @param toAmountFiat {number}\n * @param fiatCurrencyCode {string}\n * @param fiatCurrencyDecimals {number}\n * @return {ExistingSwapWithFiatData}\n */\n static fromExistingSwap(existingSwap, fromAmountFiat, toAmountFiat, fiatCurrencyCode, fiatCurrencyDecimals) {\n return new ExistingSwapWithFiatData(\n existingSwap.swapId,\n existingSwap.status,\n existingSwap.createdAt,\n existingSwap.expiresAt,\n existingSwap.confirmations,\n existingSwap.rate,\n existingSwap.fixed,\n existingSwap.refundAddress,\n existingSwap.payToAddress,\n existingSwap.fromCoin,\n existingSwap.fromAmount,\n existingSwap.fromTransactionId,\n existingSwap.fromTransactionLink,\n existingSwap.toCoin,\n existingSwap.toAmount,\n existingSwap.toTransactionId,\n existingSwap.toTransactionLink,\n existingSwap.toAddress,\n existingSwap.partner,\n existingSwap.fromExtraId,\n existingSwap.toExtraId,\n existingSwap.refundExtraId,\n fromAmountFiat,\n toAmountFiat,\n fiatCurrencyCode,\n fiatCurrencyDecimals\n );\n }\n}\n","export class BaseSwapCreationInfo {\n /**\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @param fromAmountCoins {string}\n * @param toAmountCoins {string}\n * @param rate {string}\n * @param rawSwapData {Object}\n * @param min {string}\n * @param fiatMin {number}\n * @param max {string}\n * @param fiatMax {number}\n * @param durationMinutesRange {string}\n * @param fixed {boolean}\n */\n constructor(\n fromCoin,\n toCoin,\n fromAmountCoins,\n toAmountCoins,\n rate,\n rawSwapData,\n min,\n fiatMin,\n max,\n fiatMax,\n durationMinutesRange,\n fixed\n ) {\n this.fromCoin = fromCoin;\n this.toCoin = toCoin;\n this.fromAmountCoins = fromAmountCoins;\n this.toAmountCoins = toAmountCoins;\n this.rate = rate;\n this.rawSwapData = rawSwapData;\n this.min = min;\n this.fiatMin = fiatMin;\n this.max = max;\n this.fiatMax = fiatMax;\n this.durationMinutesRange = durationMinutesRange;\n this.fixed = fixed;\n }\n}\n","export class SwapProvider {\n static COMMON_ERRORS = {\n REQUESTS_LIMIT_EXCEEDED: \"requestsLimitExceeded\",\n };\n\n static NO_SWAPS_REASONS = {\n TOO_LOW: \"tooLow\",\n TOO_HIGH: \"tooHigh\",\n NOT_SUPPORTED: \"notSupported\",\n NO_FIXED_BUT_HAVE_FLOATING: \"noFixedButHaveFloating\",\n NO_FLOATING_BUT_HAVE_FIXED: \"noFloatingButHaveFixed\",\n };\n\n static CREATION_FAIL_REASONS = {\n RETRIABLE_FAIL: \"retriableFail\",\n };\n\n static SWAP_STATUSES = {\n WAITING_FOR_PAYMENT: \"waiting_for_payment\", // public +\n CONFIRMING: \"confirming\",\n PAYMENT_RECEIVED: \"payment_received\", // public +\n EXCHANGING: \"exchanging\", // session full // public +\n COMPLETED: \"completed\", // session full // public +\n REFUNDED: \"refunded\", // session full // public +\n EXPIRED: \"expired\", // public +\n FAILED: \"failed\", // public +\n };\n\n /**\n * @return {Promise<void>}\n */\n async initialize() {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * @return {number} milliseconds TTL\n */\n getSwapCreationInfoTtlMs() {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves all currencies supported by this swap provider.\n * Returns one of SwapProvider.COMMON_ERRORS in case of processable fail.\n *\n * @return {Promise<({ result: true, coins: Coin[] }|{ result: false, reason: string })>}\n */\n async getAllSupportedCurrencies() {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves all deposit currencies supported by this swap provider.\n * Returns one of SwapProvider.COMMON_ERRORS in case of processable fail.\n *\n * @return {Promise<({ result: true, coins: Coin[] }|{ result: false, reason: string })>}\n */\n async getDepositCurrencies() {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves all withdrawable currencies supported by this swap provider.\n * Returns one of SwapProvider.COMMON_ERRORS in case of processable fail.\n *\n * @param [exceptCurrency=null] {Coin|null}\n * @return {Promise<({ result: true, coins: Coin[] }|{ result: false, reason: string })>}\n */\n async getWithdrawalCurrencies(exceptCurrency = null) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves URL for coin icon or fallback if not found.\n *\n * @param coin {Coin|string} coin or rabbit-format of coin ticker\n * @return {string}\n */\n getIconUrl(coin) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves coin to USDT rate.\n *\n * @param coin {Coin}\n * @return {{result: true, rate: string}|{result: false}}\n */\n async getCoinToUSDTRate(coin) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves estimation for swapping giving coins amount.\n * null min or max signals there is no corresponding limitation. undefined means that the limits were not retrieved.\n * For fail result on of SwapProvider.NO_SWAPS_REASONS or SwapProvider.COMMON_ERRORS reasons will be returned.\n *\n * WARNING: MUST return NOT_SUPPORTED error code for any case when pair is not available/supported (Should not throw random errors for this case)\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @param amountCoins {string}\n * @param [fixed=false] {boolean|null} null means fixed or float doesn't matter\n * @param [fromCoinToUsdRate=null] pass if you want to increase the min amount returned\n * by provider with some fixed \"insurance\" amount to cover min amount fluctuations.\n * @return {Promise<({\n * result: false,\n * reason: string,\n * smallestMin: (string|null|undefined),\n * greatestMax: (string|null|undefined),\n * }|{\n * result: true,\n * min: (string|null),\n * max: (string|null),\n * smallestMin: (string|null),\n * greatestMax: (string|null),\n * rate: (string|null),\n * durationMinutesRange: string,\n * fixed: boolean,\n * [rawSwapData]: Object\n * })>}\n */\n async getSwapInfo(fromCoin, toCoin, amountCoins, fixed = false, fromCoinToUsdRate = null) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * For fail result we return one of SwapProvider.CREATION_FAIL_REASONS or SwapProvider.COMMON_ERRORS.*\n *\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @param amount {string}\n * @param toAddress {string}\n * @param refundAddress {string}\n * @param rawSwapData {Object|null}\n * @param clientIpAddress {string}\n * @param fixed {boolean}\n * @param [toCurrencyExtraId=\"\"] {string} optional extra ID\n * @param [refundExtraId=\"\"] {string} optional extra ID for refund address\n * @return {Promise<({\n * result: true,\n * swapId: string,\n * fromCoin: Coin,\n * fromAmount: string,\n * fromAddress: string,\n * toCoin: Coin,\n * toAmount: string,\n * toAddress: string,\n * rate: string,\n * fromCurrencyExtraId: string|undefined,\n * fixed: boolean\n * }|{\n * result: false,\n * reason: string,\n * partner: string\n * })>}\n */\n async createSwap(\n fromCoin,\n toCoin,\n amount,\n toAddress,\n refundAddress,\n rawSwapData,\n clientIpAddress,\n fixed,\n toCurrencyExtraId = \"\",\n refundExtraId = \"\"\n ) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves details and status for swaps by given ids.\n * If some swap is not found by id then there is no item in return list.\n *\n * @param swapIds {string[]}\n * @return {Promise<{result: false, reason: string}|{result:true, swaps: ExistingSwap[]}>}\n */\n async getExistingSwapsDetailsAndStatus(swapIds) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * @param ticker {string}\n * @return {Coin|null}\n */\n getCoinByTickerIfPresent(ticker) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * @param asset {Coin}\n * @param address {string}\n * @return {boolean}\n */\n isAddressValidForAsset(asset, address) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * @param asset {Coin}\n * @return {string|null}\n */\n getExtraIdNameIfPresent(asset) {\n throw new Error(\"Not implemented in base\");\n }\n}\n","import axios from \"axios\";\nimport { BigNumber } from \"bignumber.js\";\n\nimport { AmountUtils } from \"../../common/amountUtils.js\";\nimport { improveAndRethrow } from \"../../common/errorUtils.js\";\nimport { SwapProvider } from \"./swapProvider.js\";\nimport { ExistingSwap } from \"../models/existingSwap.js\";\nimport { Coin } from \"../../common/models/coin.js\";\nimport { Protocol } from \"../../common/models/protocol.js\";\nimport { safeStringify } from \"../../common/utils/safeStringify.js\";\nimport { Logger } from \"../../common/utils/logging/logger.js\";\nimport { FALLBACK_ASSET_ICON_URL } from \"../../constants/globalConstants.jsx\";\n\nexport const BANNED_PARTNERS = [\"stealthex\", \"changee\", \"coincraddle\"];\n\nexport class SwapspaceSwapProvider extends SwapProvider {\n constructor(apiKeysProxyUrl, cache, customCoinBuilder = (coin, network) => null, useRestrictedCoinsSet = true) {\n super();\n this._supportedCoins = [];\n this._URL = `${apiKeysProxyUrl}`;\n this._maxRateDigits = 20;\n this.useRestrictedCoinsSet = useRestrictedCoinsSet;\n this._customCoinBuilder = customCoinBuilder;\n this._cache = cache;\n }\n\n getSwapCreationInfoTtlMs() {\n /* Actually 2 minutes and only relevant for some partners, but we use it\n * (and even a bit smaller value) for better consistency */\n return 110000;\n }\n\n async getDepositCurrencies() {\n const loggerSource = \"getDepositCurrencies\";\n try {\n await this._fetchSupportedCurrenciesIfNeeded();\n Logger.log(`We have ${this._supportedCoins?.length} supported coins, getting depositable`, loggerSource);\n return {\n result: true,\n coins: this._supportedCoins.filter(item => item.deposit).map(item => item.coin),\n };\n } catch (e) {\n if (e?.response?.status === 429) {\n return {\n result: false,\n reason: SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n improveAndRethrow(e, loggerSource);\n }\n }\n\n async getAllSupportedCurrencies() {\n const loggerSource = \"getAllSupportedCurrencies\";\n try {\n await this._fetchSupportedCurrenciesIfNeeded();\n Logger.log(`We have ${this._supportedCoins?.length} supported coins returning`, loggerSource);\n return {\n result: true,\n coins: this._supportedCoins.map(item => item.coin),\n };\n } catch (e) {\n if (e?.response?.status === 429) {\n return {\n result: false,\n reason: SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n improveAndRethrow(e, loggerSource);\n }\n }\n\n async getWithdrawalCurrencies(exceptCurrency = null) {\n const loggerSource = \"getWithdrawalCurrencies\";\n try {\n await this._fetchSupportedCurrenciesIfNeeded();\n Logger.log(`We have ${this._supportedCoins?.length} supported coins, getting withdrawable`, loggerSource);\n return {\n result: true,\n coins: this._supportedCoins\n .filter(\n item => item.withdrawal && (!exceptCurrency || item.coin?.ticker !== exceptCurrency?.ticker)\n )\n .map(item => item.coin),\n };\n } catch (e) {\n if (e?.response?.status === 429) {\n return {\n result: false,\n reason: SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n improveAndRethrow(e, loggerSource);\n }\n }\n\n async initialize() {\n await this._fetchSupportedCurrenciesIfNeeded();\n }\n\n getIconUrl(coinOrTicker) {\n const loggerSource = \"getIconUrl\";\n try {\n let coin = coinOrTicker;\n if (!(coinOrTicker instanceof Coin)) {\n coin = this._supportedCoins.find(i => i.coin.ticker === coinOrTicker)?.coin;\n }\n return (\n this._supportedCoins.find(item => item.coin?.ticker === coin?.ticker)?.iconURL ??\n FALLBACK_ASSET_ICON_URL\n );\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n async _fetchSupportedCurrenciesIfNeeded() {\n const loggerSource = \"_fetchSupportedCurrenciesIfNeeded\";\n try {\n if (!this._supportedCoins?.length) {\n const rawResponse = await axios.get(`${this._URL}/api/v2/currencies`);\n Logger.log(`Retrieved ${rawResponse?.data?.length}`, loggerSource);\n let allowedCoins = rawResponse?.data ?? [];\n Logger.log(`Allowed cnt ${allowedCoins.length}`, loggerSource);\n\n this._supportedCoins = allowedCoins\n .map(item => {\n let coin = this._customCoinBuilder(item.code, item.network);\n if (!coin && !this.useRestrictedCoinsSet) {\n /** Building coin object for coin that isn't supported OOB in Rabbit.\n * We are doing this way to be able to use extended coins set for swaps.\n * These temporary built coins are only for in-swap use, and we omit some usual\n * coin details here.\n * Ideally we should add some new abstractions e.g. BaseCoin:\n * Coin will extend BaseCoin, SwapCoin will extend BaseCoin etc.\n * But for now it is reasonable to use this simpler approach.\n */\n const code = item.code.toUpperCase();\n const network = item.network.toUpperCase();\n /** Removing ticker and protocol name from coin name as we usually use them explicitly\n * from coin object rather than counting on having it in the coin name itself.\n * This processing is needed due to poor quality of swapspace coins names. */\n let name = (item.name ?? \"\")\n .replaceAll(`(${code})`, \"\")\n .replaceAll(`(${network})`, \"\")\n .replaceAll(/ +/g, \" \")\n .trim();\n if (name === \"\") {\n // Rolling back to original name if our processing leads in empty name\n name = item.name;\n }\n const ticker = `${code}${code === network ? \"\" : network}`;\n const defaultDecimalPlacesForCoinNotSupportedOOB = 8;\n const defaultMinConfirmationsForCoinNotSupportedOOB = 1;\n coin = new Coin(\n name,\n ticker,\n code,\n defaultDecimalPlacesForCoinNotSupportedOOB,\n null,\n \"\",\n null,\n null,\n defaultMinConfirmationsForCoinNotSupportedOOB,\n null,\n [],\n 60000,\n null, // We cannot recognize blockchain from swapspace data\n code !== network ? new Protocol(network) : null,\n item.contractAddress || null,\n false\n );\n }\n if (coin) {\n return {\n coin: coin,\n code: item.code,\n network: item.network,\n hasExtraId: item.hasExtraId,\n extraIdName: item.extraIdName,\n isPopular: !!item.popular,\n iconURL: item.icon\n ? `https://storage.swapspace.co${item.icon}`\n : FALLBACK_ASSET_ICON_URL,\n deposit: item.deposit ?? false,\n withdrawal: item.withdrawal ?? false,\n validationRegexp: item.validationRegexp ?? null,\n };\n }\n\n return [];\n })\n .flat();\n this._putPopularCoinsFirst();\n }\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n /**\n * This method sort internal list putting popular (as swapspace thinks) coins to the top.\n * This is just for users of this API if they don't care about the sorting - we just improve a list a bit this way.\n * @private\n */\n _putPopularCoinsFirst() {\n this._supportedCoins.sort((i1, i2) => {\n if (i1.isPopular && !i2.isPopular) return -1;\n if (i2.isPopular && !i1.isPopular) return 1;\n return i1.coin.ticker > i2.coin.ticker ? 1 : i1.coin.ticker < i2.coin.ticker ? -1 : 0;\n });\n }\n\n async getCoinToUSDTRate(coin) {\n const loggerSource = \"getCoinToUSDTRate\";\n try {\n if (!coin) return null;\n\n await this._fetchSupportedCurrenciesIfNeeded();\n\n // Using USDT TRC20 as usually fee in this network is smaller than ERC20 and this network is widely used for USDT\n const usdtTrc20 = this._supportedCoins.find(i => i.coin.ticker === \"USDTTRC20\")?.coin;\n if (!usdtTrc20) {\n return { result: false };\n }\n const cached = this._cache.get(\"swapspace_usdt_rate_\" + coin.ticker);\n if (cached != null) {\n return {\n result: true,\n rate: cached,\n };\n }\n\n Logger.log(\"Loading USDT->coin rate as not found in cache:\", coin?.ticker);\n const result = await this.getSwapInfo(usdtTrc20, coin, \"5000\", false);\n if (!result.result) {\n return { result: false };\n }\n\n // This calculation is not precise as we cannot recognize the actual fee and network fee. Just approximate.\n const standardSwapspaceFeeMultiplier = 1.004; // fee is usually 0.4%\n const rate = BigNumber(1).div(BigNumber(result.rate).times(standardSwapspaceFeeMultiplier)).toString();\n this._cache.put(\n \"swapspace_usdt_rate_\" + coin.ticker,\n rate,\n 15 * 60000 // 15 minutes\n );\n return {\n result: true,\n rate: rate,\n };\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n getCoinByTickerIfPresent(ticker) {\n try {\n const item = this._supportedCoins.find(i => i.coin.ticker === ticker);\n return item?.coin ?? null;\n } catch (e) {\n improveAndRethrow(e, \"getCoinByTickerIfPresent\");\n }\n }\n\n async getSwapInfo(fromCoin, toCoin, amountCoins, fixed = false, fromCoinToUsdRate = null) {\n const loggerSource = \"getSwapInfo\";\n try {\n if (\n !(fromCoin instanceof Coin) ||\n !(toCoin instanceof Coin) ||\n typeof amountCoins !== \"string\" ||\n BigNumber(amountCoins).lt(\"0\") ||\n (fixed !== null && typeof fixed !== \"boolean\")\n ) {\n throw new Error(\n `Wrong input params: ${amountCoins} ${fromCoin.ticker} -> ${toCoin.ticker}, ${\n fromCoin instanceof Coin\n }, ${toCoin instanceof Coin}, ${typeof fixed} ${fixed}`\n );\n }\n const fromCoinSwapspaceDetails = this._supportedCoins.find(i => i.coin?.ticker === fromCoin?.ticker);\n const toCoinSwapspaceDetails = this._supportedCoins.find(i => i.coin?.ticker === toCoin?.ticker);\n if (!fromCoinSwapspaceDetails || !toCoinSwapspaceDetails) {\n throw new Error(\n \"Failed to find swapspace coin details for: \" + fromCoin.ticker + \" -> \" + toCoin.ticker\n );\n }\n if (!fromCoinSwapspaceDetails.deposit || !toCoinSwapspaceDetails.withdrawal) {\n return {\n result: false,\n reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,\n };\n }\n /* Here we use not documented parameter 'estimated=false'. This parameter controls whether we want to use\n * cached rate values stored in swapspace cache. Their support says they store at most for 30 sec.\n * But we are better off using the most actual rates.\n */\n const response = await axios.get(\n `${this._URL}/api/v2/amounts?fromCurrency=${fromCoinSwapspaceDetails.code}&fromNetwork=${fromCoinSwapspaceDetails.network}&toNetwork=${toCoinSwapspaceDetails.network}&toCurrency=${toCoinSwapspaceDetails.code}&amount=${amountCoins}&estimated=false`\n );\n Logger.log(`Retrieved ${response?.data?.length} options`, loggerSource);\n const options = Array.isArray(response.data) ? response.data : [];\n // TODO: [feature, high] remove if possible over-engineering about toAmount = 0 options treating as supported but not available. task_id=404ae30d9a7743238af3cc0d3bae9239\n let exchangesSupportingThePairDespiteFixedOrFloating = options.filter(\n exchange =>\n exchange?.exists &&\n !BANNED_PARTNERS.find(bannedPartner => bannedPartner === exchange?.partner) &&\n (exchange?.fixed === false || exchange?.fixed === true) &&\n typeof exchange.toAmount === \"number\" &&\n ((typeof exchange.min === \"number\" && typeof exchange.max === \"number\") || exchange.toAmount > 0) &&\n (exchange.min === 0 || exchange.max === 0 || exchange.max > exchange.min)\n );\n let exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating;\n if (fixed != null) {\n exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating.filter(\n option => option.fixed === fixed\n );\n }\n Logger.log(`${exchangesSupportingThePair?.length} of them have exist=true`, loggerSource);\n if (exchangesSupportingThePair.length === 0) {\n if (exchangesSupportingThePairDespiteFixedOrFloating.length > 0 && fixed !== null) {\n return {\n result: false,\n reason: fixed\n ? SwapProvider.NO_SWAPS_REASONS.NO_FIXED_BUT_HAVE_FLOATING\n : SwapProvider.NO_SWAPS_REASONS.NO_FLOATING_BUT_HAVE_FIXED,\n };\n }\n return {\n result: false,\n reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,\n };\n }\n const availableExchanges = exchangesSupportingThePair.filter(\n exchange => typeof exchange?.toAmount === \"number\" && exchange.toAmount > 0\n );\n Logger.log(`Available (having amountTo): ${safeStringify(availableExchanges)}`, loggerSource);\n // min=0 or max=0 means there is no limit for the partner\n let smallestMin = null;\n if (exchangesSupportingThePair.find(ex => BigNumber(ex.min).isZero()) == null) {\n smallestMin = exchangesSupportingThePair.reduce((prev, cur) => {\n if (typeof cur.min === \"number\" && (prev === null || BigNumber(cur.min).lt(prev)))\n return BigNumber(cur.min);\n return prev;\n }, null);\n }\n let greatestMax = null;\n if (exchangesSupportingThePair.find(ex => BigNumber(ex.max).isZero()) == null) {\n greatestMax = exchangesSupportingThePair.reduce((prev, cur) => {\n if (typeof cur.max === \"number\" && (prev === null || BigNumber(cur.max).gt(prev)))\n return BigNumber(cur.max);\n return prev;\n }, null);\n }\n let extraCoinsToFitMinMax = \"0\";\n if (typeof fromCoinToUsdRate === \"string\" && BigNumber(fromCoinToUsdRate).gt(\"0\")) {\n const extraUsdToFitMinMax = BigNumber(\"1\"); // We correct the limits as the exact limit can fluctuate and cause failed swap creation\n extraCoinsToFitMinMax = AmountUtils.trim(extraUsdToFitMinMax.div(fromCoinToUsdRate), fromCoin.digits);\n }\n if (smallestMin instanceof BigNumber) {\n smallestMin = AmountUtils.trim(smallestMin.plus(extraCoinsToFitMinMax), fromCoin.digits);\n }\n if (greatestMax instanceof BigNumber) {\n if (greatestMax > extraCoinsToFitMinMax) {\n greatestMax = AmountUtils.trim(greatestMax.minus(extraCoinsToFitMinMax), fromCoin.digits);\n } else {\n greatestMax = \"0\";\n }\n }\n\n if (availableExchanges.length) {\n const sorted = availableExchanges.sort((op1, op2) => op2.toAmount - op1.toAmount);\n const bestOpt = sorted[0];\n Logger.log(`Returning first option after sorting: ${safeStringify(bestOpt)}`, loggerSource);\n let max = null;\n let min = null;\n if (extraCoinsToFitMinMax != null) {\n if (typeof bestOpt.max === \"number\" && bestOpt.max !== 0) {\n max = BigNumber(bestOpt.max).minus(extraCoinsToFitMinMax);\n max = AmountUtils.trim(max.lt(0) ? \"0\" : max, fromCoin.digits);\n }\n if (typeof bestOpt.min === \"number\" && bestOpt.min !== 0) {\n min = AmountUtils.trim(BigNumber(bestOpt.min).plus(extraCoinsToFitMinMax), fromCoin.digits);\n }\n }\n\n const rate =\n bestOpt.toAmount && bestOpt.fromAmount ? BigNumber(bestOpt.toAmount).div(bestOpt.fromAmount) : null;\n return {\n result: true,\n min: min,\n max: max,\n smallestMin: smallestMin,\n greatestMax: greatestMax,\n rate: rate != null ? AmountUtils.trim(rate, this._maxRateDigits) : null,\n durationMinutesRange: bestOpt.duration ?? null,\n fixed: bestOpt.fixed,\n rawSwapData: bestOpt,\n };\n }\n const result = {\n result: false,\n reason:\n smallestMin && BigNumber(amountCoins).lt(smallestMin)\n ? SwapProvider.NO_SWAPS_REASONS.TOO_LOW\n : greatestMax && BigNumber(amountCoins).gt(greatestMax)\n ? SwapProvider.NO_SWAPS_REASONS.TOO_HIGH\n : SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,\n smallestMin: smallestMin,\n greatestMax: greatestMax,\n };\n Logger.log(`Returning result ${safeStringify(result)}`, loggerSource);\n return result;\n } catch (e) {\n if (e?.response?.status === 429) {\n return {\n result: false,\n reason: SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n Logger.log(`Internal swapspace/rabbit error when getting swap options ${safeStringify(e)}`, loggerSource);\n improveAndRethrow(e, loggerSource);\n }\n }\n\n async createSwap(\n fromCoin,\n toCoin,\n amount,\n toAddress,\n refundAddress,\n rawSwapData,\n clientIpAddress,\n fixed,\n toCurrencyExtraId = \"\",\n refundExtraId = \"\"\n ) {\n const loggerSource = \"createSwap\";\n const partner = rawSwapData?.partner;\n try {\n if (\n !(fromCoin instanceof Coin) ||\n !(toCoin instanceof Coin) ||\n typeof amount !== \"string\" ||\n typeof toAddress !== \"string\" ||\n typeof refundAddress !== \"string\" ||\n typeof clientIpAddress != \"string\" ||\n typeof fixed != \"boolean\" ||\n clientIpAddress.length === 0\n ) {\n throw new Error(\n `Invalid input: ${fromCoin} ${toCoin} ${amount} ${toAddress} ${refundAddress} ${clientIpAddress?.length} ${fixed}`\n );\n }\n if (\n typeof partner !== \"string\" ||\n typeof rawSwapData?.fromCurrency !== \"string\" ||\n typeof rawSwapData?.fromNetwork !== \"string\" ||\n typeof rawSwapData?.toCurrency !== \"string\" ||\n typeof rawSwapData?.toNetwork !== \"string\" ||\n typeof rawSwapData?.id !== \"string\" // can be just empty\n ) {\n throw new Error(`Invalid raw swap data: ${safeStringify(rawSwapData)}`);\n }\n\n const [fromCurrencyHasExtraId, toCurrencyHasExtraId] = this._supportedCoins.reduce(\n (prev, coinData) => [\n coinData.coin.ticker === fromCoin.ticker ? coinData.hasExtraId : prev[0],\n coinData.coin.ticker === toCoin.ticker ? coinData.hasExtraId : prev[1],\n ],\n [false, false]\n );\n await this._fetchSupportedCurrenciesIfNeeded();\n const requestData = {\n partner: partner,\n fromCurrency: rawSwapData?.fromCurrency,\n fromNetwork: rawSwapData?.fromNetwork,\n toCurrency: rawSwapData?.toCurrency,\n toNetwork: rawSwapData?.toNetwork,\n address: toAddress,\n amount: amount,\n fixed: fixed,\n extraId: toCurrencyHasExtraId ? toCurrencyExtraId ?? \"\" : \"\",\n // This param is not documented. But the refund is usually manual so this is not critical.\n refundExtraId: fromCurrencyHasExtraId ? refundExtraId ?? \"\" : \"\",\n rateId: rawSwapData?.id,\n userIp: clientIpAddress,\n refund: refundAddress,\n };\n\n Logger.log(`Sending create request: ${safeStringify(requestData)}`, loggerSource);\n const response = await axios.post(`${this._URL}/api/v2/exchange`, requestData);\n const result = response.data;\n Logger.log(`Creation result ${safeStringify(result)}`, loggerSource);\n\n if (result?.id) {\n if (\n typeof result?.from?.amount !== \"number\" ||\n typeof result?.from?.address !== \"string\" ||\n typeof result?.fixed !== \"boolean\" ||\n typeof result?.to?.amount !== \"number\" ||\n typeof result?.to?.address !== \"string\"\n )\n throw new Error(`Wrong swap creation result ${result}`);\n /* We use the returned rate preferably but if the retrieved\n * rate 0/null/undefined we calculate it manually */\n let rate = result.rate;\n if (typeof rate !== \"number\" || BigNumber(rate).isZero()) {\n rate = BigNumber(result?.to?.amount).div(result?.from?.amount);\n } else {\n rate = BigNumber(rate);\n }\n\n return {\n result: true,\n swapId: result?.id,\n fromCoin: fromCoin,\n fromAmount: AmountUtils.trim(result?.from?.amount, fromCoin.digits),\n fromAddress: result?.from?.address,\n toCoin: toCoin,\n toAmount: AmountUtils.trim(result?.to?.amount, toCoin.digits),\n toAddress: result?.to?.address,\n fromCurrencyExtraId: result?.from?.extraId ?? \"\",\n rate: AmountUtils.trim(rate, this._maxRateDigits),\n fixed: result.fixed,\n };\n }\n const errorMessage = `Swap creation succeeded but the response is wrong: ${safeStringify(response)}`;\n Logger.log(errorMessage, loggerSource);\n throw new Error(errorMessage);\n } catch (e) {\n Logger.logError(e, loggerSource, `Failed to create swap. Error is: ${safeStringify(e)}`);\n const composeFailResult = reason => ({\n result: false,\n reason: reason,\n partner: partner,\n });\n const status = e?.response?.status;\n const data = e?.response?.data;\n if (status === 429) {\n Logger.log(`Returning fail - RPS limit exceeded ${data}`, loggerSource);\n return composeFailResult(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);\n }\n const texts422 = [\n \"Pair cannot be processed by\",\n \"Currency not found\",\n \"Amount maximum is\",\n \"Amount minimum is\",\n ];\n const text403 = \"IP address is forbidden\";\n if (\n typeof data === \"string\" &&\n ((status === 403 && data.includes(text403)) ||\n (status === 422 && texts422.find(text => data.includes(text))))\n ) {\n Logger.log(`Returning retriable fail: ${status} - ${data}, ${partner}`, loggerSource);\n return composeFailResult(SwapProvider.CREATION_FAIL_REASONS.RETRIABLE_FAIL);\n }\n Logger.log(`Internal swapspace/rabbit error for ${partner}: ${safeStringify(e)}`, loggerSource);\n improveAndRethrow(e, loggerSource);\n }\n }\n\n _mapSwapspaceStatusToRabbitStatus(status, isExpiredByTime) {\n switch (status) {\n case \"waiting\":\n if (isExpiredByTime) {\n return SwapProvider.SWAP_STATUSES.EXPIRED;\n }\n return SwapProvider.SWAP_STATUSES.WAITING_FOR_PAYMENT;\n case \"confirming\":\n return SwapProvider.SWAP_STATUSES.CONFIRMING;\n case \"exchanging\":\n return SwapProvider.SWAP_STATUSES.EXCHANGING;\n case \"sending\":\n return SwapProvider.SWAP_STATUSES.PAYMENT_RECEIVED;\n case \"finished\":\n return SwapProvider.SWAP_STATUSES.COMPLETED;\n case \"verifying\":\n return SwapProvider.SWAP_STATUSES.EXCHANGING;\n case \"refunded\":\n return SwapProvider.SWAP_STATUSES.REFUNDED;\n case \"expired\":\n return SwapProvider.SWAP_STATUSES.EXPIRED;\n case \"failed\":\n return SwapProvider.SWAP_STATUSES.FAILED;\n default:\n throw new Error(`Unknown swapspace status: ${status}`);\n }\n }\n\n async getExistingSwapsDetailsAndStatus(swapIds) {\n const loggerSource = \"getExistingSwapsDetailsAndStatus\";\n try {\n if (swapIds.find(id => typeof id !== \"string\")) {\n throw new Error(\"Swap id is not string: \" + safeStringify(swapIds));\n }\n const getNotFailingOn404 = async swapId => {\n try {\n return await axios.get(`${this._URL}/api/v2/exchange/${swapId}`);\n } catch (error) {\n if (error?.response?.status === 404) return [];\n throw error;\n }\n };\n const responses = await Promise.all(swapIds.map(swapId => getNotFailingOn404(swapId)));\n const wo404 = responses.flat();\n Logger.log(\"All swaps RAW: \" + JSON.stringify(wo404.map(r => r.data)), loggerSource);\n const swaps = wo404\n .map(r => r.data)\n .map((swap, index) => {\n const fromCoin = this._supportedCoins.find(\n i => i.code === swap.from.code && i.network === swap.from.network\n )?.coin;\n const toCoin = this._supportedCoins.find(\n i => i.code === swap.to.code && i.network === swap.to.network\n )?.coin;\n if (!fromCoin || !toCoin) {\n return []; // We skip swaps with not supported coins for now\n }\n\n const toUtcTimestamp = timeStr => Date.parse(timeStr.match(/.+[Zz]$/) ? timeStr : `${timeStr}Z`);\n const expiresAt = toUtcTimestamp(swap.timestamps.expiresAt);\n const isExpiredByTime = expiresAt < Date.now();\n const status = this._mapSwapspaceStatusToRabbitStatus(swap.status, isExpiredByTime);\n const toDigits = status === SwapProvider.SWAP_STATUSES.REFUNDED ? fromCoin.digits : toCoin.digits;\n const addressToSendCoinsToSwapspace = swap.from.address;\n return new ExistingSwap(\n swapIds[index],\n status,\n toUtcTimestamp(swap.timestamps.createdAt),\n expiresAt,\n swap.confirmations,\n AmountUtils.trim(swap.rate, this._maxRateDigits),\n swap.fixed,\n swap.refundAddress,\n addressToSendCoinsToSwapspace,\n fromCoin,\n AmountUtils.trim(swap.from.amount, fromCoin.digits),\n swap.from.transactionHash,\n swap.blockExplorerTransactionUrl.from,\n toCoin,\n AmountUtils.trim(swap.to.amount, toDigits),\n swap.to.transactionHash,\n swap.blockExplorerTransactionUrl.to,\n swap.to.address,\n swap.partner,\n swap.from.extraId ?? null,\n swap.to.extraId ?? null,\n swap.refundExtraId ?? null\n );\n })\n .flat();\n Logger.log(`Swap details result ${safeStringify(swaps)}`, loggerSource);\n return { result: true, swaps: swaps };\n } catch (e) {\n Logger.logError(e, loggerSource, `Failed to get swap details. Error is: ${safeStringify(e)}`);\n const composeFailResult = reason => ({\n result: false,\n reason: reason,\n });\n const status = e?.response?.status;\n const data = e?.response?.data;\n if (status === 429) {\n Logger.log(`Returning fail - RPS limit exceeded ${data}`, loggerSource);\n return composeFailResult(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);\n }\n improveAndRethrow(e, loggerSource);\n }\n }\n\n isAddressValidForAsset(asset, address) {\n try {\n const assetData = this._supportedCoins.find(i => i.coin?.ticker === asset?.ticker);\n if (assetData) {\n let corrected = assetData.validationRegexp.trim();\n corrected = corrected[0] === \"/\" ? corrected.slice(1) : corrected;\n corrected =\n corrected[corrected.length - 1] === \"/\" ? corrected.slice(0, corrected.length - 1) : corrected;\n return address.match(corrected) != null;\n }\n } catch (e) {\n Logger.logError(e, \"isAddressValidForAsset\");\n }\n return false;\n }\n\n getExtraIdNameIfPresent(asset) {\n try {\n const assetData = this._supportedCoins.find(i => i.coin?.ticker === asset?.ticker);\n if (assetData?.hasExtraId) {\n if (assetData?.extraIdName == null || assetData?.extraIdName === \"\") {\n // We return some default name if the extraIdName is empty\n return \"ID\";\n }\n return assetData?.extraIdName;\n }\n return null;\n } catch (e) {\n improveAndRethrow(e, \"getExtraIdNameIfPresent\");\n }\n }\n}\n","import { BigNumber } from \"bignumber.js\";\n\nimport { AmountUtils } from \"../../common/amountUtils.js\";\nimport { FiatCurrenciesService } from \"../../common/fiatCurrenciesService.js\";\nimport { improveAndRethrow } from \"../../common/errorUtils.js\";\nimport { ExistingSwapWithFiatData } from \"../models/existingSwapWithFiatData.js\";\nimport { EmailsApi } from \"../../common/utils/emailAPI.js\";\nimport { SwapProvider } from \"../external-apis/swapProvider.js\";\nimport { Logger } from \"../../common/utils/logging/logger.js\";\nimport { safeStringify } from \"../../common/utils/safeStringify.js\";\n\nexport class SwapUtils {\n /**\n * Retrieves min and max limits for swapping giving currencies.\n * Returns also conversion rate if possible with predefined amount logic.\n * Rate is how many \"to\" coins does 1 \"from\" coin contain.\n *\n * In case of errors returns one of reasons\n * - SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED\n * - one of SwapProvider.COMMON_ERRORS.*\n *\n * @param swapProvider {SwapProvider}\n * @param fromCoin {Coin} enabled coin (to swap amount from)\n * @param toCoin {Coin}\n * @param coinToCurrentFiatRate {string|null}\n * @param fiatCurrencyDecimals {number|null}\n * @return {Promise<{\n * result: true,\n * min: string,\n * fiatMin: (number|null),\n * max: string,\n * fiatMax: (number|null),\n * rate: (string|null),\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n static async getInitialSwapData(\n swapProvider,\n fromCoin,\n toCoin,\n coinToCurrentFiatRate = null,\n fiatCurrencyDecimals = null\n ) {\n const loggerSource = \"getInitialSwapData\";\n try {\n /* We use some amount here that should fit at least some of the limits of the swap providers.\n * So we are going to get some rate to be used as the default for the on-flight calculations before we get\n * the exact rate (that should be retrieved by getSwapCreationInfo method) for a specific amount.\n */\n const defaultAmountUsd = BigNumber(\"300\");\n const coinUsdRate = await swapProvider.getCoinToUSDTRate(fromCoin);\n const coinAmountForDefaultUsdAmount = AmountUtils.trim(\n coinUsdRate.result ? defaultAmountUsd.div(coinUsdRate?.rate) : defaultAmountUsd,\n fromCoin.digits\n );\n Logger.log(`Init: ${coinAmountForDefaultUsdAmount} ${fromCoin.ticker}->${toCoin.ticker}`, loggerSource);\n const details = await swapProvider.getSwapInfo(fromCoin, toCoin, coinAmountForDefaultUsdAmount);\n if (!details) {\n throw new Error(\"The details are empty: \" + safeStringify(details));\n }\n if (!details.result) {\n Logger.log(`Failed with reason: ${details.reason}. ${fromCoin.ticker}->${toCoin.ticker}`, loggerSource);\n if (\n details?.reason === SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED ||\n details?.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED\n ) {\n return { result: false, reason: details.reason };\n } else {\n throw new Error(\"Unhandled error case: \" + details?.reason);\n }\n }\n let fiatMin = null;\n let fiatMax = null;\n const fiatRate = coinToCurrentFiatRate ?? coinUsdRate?.rate;\n const fiatDecimals = fiatCurrencyDecimals ?? FiatCurrenciesService.getCurrencyDecimalCountByCode(\"USD\");\n if (fiatRate != null) {\n fiatMin = BigNumber(details?.smallestMin).times(fiatRate).toFixed(fiatDecimals);\n fiatMax = BigNumber(details?.greatestMax).times(fiatRate).toFixed(fiatDecimals);\n }\n\n const result = {\n result: true,\n min: details?.smallestMin,\n fiatMin: fiatMin,\n max: details?.greatestMax,\n fiatMax: fiatMax,\n rate: AmountUtils.trim(details.rate, 30),\n };\n Logger.log(`Returning: ${safeStringify(result)}`, loggerSource);\n return result;\n } catch (e) {\n Logger.logError(e, loggerSource, `Failed to init swap: ${safeStringify(e)}`);\n improveAndRethrow(e, loggerSource);\n }\n }\n\n static safeHandleRequestsLimitExceeding() {\n (async () => {\n try {\n await EmailsApi.sendEmail(\n \"AUTOMATIC EMAIL - SWAPSPACE REQUESTS LIMIT EXCEEDED\",\n \"Requests limit exceeded. Urgently ask swaps provider support for limit increasing\"\n );\n } catch (e) {\n Logger.log(`Failed to handle limit exceeding ${safeStringify(e)}`, \"_safeHandleRequestsLimitExceeding\");\n }\n })();\n }\n\n /**\n * If some swap is not found by id then there is no item in return list.\n *\n * @param swapProvider {SwapProvider}\n * @param swapIds {string[]}\n * @return {Promise<{\n * result: true,\n * swaps: ExistingSwapWithFiatData[]\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n static async getExistingSwapsDetailsWithFiatAmounts(swapProvider, swapIds) {\n try {\n const result = await swapProvider.getExistingSwapsDetailsAndStatus(swapIds);\n if (result.result) {\n const extendedSwaps = [];\n for (let swap of result.swaps) {\n if (swap.status === SwapProvider.SWAP_STATUSES.REFUNDED) {\n const rate = await swapProvider.getCoinToUSDTRate(swap.fromCoin);\n extendedSwaps.push(\n ExistingSwapWithFiatData.fromExistingSwap(\n swap,\n rate?.rate != null ? BigNumber(swap.fromAmount).times(rate.rate).toNumber() : null,\n rate?.rate != null ? BigNumber(swap.toAmount).times(rate.rate).toNumber() : null,\n \"USD\",\n FiatCurrenciesService.getCurrencyDecimalCountByCode(\"USD\")\n )\n );\n } else {\n const [fromCoinFiatRate, toConFiatRate] = await Promise.all([\n swapProvider.getCoinToUSDTRate(swap.fromCoin),\n swapProvider.getCoinToUSDTRate(swap.toCoin),\n ]);\n extendedSwaps.push(\n ExistingSwapWithFiatData.fromExistingSwap(\n swap,\n fromCoinFiatRate?.rate != null\n ? BigNumber(swap.fromAmount).times(fromCoinFiatRate.rate).toNumber()\n : null,\n toConFiatRate?.rate != null\n ? BigNumber(swap.toAmount).times(toConFiatRate.rate).toNumber()\n : null,\n \"USD\",\n FiatCurrenciesService.getCurrencyDecimalCountByCode(\"USD\")\n )\n );\n }\n }\n result.swaps = extendedSwaps;\n }\n\n return result;\n } catch (e) {\n improveAndRethrow(e, \"getExistingSwapsDetailsWithFiatAmounts\");\n }\n }\n}\n","import { BigNumber } from \"bignumber.js\";\nimport EventBusInstance from \"eventbusjs\";\n\nimport { FiatCurrenciesService } from \"../../common/fiatCurrenciesService.js\";\nimport { improveAndRethrow } from \"../../common/errorUtils.js\";\nimport { safeStringify } from \"../../common/utils/safeStringify.js\";\nimport { Logger } from \"../../common/utils/logging/logger.js\";\nimport { Coin } from \"../../common/models/coin.js\";\nimport { AmountUtils } from \"../../common/amountUtils.js\";\nimport { BaseSwapCreationInfo } from \"../models/baseSwapCreationInfo.js\";\nimport { SwapUtils } from \"../utils/swapUtils.js\";\nimport { SwapspaceSwapProvider } from \"../external-apis/swapspaceSwapProvider.js\";\nimport { SwapProvider } from \"../external-apis/swapProvider.js\";\n\nexport class PublicSwapService {\n static PUBLIC_SWAP_CREATED_EVENT = \"publicSwapCreatedEvent\";\n\n static PUBLIC_SWAPS_COMMON_ERRORS = {\n REQUESTS_LIMIT_EXCEEDED: \"requestsLimitExceeded\",\n };\n\n static PUBLIC_SWAP_DETAILS_FAIL_REASONS = {\n AMOUNT_LESS_THAN_MIN_SWAPPABLE: \"amountLessThanMinSwappable\",\n AMOUNT_HIGHER_THAN_MAX_SWAPPABLE: \"amountHigherThanMaxSwappable\",\n PAIR_NOT_SUPPORTED: \"pairNotSupported\",\n NO_FIXED_BUT_HAVE_FLOATING_PUBLIC_SWAP_OPTION: \"noFixedButHaveFloatingPublicSwapOption\",\n NO_FLOATING_BUT_HAVE_FIXED_PUBLIC_SWAP_OPTION: \"noFloatingButHaveFixedPublicSwapOption\",\n };\n\n static _fiatDecimalsCount = FiatCurrenciesService.getCurrencyDecimalCountByCode(\"USD\");\n\n constructor(apiKeysProxyUrl, cache) {\n this._swapProvider = new SwapspaceSwapProvider(apiKeysProxyUrl, cache, () => null, false);\n }\n\n async initialize() {\n try {\n await this._swapProvider.initialize();\n } catch (e) {\n Logger.logError(e, \"PublicSwapService.initialize\");\n }\n }\n\n async getAllSupportedCurrenciesListForPublicSwap() {\n const loggerSource = \"getAllSupportedCurrenciesListForPublicSwap\";\n try {\n const result = await this._swapProvider.getAllSupportedCurrencies();\n if (result.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n Logger.log(`Retrieved ${result?.coins?.length} supported currencies for swap`, loggerSource);\n return { result: true, coins: result.coins };\n } catch (e) {\n improveAndRethrow(e, \"getDepositCurrenciesListForPublicSwap\");\n }\n }\n\n async getDepositCurrenciesListForPublicSwap() {\n try {\n return await this._getCurrenciesListForPublicSwap(false);\n } catch (e) {\n improveAndRethrow(e, \"getDepositCurrenciesListForPublicSwap\");\n }\n }\n\n async getWithdrawCurrenciesListForPublicSwap() {\n try {\n return await this._getCurrenciesListForPublicSwap(true);\n } catch (e) {\n improveAndRethrow(e, \"getWithdrawCurrenciesListForPublicSwap\");\n }\n }\n\n async _getCurrenciesListForPublicSwap(withdraw = false) {\n const loggerSource = \"getCurrenciesListForPublicSwap\";\n try {\n const result = withdraw\n ? await this._swapProvider.getWithdrawalCurrencies()\n : await this._swapProvider.getDepositCurrencies();\n if (result.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n Logger.log(\n `Retrieved ${result?.coins?.length} supported currencies for swap (withdraw=${withdraw})`,\n loggerSource\n );\n return { result: true, coins: result.coins };\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n /**\n * Retrieves initial data for swapping two coins.\n *\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @return {Promise<{\n * result: true,\n * min: string,\n * fiatMin: (number|null),\n * max: string,\n * fiatMax: (number|null),\n * rate: (string|null)\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n async getInitialPublicSwapData(fromCoin, toCoin) {\n try {\n const result = await SwapUtils.getInitialSwapData(this._swapProvider, fromCoin, toCoin);\n if (!result.result) {\n if (result.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n if (result.reason === SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED) {\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.PAIR_NOT_SUPPORTED,\n };\n }\n }\n return result;\n } catch (e) {\n improveAndRethrow(e, \"getInitialPublicSwapData\");\n }\n }\n\n /**\n * Retrieves swap details that can be used to create swap.\n *\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @param fromAmountCoins {string}\n * @param [fixed=false] {boolean|null} null means fixed or float doesn't matter\n * @param [withoutFiat=false] {boolean} pass true if you don't need the fiat equivalent - this will diminish requests count\n * @return {Promise<{\n * result: false,\n * reason: string,\n * min: (string|null),\n * max: (string|null),\n * rate: (string|undefined),\n * fiatMin: (number|null),\n * fiatMax: (number|null)\n * }|{\n * result: true,\n * swapCreationInfo: BaseSwapCreationInfo\n * }>}\n */\n async getPublicSwapDetails(fromCoin, toCoin, fromAmountCoins, fixed = false, withoutFiat = false) {\n const loggerSource = \"getPublicSwapDetails\";\n try {\n const coinUsdtRate = withoutFiat\n ? null\n : (await this._swapProvider.getCoinToUSDTRate(fromCoin))?.rate ?? null;\n const details = await this._swapProvider.getSwapInfo(\n fromCoin,\n toCoin,\n fromAmountCoins,\n fixed,\n coinUsdtRate\n );\n\n // eslint-disable-next-line no-console\n console.log(\"getSwapInfo result: \", details);\n\n const min =\n details.smallestMin != null && BigNumber(details.smallestMin).gt(\"0\") ? details.smallestMin : null;\n const max =\n details.greatestMax != null && BigNumber(details.greatestMax).gt(\"0\") ? details.greatestMax : null;\n let fiatMin = null,\n fiatMax = null;\n if (coinUsdtRate != null) {\n if (min != null) {\n fiatMin = BigNumber(min).times(coinUsdtRate).toFixed(PublicSwapService._fiatDecimalsCount);\n }\n if (max != null) {\n fiatMax = BigNumber(max).times(coinUsdtRate).toFixed(PublicSwapService._fiatDecimalsCount);\n }\n }\n\n const composeFailResult = reason => ({\n result: false,\n reason: reason,\n min: min ?? null,\n fiatMin: fiatMin,\n max: max ?? null,\n fiatMax: fiatMax,\n rate: details.rate ?? null,\n });\n\n if (!details.result) {\n if (details?.reason === SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED) {\n return composeFailResult(PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.PAIR_NOT_SUPPORTED);\n } else if (details?.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return composeFailResult(PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);\n } else if (details?.reason === SwapProvider.NO_SWAPS_REASONS.NO_FLOATING_BUT_HAVE_FIXED) {\n return composeFailResult(\n PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.NO_FLOATING_BUT_HAVE_FIXED_PUBLIC_SWAP_OPTION\n );\n } else if (details?.reason === SwapProvider.NO_SWAPS_REASONS.NO_FIXED_BUT_HAVE_FLOATING) {\n return composeFailResult(\n PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.NO_FIXED_BUT_HAVE_FLOATING_PUBLIC_SWAP_OPTION\n );\n }\n }\n\n const fromAmountBigNumber = BigNumber(fromAmountCoins);\n if (typeof min === \"string\" && fromAmountBigNumber.lt(min)) {\n return composeFailResult(\n PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.AMOUNT_LESS_THAN_MIN_SWAPPABLE\n );\n } else if (typeof max === \"string\" && fromAmountBigNumber.gt(max)) {\n return composeFailResult(\n PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.AMOUNT_HIGHER_THAN_MAX_SWAPPABLE\n );\n }\n\n const toAmountCoins = AmountUtils.trim(fromAmountBigNumber.times(details.rate), fromCoin.digits);\n const result = {\n result: true,\n swapCreationInfo: new BaseSwapCreationInfo(\n fromCoin,\n toCoin,\n fromAmountCoins,\n toAmountCoins,\n details.rate,\n details.rawSwapData,\n min,\n fiatMin,\n max,\n fiatMax,\n details.durationMinutesRange,\n details.fixed\n ),\n };\n Logger.log(\n `Result: ${safeStringify({\n result: result.result,\n swapCreationInfo: {\n ...result.swapCreationInfo,\n fromCoin: result?.swapCreationInfo?.fromCoin?.ticker,\n toCoin: result?.swapCreationInfo?.toCoin?.ticker,\n },\n })}`,\n loggerSource\n );\n\n return result;\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n /**\n * Creates swap by given params.\n *\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @param fromAmount {string}\n * @param swapCreationInfo {BaseSwapCreationInfo}\n * @param toAddress {string}\n * @param refundAddress {string}\n * @param clientIp {string}\n * @param [toCurrencyExtraId] {string}\n * @param [refundExtraId] {string}\n * @return {Promise<{\n * result: true,\n * fiatCurrencyCode: string,\n * toCoin: Coin,\n * fromAmountFiat: (number|null),\n * address: string,\n * durationMinutesRange: string,\n * fromAmount: string,\n * toAmount: string,\n * toAmountFiat: (number|null),\n * fiatCurrencyDecimals: number,\n * fromCoin: Coin,\n * rate: string,\n * swapId: string,\n * fromCurrencyExtraId: string,\n * fixed: boolean\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n async createPublicSwap(\n fromCoin,\n toCoin,\n fromAmount,\n swapCreationInfo,\n toAddress,\n refundAddress,\n clientIp,\n toCurrencyExtraId,\n refundExtraId\n ) {\n const loggerSource = \"createPublicSwap\";\n try {\n if (\n !(fromCoin instanceof Coin) ||\n !(toCoin instanceof Coin) ||\n typeof fromAmount !== \"string\" ||\n typeof toAddress !== \"string\" ||\n typeof refundAddress !== \"string\" ||\n !(swapCreationInfo instanceof BaseSwapCreationInfo)\n ) {\n throw new Error(`Wrong input: ${fromCoin.ticker} ${toCoin.ticker} ${fromAmount} ${swapCreationInfo}`);\n }\n Logger.log(\n `Start: ${fromAmount} ${fromCoin.ticker} -> ${toCoin.ticker}. Details: ${safeStringify({\n ...swapCreationInfo,\n fromCoin: swapCreationInfo?.fromCoin?.ticker,\n toCoin: swapCreationInfo?.toCoin?.ticker,\n })}`,\n loggerSource\n );\n\n const result = await this._swapProvider.createSwap(\n fromCoin,\n toCoin,\n fromAmount,\n toAddress,\n refundAddress,\n swapCreationInfo.rawSwapData,\n clientIp,\n swapCreationInfo.fixed,\n toCurrencyExtraId,\n refundExtraId\n );\n Logger.log(\n `Created:${safeStringify({\n ...result,\n fromCoin: fromCoin?.ticker,\n toCoin: toCoin?.ticker,\n })}`,\n loggerSource\n );\n if (!result?.result) {\n if (result?.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n if (result?.reason === SwapProvider.CREATION_FAIL_REASONS.RETRIABLE_FAIL) {\n // TODO: [feature, high] implement retrying if one partner fail and we have another partners task_id=a07e367e488f4a4899613ac9056fa359\n // return {\n // result: false,\n // reason: PublicSwapService.SWAP_CREATION_FAIL_REASONS.RETRIABLE_FAIL,\n // };\n }\n }\n if (result.result && result?.swapId) {\n let fromAmountFiat = null,\n toAmountFiat = null;\n try {\n const fromCoinUsdtRate = (await this._swapProvider.getCoinToUSDTRate(fromCoin))?.rate ?? null;\n const toCoinUsdtRate = (await this._swapProvider.getCoinToUSDTRate(fromCoin))?.rate ?? null;\n if (fromCoinUsdtRate != null && result.fromAmount != null) {\n fromAmountFiat = BigNumber(result.fromAmount)\n .times(fromCoinUsdtRate)\n .toFixed(PublicSwapService._fiatDecimalsCount);\n }\n if (toCoinUsdtRate != null && result.toAmount != null) {\n toAmountFiat = BigNumber(result.toAmount)\n .times(toCoinUsdtRate)\n .toFixed(PublicSwapService._fiatDecimalsCount);\n }\n } catch (e) {\n Logger.logError(e, loggerSource, \"Failed to calculate fiat amounts for result\");\n }\n\n // TODO: feature, cirtical] add GA event. task_id=tbd\n EventBusInstance.dispatch(\n PublicSwapService.PUBLIC_SWAP_CREATED_EVENT,\n null,\n fromCoin.ticker,\n toCoin.ticker,\n fromAmountFiat\n );\n\n const toReturn = {\n result: true,\n swapId: result.swapId,\n fromCoin: fromCoin,\n toCoin: toCoin,\n fromAmount: result.fromAmount,\n toAmount: result.toAmount,\n fromAmountFiat: fromAmountFiat,\n toAmountFiat: toAmountFiat,\n fiatCurrencyCode: \"USD\",\n fiatCurrencyDecimals: PublicSwapService._fiatDecimalsCount,\n rate: result.rate,\n durationMinutesRange: swapCreationInfo.durationMinutesRange,\n address: result.fromAddress, // CRITICAL: this is the address to send coins to swaps provider\n fromCurrencyExtraId: result.fromCurrencyExtraId ?? \"\", // CRITICAL: this is the extra ID for address to send coins to swaps provider\n fixed: result.fixed,\n };\n\n this._savePublicSwapIdLocally(result.swapId);\n\n Logger.log(\n `Returning: ${safeStringify({\n ...toReturn,\n fromCoin: fromCoin?.ticker,\n toCoin: toCoin?.ticker,\n })}`,\n loggerSource\n );\n return toReturn;\n }\n\n throw new Error(`Unexpected result from provider ${safeStringify(result)}`);\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n /**\n * Retrieves swap details and status for existing swaps by their ids.\n *\n * @param swapIds {string[]}\n * @return {Promise<{\n * result: true,\n * swaps: ExistingSwapWithFiatData[]\n * }|{\n * result: false,\n * reason: string\n * }>}\n * error reason is one of PUBLIC_SWAPS_COMMON_ERRORS\n */\n async getPublicExistingSwapDetailsAndStatus(swapIds) {\n const loggerSource = \"getPublicExistingSwapDetailsAndStatus\";\n try {\n const result = await SwapUtils.getExistingSwapsDetailsWithFiatAmounts(this._swapProvider, swapIds);\n if (!result?.result) {\n if (result.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n throw new Error(\"Unknown reason: \" + result?.reason);\n }\n\n return result;\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n /**\n * Retrieves the whole available swaps history by ids saved locally.\n *\n * @return {Promise<{\n * result: true,\n * swaps: ExistingSwapWithFiatData[]\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n async getPublicSwapsHistory() {\n try {\n const swapIds = this._getPublicSwapIdsSavedLocally();\n if (swapIds.length) {\n return await this.getPublicExistingSwapDetailsAndStatus(swapIds);\n }\n return { result: true, swaps: [] };\n } catch (e) {\n improveAndRethrow(e, \"getPublicSwapsHistory\");\n }\n }\n\n /**\n * @param swapId {string}\n * @private\n */\n _savePublicSwapIdLocally(swapId) {\n if (typeof window !== \"undefined\") {\n try {\n const saved = localStorage.getItem(\"publicSwapIds\");\n const ids = typeof saved === \"string\" && saved.length > 0 ? saved.split(\",\") : [];\n ids.push(swapId);\n localStorage.setItem(\"publicSwapIds\", ids.join(\",\"));\n } catch (e) {\n improveAndRethrow(e, \"_savePublicSwapIdLocally\");\n }\n }\n }\n\n /**\n * @private\n * @return {string[]}\n */\n _getPublicSwapIdsSavedLocally() {\n if (typeof window !== \"undefined\") {\n try {\n const saved = localStorage.getItem(\"publicSwapIds\");\n return typeof saved === \"string\" && saved.length > 0 ? saved.split(\",\") : [];\n } catch (e) {\n improveAndRethrow(e, \"_getPublicSwapIdsSavedLocally\");\n }\n }\n }\n\n /**\n * @param coinOrTicker {Coin|string}\n * @return {string} icon URL (ready to use)\n */\n getAssetIconUrl(coinOrTicker) {\n return this._swapProvider.getIconUrl(coinOrTicker);\n }\n\n /**\n * @param ticker {string}\n * @return {Coin|null}\n */\n getCoinByTickerIfPresent(ticker) {\n return this._swapProvider.getCoinByTickerIfPresent(ticker);\n }\n\n /**\n * TODO: [feature, moderate] add other fiat currencies support. task_id=5490e21b8b9c4f89a2247b28db3c9e0a\n * @param asset {Coin}\n * @return {Promise<string|null>}\n */\n async getAssetToUsdtRate(asset) {\n try {\n const result = await this._swapProvider.getCoinToUSDTRate(asset);\n return result?.rate ?? null;\n } catch (e) {\n improveAndRethrow(e, \"getAssetToUsdtRate\");\n }\n }\n\n /**\n * @param asset {Coin}\n * @param address {string}\n * @return {boolean}\n */\n isAddressValidForAsset(asset, address) {\n try {\n return this._swapProvider.isAddressValidForAsset(asset, address);\n } catch (e) {\n improveAndRethrow(e, \"isAddressValidForAsset\");\n }\n }\n\n /**\n * Retrieves token by contract address.\n *\n * @param addressString {string}\n * @return {Promise<Coin|null>}\n */\n async getTokenByContractAddress(addressString) {\n try {\n if (!addressString) return null;\n const addressLowerCase = addressString.toLowerCase();\n const allCoins = await this._swapProvider.getAllSupportedCurrencies();\n if (allCoins.result) {\n return allCoins.coins.find(\n coin => coin.tokenAddress && coin.tokenAddress.toLowerCase() === addressLowerCase\n );\n }\n } catch (e) {\n Logger.logError(e, \"getTokenByContractAddress\");\n }\n return null;\n }\n\n /**\n * @param asset {Coin}\n * @return {string|null}\n */\n getExtraIdNameIfPresentForAsset(asset) {\n try {\n return this._swapProvider.getExtraIdNameIfPresent(asset);\n } catch (e) {\n improveAndRethrow(e, \"getExtraIdNameIfPresentForAsset\");\n }\n }\n}\n"],"names":["require$$0","require$$1","ReactPropTypesSecret","has","printWarning","checkPropTypes","ReactIs","assign","LoadingDots","size","isColored","noMargins","align","React","createElement","className","styles","dot","colored","propTypes","PropTypes","oneOf","bool","oneOfType","Button","mode","onClick","resetButtonLoader","event","loader","loading","to","fullWidthOnMobiles","fullWidthOnTablets","icon","content","isDisabled","setClickTrigger","p","isFormSubmittingButton","bigIcon","checkmarkOnClick","propagatePrimaryButtonClick","smallPaddingOnSmallMobiles","handleError","func","isLoading","setIsLoading","useState","isCheckShown","setIsCheckShown","setEvent","buttonRef","useRef","useEffect","current","click","buttonClick","e","setTimeout","persist","stopPropagation","classNames","button","disable","Fragment","type","hidden","href","ref","src","alt","show","string","node","defaultProps","SupportChat","url","websiteToken","welcomeMessage","locale","window","chatwootSettings","position","launcherTitle","d","t","BASE_URL","g","s","getElementsByTagName","defer","async","parentNode","insertBefore","onload","chatwootSDK","run","baseUrl","document","isRequired","AssetIcon","assetIconSrc","assetIconProtocolSrc","fallbackSrc","small","handleFailedLoad","target","onerror","onError","LogsStorage","saveLog","log","_inMemoryStorage","push","getInMemoryLogs","getAllLogs","storedLogs","localStorage","getItem","_logsStorageId","join","saveToTheDisk","logger","MAX_LOCAL_STORAGE_VOLUME_BYTES","MAX_LOGS_STORAGE_BYTES","existingLogs","logsString","lettersCountToRemove","length","Math","round","setItem","slice","logError","removeAllClientLogs","removeItem","setDoNotRemoveClientLogsWhenSignedOut","value","safeStringify","object","indent","cache","String","retVal","JSON","stringify","key","toLowerCase","includes","body","query","headers","statusText","status","data","Logger","logString","source","timestamp","Date","toISOString","settingFunction","additionalMessage","onlyToConsole","_e$errorDescription","_e$howToFix","message","errorDescription","howToFix","httpStatus","response","responseData","finalErrorText","console","error","useCallHandlingErrors","setState","useCallback","functionToBeCalled","name","ICON_ROTATE_OPTIONS","rotate0","rotate90","rotate180","rotate270","LinkButton","isLoadable","iconRotate","IconComponent","callHandlingErrors","processedIconRotation","setProcessedIconRotation","handleClick","Object","keys","find","values","elementType","undefined","DialogButtons","primaryButtonTitle","primaryButtonOnClick","primaryButtonLoader","primaryButtonTo","primaryButtonSetClickTrigger","secondaryButtonTitle","secondaryButtonOnClick","secondaryButtonTo","secondaryButtonBig","withBackgroundImage","hideOnMobiles","BackgroundTitle","text","smallMargins","CLOSE_COLORS","WHITE","DARK","DARK_INVERT","Close","color","large","style","cursor","xmlns","viewBox","x","y","width","height","fill","opacity","rx","id","x1","y1","x2","y2","gradientUnits","offset","Validation","isSuccessAlert","SuccessfulValidationIcon","FailedValidationIcon","useReferredState","initialValue","state","reference","setReferredState","toString","call","improveAndRethrow","improvedErrorMessage","Error","logErrorOrOutputToConsole","DIALOG_SIZES","regular","largePlus","largePlusPlus","extraLarge","DIALOG_TRANSITION_STEP_DURATION","Dialog","showDialog","onClose","initControls","children","dispatchDialogOpened","dispatchDialogClosed","inline","buttonsConfigurationDefault","fixedButtonsEnabled","showDialogProcessed","setShowDialogProcessed","currentStep","setCurrentStep","steps","setSteps","dialogConfiguration","updateDialogConfiguration","cornerBackButtonTitle","customWidth","animationConfiguration","updateAnimationConfiguration","animateHeightDelay","animateHeightTransitionSpeed","animateHeightTransitionEnabled","wrapperWidthAnimationEnabled","currentStepAnimationEnabled","cornerBackButtonAnimationEnabled","triggerAnimationFinishedDispatcher","dialogContainerOverflowDisabled","hideMobileBottomButtonSection","stepAnimationFinishedTrigger","setStepAnimationFinishedTrigger","dialogVerticalHeight","setDialogVerticalHeight","currentStepRef","setCurrentStepRef","dimensions","setDimensions","buttonsConfiguration","updateButtonsConfigurationState","buttonControllingStep","updateButtonControllingStep","isMultiStep","setIsMultiStep","dialogWrapperRef","dialogRef","scrollableRef","resizeObserverRef","updateButtonsConfiguration","newConfiguration","stepName","disableAnimation","showCornerButtonForStep","stepButtonShowParam","stepNameId","findIndex","step","nextStep","animationControlEnabled","index","goToStep","previousStep","prevSteps","map","filter","item","getStepClass","stepClass","isCurrentStep","toFirstStep","enableAnimation","provideCurrentStepRef","dispatch","prev","_extends","scrollDialogToTop","animateScrollTo","elementToScroll","minDuration","maxDuration","clearButtonsConfiguration","ResizeObserver","entries","forEach","entry","contentRect","observe","disconnect","childrenFormatted","stepsArr","child","props","clearAllBodyScrollLocks","CSSTransition","in","timeout","enter","enterActive","exit","exitActive","unmountOnExit","onExited","onExiting","enableBodyScroll","onEntered","disableBodyScroll","maxWidth","AnimateHeight","duration","delay","contentClassName","enterDone","exitDone","DIALOG_STEP_CLASS","stroke","DialogStep","image","ImageRaw","title","titleIcon","titleIconCoin","coinToIconPaths","titleLoadingDots","subtitle","backButtonText","backButtonClick","backButtonTo","confirmButtonText","confirmButtonClick","confirmButtonLink","fixedButtons","showCornerBackButton","cornerBackButtonClick","bigButtonMargins","noButtonMargins","headerTitleLeft","subtitleSmallMargin","subtitleNoMargin","showBackgroundTitle","breakSubtitleWords","contentAlign","controls","backgroundImage","backgroundImageMobile","isSecondaryButtonBig","setStepClass","wrapperDirectionSubclass","setWrapperDirectionSubclass","unmountOnAnimationEndTrigger","setUnmountOnAnimationEndTrigger","stepMounted","setStepMounted","isTopImagePassed","setIsTopImagePassed","handleTransitionEnd","propertyName","classList","multiStep","onTransitionEnd","arrowWhite","arrowTosca","AssetSelection","disabled","protocolName","ArrowIcon","TOOLTIP_POSITIONS","TOP","LEFT","RIGHT","BOTTOM","TOP_LEFT","TOP_RIGHT","Tooltip","showTooltip","wide","ignorePointerEvents","onDoubleClick","DarkRectangle","handleClickOutside","exceptionsRefs","callback","isExceptionClicked","contains","addEventListener","removeEventListener","NoticeIcon","noticeText","titleNoticeIcon","tooltipPosition","setShowTooltip","noticeRef","NoticeQuestionIcon","copyBrowserTextToClipboard","copy","TitleBox","linkText","linkButtonClick","isLinkButtonDisabled","linkButtonLoader","fullWidth","titleNoticeText","titleNoticePosition","bigTitle","transparentTitle","copyButtonText","copyButtonContent","copyButtonTooltipContent","transparentTitleClass","showCopyNotice","setShowCopyNotice","handleCopyButton","InputValuesProviders","provideFormatOfFloatValueByInputString","inputString","digitsAfterDot","maxValue","_parts$2","replace","parts","split","_parts$","maxDigitsCountBeforeTheDot","BigNumber","toFixed","substring","FiatCurrenciesService","getFullCurrencyNameByCode","code","fiatCurrenciesList","currencyData","toUpperCase","isCodeValid","currenciesData","getCurrencySymbolByCode","_data$","getCurrencyDecimalCountByCode","_data$2","AmountUtils","fiatXs","amount","fiat","extraSmallLength","currencyCode","passedParams","params","defaultFiatParams","_checkIfAmountInvalid","currencySymbol","currencyDecimalCount","trimmedByMaxDigits","ROUND_FLOOR","processedAmount","collapsible","gte","_collapseToMillionsAndFormat","collapsedDecimalCount","limitResult","_limitTotalAmountLengthIfNeeded","toFormat","ticker","enableCurrencySymbols","cryptoWoTicker","digits","crypto","cryptoWoTickerXs","cryptoXs","periods","cryptoFull","trim","limitTotalLength","cryptoFullPureNumber","numberPartsSeparator","significantDecimalCount","defaultCryptoParams","addPeriods","amountBigNumber","removeRedundantRightZerosFromNumberString","originalAmountDecimalPlaces","decimalPlaces","errorMessage","wereMillionsCollapsed","allowNumbers","isBigNumber","toIntegerString","decimalCount","millionBigNumber","millions","div","limitedResult","formatted","amountString","maxLength","extraSmallMaxTotalLength","maxTotalLength","delta","currentDecimalsCount","newDecimalCount","composeRateText","leftTicker","rightTicker","rate","rightCurrencyDigitsAfterDots","strictRate","leftNumber","multiplier","maxAttemptsToGetRate","right","rateBigNumber","eq","Number","isNaN","i","rightNumberAttempt","times","leftAmountString","rightAmountString","numberAsAString","_right2","_right","AmountInput","forwardRef","label","handleCoinAmountChange","btcAmount","handleFiatAmountChange","fiatAmount","handleChangeAssetClick","handleBalanceValidationChange","isValid","locked","alertText","predefinedValue","tickerPrintable","assetDecimalPlaces","assetBalance","assetAmount","fallbackAssetIconSrc","isSendAll","handleSendAllClick","showBalance","showBalanceValidation","showChangeAssetButton","changeAssetButtonProtocol","changeAssetButtonDisabled","upperFormPosition","lowerFormPosition","errorEncountered","updateAssetInputTo","estimateAmount","cryptoAssetToFiatRate","fiatCurrencyCode","fiatCurrencyDecimals","linkButtonActiveText","linkButtonInactiveText","balanceLoaderText","fiatInputPlaceholderText","buttonForwardRef","coinAmountValue","setCoinAmountValue","coinAmountPlaceholder","setCoinAmountPlaceholder","fiatAmountValue","setFiatAmountValue","interactedWith","setInteractedWith","fiatAmountAutoFocus","setFiatAmountAutoFocus","isInFocus","setIsInFocus","highlightBalance","setHighlightBalance","highlightInput","setHighlightInput","resetToDefault","handleChangeAmount","newAmountString","handlerEnabled","correctedAmount","handleChangeAmountFiat","correctedFiatAmount","coinAmount","coinsAmount","isZero","placeholderByDecimalCount","repeat","handleFiatInteraction","enableHighlight","gt","WalletIcon","inputMode","onChange","placeholder","onFocus","onBlur","autoFocus","Textarea","successAlertText","fullHeight","smallText","adaptiveHeight","ignoreEnter","onChangeProxy","_e$target","indexOf","htmlFor","TextareaAutosize","minRows","maxRows","RateSelector","isFixed","setIsFixed","translations","floatingRate","fixedRate","SwapForm","sendingAssetTicker","receivingAssetTicker","sendingAssetDecimalCount","receivingAssetDecimalCount","sendingAssetTickerPrintable","receivingAssetTickerPrintable","sendingAssetProtocol","receivingAssetProtocol","sendingAssetIconSrc","sendingAssetProtocolIconSrc","receivingAssetIconSrc","receivingAssetProtocolIconSrc","fallBackAssetIconSrc","sendingAssetFeeCoinTickerPrintable","sendingAssetBalance","receivingAssetBalance","handleChangeSendingAssetClick","handleChangeReceivingAssetClick","handleConfirmButtonClick","setValidationContent","setBalanceValid","setMinimalAmountValid","setMaximumAmountValid","setIsPairSupported","setIsSameCoins","composeConfirmButtonTo","fromTicker","toTicker","fromAmount","setSwapCreationEstimation","details","handleUnexpectedError","rotateAssets","preservedAmount","handleSwapServiceError","errorCode","formHasBalance","retrieveSwapDetails","isSwapAll","retrieveInitialSwapData","triggerDataUpdateResetting","fromAssetSelectionButtonRef","toAssetSelectionButtonRef","sendingAssetToFiatRate","receivingAssetToFiatRate","formHasFiat","termsOfUseUrl","privacyPolicyUrl","swapAllButtonTitles","enable","cancel","input","fiatPlaceholder","consents","consentText","termsOfUse","and","privacyPolicy","informationBlock","minimumAmount","maximumAmount","transactionFee","calculatingNetworkFee","loadingMinimalAmount","swapRate","calculatingSwapRates","pairNotAvailable","addressFields","addressTitle","extraIdTitle","extraIdPlaceholder","extraIdNotice","rateSelector","swapSeparatorIconSrc","swapButtonAlwaysActive","recepientAddress","recepientAddressExtraId","recepientAddressValid","recepientAddressExtraIdValid","setRecepientAddress","setRecepientAddressExtraId","recepientAddressExtraIdAvailable","displayRateSelector","_isFixedRate$current2","_maximumAmount$curren4","_maximumAmount$curren5","_maximumAmount$curren6","_minimalAmount$curren5","_isFixedRate$current3","DETAIL_REFRESH_INTERVAL_MS","IS_FIXED_BY_DEFAULT","updateSendInputTo","setUpdateSendInputTo","updateReceiveInputTo","setUpdateReceiveInputTo","sendAssetAmount","setSendAssetAmount","setSwapRate","minimalAmount","setMinimalAmount","setMaximumAmount","validationContent","minimalAmountValid","maximumAmountValid","isPairSupported","isSameCoins","isSwapCalculated","setIsSwapCalculated","readyToSwap","setReadyToSwap","isAmountZero","setIsAmountZero","isAddressFieldEnabled","setIsAddressFieldEnabled","isFixedRate","setIsFixedRate","confirmButtonTo","setConfirmButtonTo","setTransactionFee","balanceValid","setIsSwapAll","swapAllButtonLoaderReSetter","setSwapAllButtonLoaderReSetter","dataUpdateTimeoutId","setDataUpdateTimeoutId","idleDataUpdateTimeoutId","setIdleDataUpdateTimeoutId","recalculationDelayOnTyping","handleSendAssetAmountChange","handleReceiveAssetAmountChange","handleMinimalAmountClick","_minimalAmount$curren","_minimalAmount$curren2","handleMaximumAmountClick","_maximumAmount$curren","_maximumAmount$curren2","handleSwapAllClick","processMinMaxAmounts","_minimalAmount$curren3","lte","requestDataRefresh","immediately","clearTimeout","loadFullEstimation","loadMinimalAmountAndSwapRate","setAmountLimitsAndRate","_details$rate","min","fiatMin","max","fiatMax","feeCoins","feeFiat","isForPreserved","_minimalAmount$curren4","_maximumAmount$curren3","_isFixedRate$current","dataMemento","result","swapCreationInfo","fromAmountCoins","toAmountCoins","reason","isCalledForClearedInput","swapData","handleChangeAssetsIconClick","handleRateModeChanged","isCurrentAmountNotZero","isPreservedAmountNotZero","timeoutId","_sendAssetAmount$curr","processingAmount","draggable","number","any","generateQrAndShowInCanvas","encodingString","QRCode","QrCode","address","canvasRef","innerHTML","LinesOfText","firstLineText","secondLineText","thirdLineText","isHorizontal","defaultTextContent","isFirstLineTextReducible","firstLineNotReducibleSuffix","wrapFirstLine","breakFirstLine","LineWithIconLink","rel","cx","cy","r","transform","DeterminedErrorDialogStep","backButtonLink","determinedErrorImage","TitledLineWithIconLink","RadioButtonWithText","onStateChange","isSwitchedOn","tooltipText","showTooltipTimeoutId","setShowTooltipTimeoutId","handleChange","onMouseEnter","onMouseLeave","InformationMessage","bigImage","whiteText","InfoIcon","Input","defaultValue","isBigHeight","isSmallHeight","onKeyUp","fillWidth","clearButton","imageBackground","handleClearButtonClick","focus","FALLBACK_ASSET_ICON_URL","DEFAULT_CRYPTO_DECIMAL_COUNT","COIN_PICKER_MODES","BUTTON","CHECKBOX","defaultTexts","searchPlaceholder","noAssetsMessage","loadMoreButton","assetSuggestionMessage","part1","part2","part3","CoinPicker","allCoins","initiallyEnabledCoinsList","triggerToReloadData","search","searchAdaptive","setCoinPickerValue","setCoinPickerListChanged","loadCoinsAndContent","showRequestMissingCoinsInfoMessage","supportUrl","coin","partialLoadingEnabled","partialLoadingIncrement","texts","coins","setCoins","filteredCoins","setFilteredCoins","initiallyEnabledCoins","setInitiallyEnabledCoins","currentlyEnabledCoins","setCurrentlyEnabledCoins","searchFieldValue","setSearchFieldValue","scrollWrapperClass","setScrollWrapperClass","searchEnabled","setSearchEnabled","coinsContent","setCoinsContent","isCoinsDataReloadable","setIsCoinsDataReloadable","limitedCoinsNumber","setLimitedCoinsNumber","displayedCoins","setDisplayedCoins","isListFull","setIsListFull","searchRef","scrollContainerRef","skeletonItemsCount","defaultLoadCoinsAndContent","allCoinsSorted","sortCoinsArrayByAlphabet","composeEnabledCoinsObject","c","_c$blockchain","blockchain","coinsToSort","enabledCoinsObject","sort","a","b","latinName","reduce","enabledCoin","handleToggleClick","handleCoinClick","handleSearchAsset","searchTerm","searchWords","filteredAndSortedCoins","every","word","_coin$latinName","_coin$ticker","_coin$tickerPrintable","aMatch","bMatch","localeCompare","loadCoinsAndSaveToState","intervalId","setInterval","clearInterval","enabled","enabledCoinsTickers","coinsToDisplay","displayMoreCoins","skeleton","skeletonItems","handleScroll","_scrollContainerRef$c","_scrollContainerRef$c2","_scrollContainerRef$c3","_scrollContainerRef$c4","_scrollContainerRef$c5","_scrollContainerRef$c6","_scrollContainerRef$c7","scrollTop","scrollHeight","clientHeight","shouldShowSkeleton","onScroll","_coinsContent$find$su","_coinsContent$find","array","shape","CoinPickerDialogStep","handleCoinSelection","PARAMETER_VALUES_SEPARATOR","saveQueryParameterAndValues","parameterName","updateURLCallback","newQueryString","parametersAndValues","parseSearchString","parameterAndValues","parameterValuesForURL","encodeURIComponent","removeQueryParameterAndValues","getQueryParameterValues","parameterAndValue","allValues","decodeURIComponent","_window$location$sear","trimmed","location","getQueryParameterSingleValue","Blockchain","constructor","supportedProtocols","Protocol","protocol","Coin","digitsCountAfterComma","atomName","mainnet","testnet","minConfirmations","payableEntityStringForFeeRate","feeOptionsTimeStringsSortedDesc","feeRatesExpirationTimeMs","tokenAddress","doesUseLowerCaseAddresses","doesUseOutputs","feeCoin","_significantDigits","setFeeCoin","doesUseDifferentCoinFee","atomsToCoinAmount","atoms","coinAmountToAtoms","composeUrlToTransactionExplorer","txId","coinAtomsFeeRateToCommonlyUsedAmountFormatWithDenominationString","coinAtomsString","doesSupportTransactionPrioritisation","Array","isArray","tickerAndProtocol","_ref","Cache","eventBus","noSessionEvents","_cache","Map","_eventDependentDataKeys","_noSessionEvents","_eventBus","_setupIntervalClearingExpired","cleaner","get","ttlMs","addedMsTimestamp","now","delete","bind","put","set","putSessionDependentData","_putEventDependentData","putEventDependentData","events","eventAndKeys","getLastUpdateTimestamp","_this$_cache$get$adde","_this$_cache$get","setLastUpdateTimestamp","addedTimestampMs","invalidate","invalidateContaining","keyPart","matchedKeys","from","RegExp","test","clear","_sessionDependentDataKeys","putClientPersistentData","uniqueKey","getClientPersistentData","markCacheItemAsExpiredButDontRemove","ttlFinalMs","postponeExecution","execution","timeoutMS","Promise","resolve","reject","AxiosAdapter","method","args","axios","post","patch","options","head","EmailsApi","sendEmail","subject","host","serverEndpointEntity","ExternalApiProvider","endpoint","httpMethod","apiGroup","specificHeaders","maxPageLength","MAX_SAFE_INTEGER","niceFactor","getRps","_this$apiGroup$rps","rps","isRpsExceeded","actualizeLastCalledTimestamp","getApiGroupId","doesRequireSubRequests","doesSupportPagination","composeQueryString","subRequestIndex","composeBody","getDataByResponse","iterationsData","changeQueryParametersForPageNumber","previousResponse","pageNumber","checkWhetherResponseIsForLastPage","currentResponse","currentPageNumber","resetNiceFactor","incorporateIterationsData","flat","ApiGroup","backendProxyIdGenerator","lastCalledTimestamp","_this$lastCalledTimes","floor","ApiGroups","ETHERSCAN","ALCHEMY","networkKey","BLOCKSTREAM","BLOCKCHAIN_INFO","BLOCKNATIVE","ETHGASSTATION","TRONGRID","TRONSCAN","GETBLOCK","COINCAP","COINGECKO","MESSARI","BTCCOM","BITAPS","CEX","BIGDATACLOUD","TRACKIP","IPIFY","WHATISMYIPADDRESS","EXCHANGERATE","FRANKFURTER","BITGO","BITCOINER","BITCORE","MEMPOOL","ConcurrentCalculationsMetadataHolder","_calculations","startCalculation","domain","calculationsHistoryMaxLength","newCalculation","startTimestamp","endTimestamp","uuid","v4","endCalculation","isFailed","_calculation$endTimes","_calculation$startTim","_calculation$uuid","calculation","isFiled","elapsed","isCalculationLate","queue","analysingCalculation","printCalculationsWaitingMoreThanSpecifiedSeconds","waitingLastsMs","calculations","concurrentCalculationsMetadataHolder","ExternalServicesStatsCollector","stats","externalServiceFailed","serviceUrl","processMessage","stat","_stat$errors","_errorMessage","errors","match","callsCount","failsCount","externalServiceCalledWithoutError","getStats","_stat$errors2","failsPerCent","calls","s1","s2","RobustExternalAPICallerService","statsCollector","bio","providersData","provider","providers","_logger","callExternalAPI","parametersValues","cancelToken","attemptsCount","doNotFailForNowData","_this","calculationUuid","_result4","_result5","_result","shouldBeForceRetried","_result2","rpsFactor","defaultRPSFactor","_result3","_result$errors","_performCallAttempt","maxRps","_provider$getRps","waitingTimeMs","_data","_reorderProvidersByNiceFactor","providerIndex","countOfRequestsDeclinedByRps","_provider$specificHea","axiosConfig","httpMethods","axiosParams","_provider$composeBody","splice","responsesForPages","hasNextPage","actualizedParams","waitingTimeMS","postponeUntilRpsExceeded","recursionLevel","maxCountOfPostponingAttempts","responsesDataForPages","allData","punishProvider","rpsMultiplier","providersCopy","p1","p2","CacheAndConcurrentRequestsResolver","cacheTtl","removeExpiredCacheAutomatically","maxCallAttemptsToWaitForAlreadyRunningRequest","timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished","_bio","_cacheTtlMs","_maxExecutionTimeMs","_removeExpiredCacheAutomatically","_requestsManager","ManagerOfRequestsToTheSameResource","getCachedOrWaitForCachedOrAcquireLock","cacheId","_cached2","startedAtTimestamp","cached","cachedDataBackupIsPresentButExpired","lastUpdateTimestamp","calculationId","isRetrievedCacheExpired","isWaitingForActiveCalculationSucceeded","weStillHaveSomeTimeToProceedExecution","startCalculationOrWaitForActiveToFinish","_cached","canStartDataRetrieval","cachedData","lockId","getCached","_getTtl","acquireLock","saveCachedData","sessionDependentData","wasDataMergedSynchronouslyWithMostRecentCacheState","isTheLockActiveOne","releaseLock","finishActiveCalculation","actualizeCachedData","synchronousCurrentCacheProcessor","sessionDependent","isModified","finishAllActiveCalculations","markAsExpiredButDontRemove","maxPollsCount","timeoutDuration","_activeCalculationsIds","_nextCalculationIds","requestHash","activeCalculationIdForHash","_waitForCalculationIdToFinish","_this$_nextCalculatio","activeId","nextId","currentNext","waitingResult","_this$_nextCalculatio2","next","hash","activeCalculationId","attemptIndex","waitForCalculationId","currentId","it","CachedRobustExternalApiCallerService","cacheTtlMs","mergeCachedAndNewlyRetrievedData","_provider","_cahceAndRequestsResolver","_cahceIds","_mergeCachedAndNewlyRetrievedData","callExternalAPICached","customHashFunctionForParams","loggerSource","_calculateCacheId","canPerformMerge","mostRecentCached","invalidateCaches","actualizedAtTimestamp","markCacheAsExpiredButDontRemove","Hashes","SHA512","hex","BigdatacloudIpAddressProvider","_response$data","ipString","TrackipIpAddressProvider","IpifyV6IpAddressProvider","_response$data2","ip","IpifyIpAddressProvider","_response$data3","WhatismyipaddressIpAddressProvider","IpAddressProvider","getClientIpAddress","externalIPAddressAPICaller","EventBusInstance","CancelProcessing","_cancelToken","CancelToken","_isCanceled","isCanceled","getToken","token","instance","ExistingSwap","swapId","createdAt","expiresAt","confirmations","fixed","refundAddress","payToAddress","fromCoin","fromTransactionId","fromTransactionLink","toCoin","toAmount","toTransactionId","toTransactionLink","toAddress","partner","fromExtraId","toExtraId","refundExtraId","ExistingSwapWithFiatData","fromAmountFiat","toAmountFiat","fromExistingSwap","existingSwap","BaseSwapCreationInfo","rawSwapData","durationMinutesRange","SwapProvider","initialize","getSwapCreationInfoTtlMs","getAllSupportedCurrencies","getDepositCurrencies","getWithdrawalCurrencies","exceptCurrency","getIconUrl","getCoinToUSDTRate","getSwapInfo","amountCoins","fromCoinToUsdRate","createSwap","clientIpAddress","toCurrencyExtraId","getExistingSwapsDetailsAndStatus","swapIds","getCoinByTickerIfPresent","isAddressValidForAsset","asset","getExtraIdNameIfPresent","COMMON_ERRORS","REQUESTS_LIMIT_EXCEEDED","NO_SWAPS_REASONS","TOO_LOW","TOO_HIGH","NOT_SUPPORTED","NO_FIXED_BUT_HAVE_FLOATING","NO_FLOATING_BUT_HAVE_FIXED","CREATION_FAIL_REASONS","RETRIABLE_FAIL","SWAP_STATUSES","WAITING_FOR_PAYMENT","CONFIRMING","PAYMENT_RECEIVED","EXCHANGING","COMPLETED","REFUNDED","EXPIRED","FAILED","BANNED_PARTNERS","SwapspaceSwapProvider","apiKeysProxyUrl","customCoinBuilder","network","useRestrictedCoinsSet","_supportedCoins","_URL","_maxRateDigits","_customCoinBuilder","_this$_supportedCoins","_fetchSupportedCurrenciesIfNeeded","deposit","_e$response","_this$_supportedCoins2","_e$response2","_this$_supportedCoins3","_item$coin","withdrawal","_e$response3","coinOrTicker","_this$_supportedCoins5","_this$_supportedCoins6","_this$_supportedCoins4","_item$coin2","_coin","iconURL","_this$_supportedCoins7","_rawResponse$data","_rawResponse$data2","rawResponse","allowedCoins","_item$name","replaceAll","defaultDecimalPlacesForCoinNotSupportedOOB","defaultMinConfirmationsForCoinNotSupportedOOB","contractAddress","_item$deposit","_item$withdrawal","_item$validationRegex","hasExtraId","extraIdName","isPopular","popular","validationRegexp","_putPopularCoinsFirst","i1","i2","_this$_supportedCoins8","usdtTrc20","standardSwapspaceFeeMultiplier","_item$coin3","_exchangesSupportingT","lt","fromCoinSwapspaceDetails","_i$coin","toCoinSwapspaceDetails","_i$coin2","exchangesSupportingThePairDespiteFixedOrFloating","exchange","exists","bannedPartner","exchangesSupportingThePair","option","availableExchanges","smallestMin","ex","cur","greatestMax","extraCoinsToFitMinMax","extraUsdToFitMinMax","plus","minus","_bestOpt$duration","sorted","op1","op2","bestOpt","_e$response4","fromCurrency","fromNetwork","toCurrency","toNetwork","fromCurrencyHasExtraId","toCurrencyHasExtraId","coinData","requestData","extraId","rateId","userIp","refund","_result$from","_result$from2","_result$to","_result$to2","_result$from4","_result$from5","_result$to4","_result$to5","_result$from$extraId","_result$from6","_result$to3","_result$from3","fromAddress","fromCurrencyExtraId","_e$response5","_e$response6","composeFailResult","texts422","text403","_mapSwapspaceStatusToRabbitStatus","isExpiredByTime","getNotFailingOn404","_error$response","responses","all","wo404","swaps","swap","_this$_supportedCoins9","_this$_supportedCoins10","_swap$from$extraId","_swap$to$extraId","_swap$refundExtraId","toUtcTimestamp","timeStr","parse","timestamps","toDigits","addressToSendCoinsToSwapspace","transactionHash","blockExplorerTransactionUrl","_e$response7","_e$response8","assetData","_i$coin3","corrected","_i$coin4","SwapUtils","getInitialSwapData","swapProvider","coinToCurrentFiatRate","defaultAmountUsd","coinUsdRate","coinAmountForDefaultUsdAmount","fiatRate","fiatDecimals","safeHandleRequestsLimitExceeding","getExistingSwapsDetailsWithFiatAmounts","extendedSwaps","toNumber","fromCoinFiatRate","toConFiatRate","PublicSwapService","_swapProvider","getAllSupportedCurrenciesListForPublicSwap","_result$coins","PUBLIC_SWAPS_COMMON_ERRORS","getDepositCurrenciesListForPublicSwap","_getCurrenciesListForPublicSwap","getWithdrawCurrenciesListForPublicSwap","withdraw","_result$coins2","getInitialPublicSwapData","PUBLIC_SWAP_DETAILS_FAIL_REASONS","PAIR_NOT_SUPPORTED","getPublicSwapDetails","withoutFiat","_await$this$_swapProv","_await$this$_swapProv2","_result$swapCreationI","_result$swapCreationI2","coinUsdtRate","_fiatDecimalsCount","NO_FLOATING_BUT_HAVE_FIXED_PUBLIC_SWAP_OPTION","NO_FIXED_BUT_HAVE_FLOATING_PUBLIC_SWAP_OPTION","fromAmountBigNumber","AMOUNT_LESS_THAN_MIN_SWAPPABLE","AMOUNT_HIGHER_THAN_MAX_SWAPPABLE","createPublicSwap","clientIp","_swapCreationInfo$fro","_swapCreationInfo$toC","_result$fromCurrencyE","_await$this$_swapProv3","_await$this$_swapProv4","_await$this$_swapProv5","_await$this$_swapProv6","fromCoinUsdtRate","toCoinUsdtRate","PUBLIC_SWAP_CREATED_EVENT","toReturn","_savePublicSwapIdLocally","getPublicExistingSwapDetailsAndStatus","getPublicSwapsHistory","_getPublicSwapIdsSavedLocally","saved","ids","getAssetIconUrl","getAssetToUsdtRate","_result$rate","getTokenByContractAddress","addressString","addressLowerCase","getExtraIdNameIfPresentForAsset"],"mappings":"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/D,IAAAA,OAAO,EAAEA,MAAMsoB,WAAU,CAAC,IAAI,CAAA;GAE9BnpB,eAAAA,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKC,SAAS,EAAE0E,GAAC,CAAC,yBAAyB,CAAA;AAAE,GAAA,EAAEwkB,aAAY,CAACE,SAAe,CAC1E,CACJ,CAAC,CAAA;AAEd,CAAC;;ACVD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,QAAQ,GAAGA,CAAC;EACrBC,kBAAkB;EAClBC,oBAAoB;AACpBC,EAAAA,wBAAwB,EAAxBA,yBAAwB,GAAGpL,WAAW,CAACmC,uBAAuB;AAC9DkJ,EAAAA,0BAA0B,EAA1BA,2BAA0B,GAAGrL,WAAW,CAACmC,uBAAuB;EAChEmJ,2B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"}
1
+ {"version":3,"file":"index.modern.js","sources":["../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../src/components/atoms/LoadingDots/LoadingDots.jsx","../src/components/atoms/buttons/Button/Button.jsx","../src/components/atoms/SupportChat/SupportChat.jsx","../src/components/atoms/AssetIcon/AssetIcon.jsx","../src/common/utils/logging/logsStorage.js","../src/common/utils/safeStringify.js","../src/common/utils/logging/logger.js","../src/components/hooks/useCallHandlingErrors.js","../src/constants/atoms/LinkButton/linkButton.jsx","../src/components/atoms/buttons/LinkButton/LinkButton.jsx","../src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx","../src/components/atoms/BackgroundTitle/BackgroundTitle.jsx","../src/constants/atoms/Close/close.jsx","../src/components/atoms/buttons/Close/Close.jsx","../src/assets/wrappedImages/successfulValidationIcon.jsx","../src/assets/wrappedImages/failedValidationIcon.jsx","../src/components/atoms/Validation/Validation.jsx","../src/components/hooks/useReferredState.js","../src/common/errorUtils.js","../src/constants/organisms/dialog/dialog.js","../src/components/organisms/Dialog/Dialog.jsx","../src/constants/organisms/dialog/DialogStep/dialogStep.js","../src/assets/wrappedImages/arrowTosca.jsx","../src/assets/wrappedImages/arrowWhite.jsx","../src/components/organisms/Dialog/DialogStep/DialogStep.jsx","../src/assets/wrappedImages/arrowIcon.jsx","../src/components/atoms/AssetSelection/AssetSelection.jsx","../src/assets/wrappedImages/darkRectangle.jsx","../src/constants/atoms/Tooltip/tooltip.jsx","../src/components/atoms/Tooltip/Tooltip.jsx","../src/components/utils/uiUtils.js","../src/assets/wrappedImages/noticeQuestionIcon.jsx","../src/components/atoms/NoticeIcon/NoticeIcon.jsx","../src/components/utils/textUtils.js","../src/components/atoms/TitleBox/TitleBox.jsx","../src/assets/wrappedImages/walletIcon.jsx","../src/components/utils/inputValueProviders.js","../src/common/fiatCurrenciesService.js","../src/common/amountUtils.js","../src/components/molecules/AmountInput/AmountInput.jsx","../src/components/atoms/Textarea/Textarea.jsx","../src/components/atoms/RateSelector/RateSelector.jsx","../src/components/organisms/SwapForm/SwapForm.jsx","../src/common/adapters/qrUtils.js","../src/components/atoms/QrCode/QrCode.jsx","../src/components/atoms/TwoLinesOfText/LinesOfText.jsx","../src/components/molecules/LineWithIconLink/LineWithIconLink.jsx","../src/assets/wrappedImages/determinedError.jsx","../src/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx","../src/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx","../src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx","../src/assets/wrappedImages/infoIcon.jsx","../src/components/atoms/InformationMessage/InformationMessage.jsx","../src/components/atoms/Input/Input.jsx","../src/constants/globalConstants.jsx","../src/components/molecules/CoinPicker/CoinPicker.jsx","../src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx","../src/components/utils/urlQueryUtils.js","../src/common/models/blockchain.js","../src/common/models/protocol.js","../src/common/models/coin.js","../src/common/utils/cache.js","../src/common/utils/postponeExecution.js","../src/common/adapters/axiosAdapter.js","../src/common/utils/emailAPI.js","../src/robustExteranlApiCallerService/externalApiProvider.js","../src/common/external-apis/apiGroups.js","../src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js","../src/robustExteranlApiCallerService/externalServicesStatsCollector.js","../src/robustExteranlApiCallerService/robustExternalAPICallerService.js","../src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js","../src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js","../src/common/external-apis/ipAddressProviders.js","../src/robustExteranlApiCallerService/cancelProcessing.js","../src/swaps-lib/models/existingSwap.js","../src/swaps-lib/models/existingSwapWithFiatData.js","../src/swaps-lib/models/baseSwapCreationInfo.js","../src/swaps-lib/external-apis/swapProvider.js","../src/swaps-lib/external-apis/swapspaceSwapProvider.js","../src/swaps-lib/utils/swapUtils.js","../src/swaps-lib/services/publicSwapService.js"],"sourcesContent":["/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport styles from \"./LoadingDots.module.scss\";\n\n/**\n * LoadingDots Component - Displays a loading animation with dots.\n * This component allows customization of size, color, margins, and alignment.\n *\n * @component\n * @param {Object} props - The props of the component.\n * @param {('big'|'small'|'extra-small')} [props.size='small'] - Sets the size of the loading dots.\n * @param {boolean} [props.isColored=false] - If true, the dots will be colored, otherwise they will be monochrome.\n * @param {boolean} [props.noMargins=false] - If true, removes the margins around the loading dots.\n * @param {(boolean|'left'|'right')} [props.align=false] - Aligns the loading dots to the left or right if specified, otherwise centered.\n * @returns {React.ReactElement} A React component that renders the loading dots animation.\n */\nexport const LoadingDots = ({ size = \"small\", isColored = false, noMargins = false, align = false }) => {\n return (\n <div\n className={`${styles[\"loading-dots\"]} ${styles[size]} ${noMargins ? ` ${styles[\"no-margins\"]}` : \"\"} ${\n align ? styles[\"align-\" + align] : \"\"\n }`}\n >\n <div className={`${styles.dot} ${isColored ? ` ${styles.colored}` : \"\"}`} />\n <div className={`${styles.dot} ${isColored ? ` ${styles.colored}` : \"\"}`} />\n <div className={`${styles.dot} ${isColored ? ` ${styles.colored}` : \"\"}`} />\n </div>\n );\n};\n\nLoadingDots.propTypes = {\n size: PropTypes.oneOf([\"big\", \"small\", \"extra-small\"]),\n isColored: PropTypes.bool,\n noMargins: PropTypes.bool,\n align: PropTypes.oneOfType([PropTypes.oneOf([\"left\", \"right\"]), PropTypes.bool]),\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport styles from \"./Button.module.scss\";\n\nimport { LoadingDots } from \"../../LoadingDots/LoadingDots.jsx\";\n\n/**\n * Button component - A versatile and customizable button for React applications.\n * It supports various sizes, styles, and functionalities, including loaders, icons, and handling of click events.\n * This component can also be used as a link if \"to\" is provided.\n *\n * @component\n * @param {Object} props\n * @param {('xl'|'lg'|'md'|'sm')} [props.size='xl'] - Sets the size of the button.\n * @param {string} [props.className=''] - An optional custom CSS class name for additional styling.\n * @param {string} [props.mode='transparent'] - Determines the button's visual style.\n * @param {Function} [props.onClick=(resetButtonLoader, event) => {}] - Callback function that triggers on button click.\n * @param {boolean} [props.loader=true] - If true, displays a loader animation on the button when clicked.\n * @param {boolean} [props.loading=false] - Controls the actual display of the loader if `loader` is true.\n * @param {string} [props.to=''] - The path for the button to act as a link.\n * @param {boolean} [props.fullWidthOnMobiles=false] - Expands the button to full width on mobiles.\n * @param {boolean} [props.fullWidthOnTablets=false] - Expands the button to full width on tablets.\n * @param {string} [props.icon=''] - The path to the button's icon.\n * @param {React.ReactNode} [props.content=''] - The text or content displayed inside the button.\n * @param {boolean} [props.isDisabled=false] - Disables the button if true.\n * @param {Function} [props.setClickTrigger=(p) => {}] - Function to programmatically trigger a button click.\n * @param {boolean} [props.isFormSubmittingButton=false] - If true, adds a hidden `<input type=\"submit\">`.\n * @param {boolean} [props.bigIcon=false] - If true, displays a larger icon on the button.\n * @param {boolean} [props.checkmarkOnClick=false] - Shows a checkmark instead of content for a few seconds after click.\n * @param {boolean} [props.propagatePrimaryButtonClick=true] - Propagates the primary button click event if true.\n * @param {boolean} [props.smallPaddingOnSmallMobiles=false] - Enables smaller paddings for extra-small screen sizes.\n * @param {Function} [props.handleError=(func) => func()] - Function to handle errors during button click events.\n * @returns {React.ReactElement}\n */\nexport const Button = ({\n size = \"xl\",\n className = \"\",\n mode = \"transparent\",\n onClick = (resetButtonLoader, event) => {},\n loader = true,\n loading = false,\n to = \"\",\n fullWidthOnMobiles = false,\n fullWidthOnTablets = false,\n icon = \"\",\n content = \"\",\n isDisabled = false,\n setClickTrigger = p => {},\n isFormSubmittingButton = false,\n bigIcon = false,\n checkmarkOnClick = false,\n propagatePrimaryButtonClick = true,\n smallPaddingOnSmallMobiles = false,\n handleError = (func, event) => func(event),\n}) => {\n const [isLoading, setIsLoading] = useState(loading);\n const [isCheckShown, setIsCheckShown] = useState(false);\n const [event, setEvent] = useState(null);\n\n const buttonRef = useRef();\n\n useEffect(() => {\n setClickTrigger(() => buttonRef.current.click());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [buttonRef]);\n\n useEffect(() => {\n if (isLoading) {\n onClick(() => setIsLoading(false), event);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLoading]);\n\n const buttonClick = e => {\n if (isLoading || isDisabled) {\n return false;\n }\n\n if (checkmarkOnClick && !isCheckShown && !loader && !loading) {\n setIsCheckShown(true);\n setTimeout(() => {\n setIsCheckShown(false);\n }, 2000);\n }\n\n if (e?.persist) {\n // Persisting React's SyntheticEvent to be able to use it in any async context\n e.persist();\n }\n\n !propagatePrimaryButtonClick && e.stopPropagation();\n if (loader) {\n setIsLoading(true);\n setEvent(e);\n } else {\n onClick(() => setIsLoading(false), e);\n }\n };\n\n const classNames =\n `${styles.button} ${styles[size]} ${styles[className]} ${styles[mode]}` +\n (fullWidthOnMobiles ? ` ${styles[\"full-width-on-mobiles\"]}` : \"\") +\n (fullWidthOnTablets ? ` ${styles[\"full-width-on-tablets\"]}` : \"\") +\n (isDisabled ? ` ${styles.disable}` : \"\") +\n (smallPaddingOnSmallMobiles ? ` ${styles[\"small-padding-on-small-mobiles\"]}` : \"\");\n\n return (\n <>\n {isFormSubmittingButton ? <input type=\"submit\" hidden /> : null}\n {to ? (\n <a className={classNames} onClick={e => handleError(buttonClick, e)} href={to} ref={buttonRef}>\n {icon ? (\n <div className={styles[\"button-with-icon\"] + (bigIcon ? ` ${styles[\"big-icon\"]}` : \"\")}>\n <img src={icon} alt=\"button icon\" />\n <span className={styles[\"button-with-icon-text\"]}>{content}</span>\n </div>\n ) : (\n content\n )}\n </a>\n ) : (\n <div className={classNames} onClick={e => handleError(buttonClick, e)} ref={buttonRef}>\n <div\n className={`${styles[\"button-primary-dots-wrapper\"]} ${isLoading && loader ? styles.show : \"\"}`}\n >\n {loader && isLoading ? <LoadingDots isColored={mode === \"white\"} /> : null}\n </div>\n <div\n className={`${styles[\"button-success-icon\"]} ${styles[mode]} ${\n isCheckShown ? styles[\"show\"] : \"\"\n }`}\n ></div>\n {icon ? (\n <div\n className={`${styles[\"button-with-icon\"]} ${\n (isLoading && loader) || (checkmarkOnClick && isCheckShown) ? styles[\"hide\"] : \"\"\n } ${bigIcon ? styles[\"big-icon\"] : \"\"}`}\n >\n <img src={icon} alt=\"button icon\" />\n <span className={styles[\"button-with-icon-text\"]}>{content}</span>\n </div>\n ) : (\n <span\n className={`${styles[\"button-text\"]} ${\n (isLoading && loader) || (checkmarkOnClick && isCheckShown) ? styles[\"hide\"] : \"\"\n }`}\n >\n {content}\n </span>\n )}\n </div>\n )}\n </>\n );\n};\n\nButton.propTypes = {\n size: PropTypes.oneOf([\"xl\", \"lg\", \"md\", \"sm\"]),\n className: PropTypes.string,\n mode: PropTypes.oneOf([\n \"transparent\",\n \"white\",\n \"white-flat\",\n \"primary\",\n \"primary-bordered\",\n \"primary-transparent\",\n \"transparent-bordered\",\n \"transparent-without-shadow\",\n ]),\n onClick: PropTypes.func,\n loader: PropTypes.bool,\n loading: PropTypes.bool,\n to: PropTypes.string,\n fullWidthOnMobiles: PropTypes.bool,\n fullWidthOnTablets: PropTypes.bool,\n icon: PropTypes.string,\n content: PropTypes.node,\n isDisabled: PropTypes.bool,\n setClickTrigger: PropTypes.func,\n isFormSubmittingButton: PropTypes.bool,\n bigIcon: PropTypes.bool,\n checkmarkOnClick: PropTypes.bool,\n propagatePrimaryButtonClick: PropTypes.bool,\n smallPaddingOnSmallMobiles: PropTypes.bool,\n handleError: PropTypes.func,\n};\n\nButton.defaultProps = {\n size: \"xl\",\n className: \"\",\n mode: \"transparent\",\n onClick: (resetButtonLoader, event) => {},\n loader: true,\n loading: false,\n to: \"\",\n fullWidthOnMobiles: false,\n fullWidthOnTablets: false,\n icon: \"\",\n content: \"\",\n isDisabled: false,\n setClickTrigger: p => {},\n isFormSubmittingButton: false,\n bigIcon: false,\n checkmarkOnClick: false,\n propagatePrimaryButtonClick: true,\n smallPaddingOnSmallMobiles: false,\n handleError: func => func(),\n};\n","import { useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport const SupportChat = ({ url, websiteToken, welcomeMessage = \"\", locale = \"en\" }) => {\n useEffect(() => {\n window.chatwootSettings = {\n position: \"right\",\n type: \"standard\",\n launcherTitle: welcomeMessage,\n locale: locale,\n };\n (function (d, t) {\n var BASE_URL = url;\n var g = d.createElement(t),\n s = d.getElementsByTagName(t)[0];\n g.src = BASE_URL + \"/packs/js/sdk.js\";\n g.defer = true;\n g.async = true;\n s.parentNode.insertBefore(g, s);\n g.onload = function () {\n window.chatwootSDK.run({\n websiteToken: websiteToken,\n baseUrl: BASE_URL,\n });\n };\n })(document, \"script\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return null;\n};\n\nSupportChat.propTypes = {\n url: PropTypes.string.isRequired,\n websiteToken: PropTypes.string.isRequired,\n welcomeMessage: PropTypes.string,\n locale: PropTypes.string,\n};\n\nSupportChat.defaultProps = {\n welcomeMessage: \"\",\n locale: \"en\",\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./asset-icon.module.scss\";\n\n/**\n * AssetIcon component to display an icon for an asset.\n *\n * @component\n * @param {string} assetIconSrc - The source URL for the asset icon.\n * @param {string} [assetIconProtocolSrc=null] - The source URL for the asset icon that is base for this asset (e.g. ETH for USDT ERC20).\n * @param {string} [fallbackSrc=null] - The fallback source URL in case the main source fails to load.\n * @param {boolean} [small=false] - Whether to display a smaller version of the icon.\n */\nexport const AssetIcon = ({ assetIconSrc, assetIconProtocolSrc = null, fallbackSrc = null, small = false }) => {\n const handleFailedLoad = e => {\n e.target.onerror = null;\n e.target.src = fallbackSrc;\n };\n\n return (\n <div className={s[\"asset-icon\"] + (small ? \" \" + s[\"small\"] : \"\")}>\n <img\n src={assetIconSrc}\n className={s[\"asset-icon-primary\"] + (small ? \" \" + s[\"small\"] : \"\")}\n alt={\" \"}\n onError={handleFailedLoad}\n />\n {assetIconProtocolSrc ? (\n <img\n src={assetIconProtocolSrc}\n className={s[\"asset-icon-secondary\"] + (small ? \" \" + s[\"small\"] : \"\")}\n alt={\" \"}\n onError={handleFailedLoad}\n />\n ) : (\n \"\"\n )}\n </div>\n );\n};\n\nAssetIcon.propTypes = {\n assetIconSrc: PropTypes.string.isRequired,\n assetIconProtocolSrc: PropTypes.string,\n fallbackSrc: PropTypes.string,\n small: PropTypes.bool,\n};\n\nAssetIcon.defaultProps = {\n assetIconProtocolSrc: null,\n fallbackSrc: null,\n small: false,\n};\n","export class LogsStorage {\n static _inMemoryStorage = [];\n static _logsStorageId = \"clietnLogs_j203fj2D0n-d1\";\n\n static saveLog(log) {\n this._inMemoryStorage.push(log);\n }\n\n static getInMemoryLogs() {\n return this._inMemoryStorage;\n }\n\n static getAllLogs() {\n let storedLogs = \"\";\n if (typeof window !== \"undefined\") {\n storedLogs = localStorage.getItem(this._logsStorageId);\n }\n return `${storedLogs}\\n${this._inMemoryStorage.join(\"\\n\")}`;\n }\n\n /**\n * @param logger {Logger}\n */\n static saveToTheDisk(logger) {\n try {\n const MAX_LOCAL_STORAGE_VOLUME_BYTES = 5 * 1024 * 1024;\n const MAX_LOGS_STORAGE_BYTES = MAX_LOCAL_STORAGE_VOLUME_BYTES * 0.65;\n if (typeof window !== \"undefined\") {\n const existingLogs = localStorage.getItem(this._logsStorageId);\n const logsString = `${existingLogs}\\n${this._inMemoryStorage.join(\"\\n\")}`;\n const lettersCountToRemove = logsString.length - Math.round(MAX_LOGS_STORAGE_BYTES / 2);\n if (lettersCountToRemove > 0) {\n localStorage.setItem(\n this._logsStorageId,\n logsString.slice(lettersCountToRemove, logsString.length)\n );\n } else {\n localStorage.setItem(this._logsStorageId, logsString);\n }\n this._inMemoryStorage = [];\n }\n } catch (e) {\n logger?.logError(e, \"saveToTheDisk\", \"Failed to save logs to disk\");\n }\n }\n\n static removeAllClientLogs() {\n if (typeof window !== \"undefined\") {\n if (localStorage.getItem(\"doNotRemoveClientLogsWhenSignedOut\") !== \"true\") {\n localStorage.removeItem(this._logsStorageId);\n }\n }\n this._inMemoryStorage = [];\n }\n\n static setDoNotRemoveClientLogsWhenSignedOut(value) {\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"doNotRemoveClientLogsWhenSignedOut\", value);\n }\n }\n}\n","/**\n * Stringify given object by use of JSON.stringify but handles circular structures and \"response\", \"request\" properties\n * to avoid stringing redundant data when printing errors containing request/response objects.\n *\n * @param object - object to be stringed\n * @param indent - custom indentation\n * @return {string} - stringed object\n */\nexport function safeStringify(object, indent = 2) {\n let cache = [];\n if (\n typeof object === \"string\" ||\n typeof object === \"function\" ||\n typeof object === \"number\" ||\n typeof object === \"undefined\" ||\n typeof object === \"boolean\"\n ) {\n return String(object);\n }\n const retVal = JSON.stringify(\n object,\n (key, value) => {\n if (key.toLowerCase().includes(\"request\")) {\n return JSON.stringify({\n body: value?.body,\n query: value?.query,\n headers: value?.headers,\n });\n }\n\n if (key.toLowerCase().includes(\"response\")) {\n return JSON.stringify({\n statusText: value?.statusText,\n status: value?.status,\n data: value?.data,\n headers: value?.headers,\n });\n }\n\n return typeof value === \"object\" && value !== null\n ? cache.includes(value)\n ? \"duplicated reference\" // Duplicated references were found, discarding this key\n : cache.push(value) && value // Store value in our collection\n : value;\n },\n indent\n );\n cache = null;\n return retVal;\n}\n","import { LogsStorage } from \"./logsStorage.js\";\nimport { safeStringify } from \"../safeStringify.js\";\n\nexport class Logger {\n /**\n * Logs to client logs storage.\n *\n * WARNING! this method should ce used carefully for critical logging as we have the restriction for storing logs\n * on client side as we store them inside the local storage. Please see details inside storage.js\n * @param logString {string} log string\n * @param source {string} source of the log entry\n */\n static log(logString, source) {\n const timestamp = new Date().toISOString();\n LogsStorage.saveLog(`${timestamp}|${source}:${logString}`);\n }\n\n static logError(e, settingFunction, additionalMessage = \"\", onlyToConsole = false) {\n let message = `\\nFunction call ${settingFunction ?? \"\"} failed. Error message: ${\n e?.message\n }. ${additionalMessage} `;\n message +=\n `${e?.errorDescription ?? \"\"}${e?.howToFix ?? \"\"}` +\n (e?.httpStatus === 403 ? \"Authentication has expired or was lost. \" : \"\");\n\n if (e?.response) {\n try {\n const responseData = safeStringify({ response: e.response });\n responseData && (message += `\\n${responseData}. `);\n } catch (e) {}\n }\n\n const finalErrorText = message + \". \" + safeStringify(e);\n // eslint-disable-next-line no-console\n console.error(finalErrorText, e);\n\n if (!onlyToConsole) {\n this.log(finalErrorText, \"logError\");\n }\n }\n}\n","import { useCallback, useState } from \"react\";\n\nimport { Logger } from \"../../common/utils/logging/logger.js\";\n\nexport function useCallHandlingErrors() {\n const [, setState] = useState();\n return useCallback(\n async (functionToBeCalled, event) => {\n try {\n await functionToBeCalled(event);\n } catch (error) {\n Logger.logError(error, functionToBeCalled?.name || \"errorBoundaryTrigger\", \"Caught by ErrorBoundary\");\n // Triggering ErrorBoundary\n setState(() => {\n throw error;\n });\n }\n },\n\n []\n );\n}\n","export const ICON_ROTATE_OPTIONS = {\n rotate0: \"0deg\",\n rotate90: \"90deg\",\n rotate180: \"180deg\",\n rotate270: \"270deg\",\n};\n","import React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { useCallHandlingErrors } from \"../../../hooks/useCallHandlingErrors\";\nimport { ICON_ROTATE_OPTIONS } from \"../../../../constants/atoms/LinkButton/linkButton\";\n\nimport s from \"./link-button.module.scss\";\nimport { LoadingDots } from \"../../LoadingDots/LoadingDots\";\n\n/**\n * LinkButton renders a clickable button which can optionally display an icon and loading animation.\n * It can also be styled to be colored or disabled. This button supports rotating the icon according to specified degrees.\n *\n * @component\n * @param {Object} props - Properties passed down to the component.\n * @param {Function} props.onClick - Callback function triggered on button click. It should handle any post-click logic like resetting loading state.\n * @param {boolean} props.isDisabled - If true, the button will be disabled and non-interactable.\n * @param {boolean} props.isLoadable - If true, the button will display a loading indicator upon being clicked.\n * @param {string} props.content - Text content displayed on the button.\n * @param {boolean} props.isColored - If true, applies additional styling to the button.\n * @param {string} props.icon - URL of an icon image to be displayed on the button.\n * @param {string} props.iconRotate - Rotation angle for the icon. Valid values are defined in `ICON_ROTATE_OPTIONS`.\n * @param {Object} props.IconComponent - Icon component, if SVG is imported directly.\n *\n * @returns {JSX.Element} A React component that renders a clickable and optionally loadable and icon-displaying button.\n */\nexport const LinkButton = ({\n onClick = resetButtonLoader => {},\n isDisabled = false,\n isLoadable = false,\n content = \"\",\n isColored = true,\n icon,\n iconRotate,\n IconComponent,\n}) => {\n const callHandlingErrors = useCallHandlingErrors();\n\n const [isLoading, setIsLoading] = useState(false);\n const [processedIconRotation, setProcessedIconRotation] = useState(null);\n\n const handleClick = () => {\n callHandlingErrors(() => {\n if (!isDisabled) {\n if (isLoadable) {\n setIsLoading(true);\n }\n // TODO: [bug, moderate] Click can be called when there isLoading=true task_id=a15979a4ca2042b29dfd1d128a16c281\n onClick(() => setIsLoading(false));\n }\n });\n };\n\n useEffect(() => {\n if (iconRotate && Object.keys(ICON_ROTATE_OPTIONS).find(key => ICON_ROTATE_OPTIONS[key] === iconRotate))\n setProcessedIconRotation(iconRotate);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [iconRotate]);\n\n return isLoading ? (\n <LoadingDots isColored={true} />\n ) : (\n <div\n className={\n s[\"link-button\"] +\n ` ${\n processedIconRotation && processedIconRotation !== ICON_ROTATE_OPTIONS.rotate0\n ? \" \" + s[\"icon-rotate-\" + processedIconRotation]\n : \"\"\n } ${isDisabled ? \" \" + s[\"disabled\"] : \"\"}`\n }\n onClick={handleClick}\n >\n {icon ? <img src={icon} alt=\"link button alt\" /> : null}\n {IconComponent ? <IconComponent /> : null}\n <p\n className={\n s[\"link-button-text\"] + ` ${isColored ? s[\"colored\"] : \"\"} ${isDisabled ? s[\"disabled\"] : \"\"}`\n }\n >\n {content}\n </p>\n </div>\n );\n};\n\nLinkButton.propTypes = {\n onClick: PropTypes.func,\n isDisabled: PropTypes.bool,\n isLoadable: PropTypes.bool,\n content: PropTypes.string,\n icon: PropTypes.string,\n isColored: PropTypes.bool,\n iconRotate: PropTypes.oneOf(Object.values(ICON_ROTATE_OPTIONS)),\n IconComponent: PropTypes.elementType,\n};\n\nLinkButton.defaultProps = {\n onClick: resetButtonLoader => {},\n isDisabled: false,\n isLoadable: false,\n content: \"\",\n icon: undefined,\n isColored: true,\n iconRotate: ICON_ROTATE_OPTIONS.rotate0,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { useCallHandlingErrors } from \"../../../hooks/useCallHandlingErrors\";\n\nimport s from \"./dialog-buttons.module.scss\";\nimport { LinkButton } from \"../../../atoms/buttons/LinkButton/LinkButton\";\nimport { Button } from \"../../../atoms/buttons/Button/Button\";\n\n/**\n * Renders a dialog component with configurable primary and secondary buttons.\n * This component allows for a variety of configurations including different button modes,\n * sizes, and actions. It's designed to handle user interactions effectively with error management.\n *\n * @component\n * @param {Object} props - Props for configuring the DialogButtons.\n * @param {string} [props.primaryButtonTitle] - The text to display on the primary button.\n * @param {Function} props.primaryButtonOnClick - Function to call when the primary button is clicked.\n * @param {boolean} [props.primaryButtonLoader=false] - Whether to show a loader on the primary button.\n * @param {string} [props.primaryButtonTo] - The URL or route the primary button should navigate to.\n * @param {Function} [props.primaryButtonSetClickTrigger] - Additional click handling logic for the primary button.\n * @param {string} [props.secondaryButtonTitle] - The text to display on the secondary button.\n * @param {Function} props.secondaryButtonOnClick - Function to call when the secondary button is clicked.\n * @param {string} [props.secondaryButtonTo] - The URL or route the secondary button should navigate to.\n * @param {boolean} [props.secondaryButtonBig=false] - Makes the secondary button larger for visual emphasis.\n * @param {boolean} [props.withBackgroundImage=false] - Indicates if the button should adjust its styling for background images.\n * @param {boolean} [props.hideOnMobiles=false] - Whether to hide the buttons on mobile devices for responsive designs.\n * @returns {React.Element} The rendered component with two buttons based on provided props.\n */\nexport const DialogButtons = ({\n primaryButtonTitle,\n primaryButtonOnClick,\n primaryButtonLoader = false,\n primaryButtonTo,\n primaryButtonSetClickTrigger,\n secondaryButtonTitle,\n secondaryButtonOnClick,\n secondaryButtonTo,\n secondaryButtonBig = false,\n withBackgroundImage = false,\n hideOnMobiles = false,\n}) => {\n const callHandlingErrors = useCallHandlingErrors();\n\n return (\n <>\n <div\n className={\n s[\"dialog-buttons\"] +\n (hideOnMobiles ? \" \" + s[\"hide-on-mobiles\"] : \"\") +\n (secondaryButtonBig ? \" \" + s[\"space-between-layout\"] : \"\")\n }\n >\n {secondaryButtonTitle ? (\n secondaryButtonTo ? (\n <Button\n mode=\"primary-transparent\"\n to={secondaryButtonTo}\n size=\"lg\"\n loader={false}\n fullWidthOnMobiles\n content={secondaryButtonTitle}\n onClick={secondaryButtonOnClick}\n handleError={callHandlingErrors}\n />\n ) : secondaryButtonBig ? (\n <Button\n mode=\"transparent\"\n size=\"lg\"\n loader={false}\n fullWidthOnMobiles\n content={secondaryButtonTitle}\n onClick={secondaryButtonOnClick}\n handleError={callHandlingErrors}\n />\n ) : (\n <LinkButton\n onClick={secondaryButtonOnClick}\n content={secondaryButtonTitle}\n isColored={!withBackgroundImage}\n />\n )\n ) : null}\n\n {primaryButtonTitle ? (\n <Button\n mode=\"primary\"\n size=\"lg\"\n onClick={primaryButtonOnClick}\n loader={primaryButtonLoader}\n to={primaryButtonTo}\n fullWidthOnMobiles\n content={primaryButtonTitle}\n setClickTrigger={primaryButtonSetClickTrigger}\n handleError={callHandlingErrors}\n />\n ) : null}\n </div>\n </>\n );\n};\n\nDialogButtons.propTypes = {\n primaryButtonTitle: PropTypes.string,\n primaryButtonOnClick: PropTypes.func,\n primaryButtonLoader: PropTypes.bool,\n primaryButtonTo: PropTypes.string,\n primaryButtonSetClickTrigger: PropTypes.func,\n secondaryButtonTitle: PropTypes.string,\n secondaryButtonOnClick: PropTypes.func,\n secondaryButtonTo: PropTypes.string,\n secondaryButtonBig: PropTypes.bool,\n withBackgroundImage: PropTypes.bool,\n hideOnMobiles: PropTypes.bool,\n};\n\nDialogButtons.defaultProps = {\n primaryButtonLoader: false,\n secondaryButtonBig: false,\n withBackgroundImage: false,\n hideOnMobiles: false,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./background-title.module.scss\";\n\n/**\n * Component for displaying a title with a fancy background text, which\n * is semi-visible. This component is designed to work with forms that\n * have a white background, and it allows for a configuration of margins.\n *\n * @param {Object} props - Component props\n * @param {string} props.text - Text to be displayed as the title\n * @param {boolean} [props.smallMargins=false] - Whether to use smaller margins around the title\n */\nexport const BackgroundTitle = ({ text, smallMargins = false }) => {\n return (\n <div className={s[\"background-title\"]}>\n <div className={s[\"background-title-wrapper\"] + (smallMargins ? \" \" + s[\"small-margins\"] : \"\")}>\n <div className={s[\"background-title-wrapper-text\"] + (smallMargins ? \" \" + s[\"small-margins\"] : \"\")}>\n {text}\n </div>\n </div>\n </div>\n );\n};\n\nBackgroundTitle.propTypes = {\n text: PropTypes.string.isRequired,\n smallMargins: PropTypes.bool,\n};\n\nBackgroundTitle.defaultProps = {\n smallMargins: false,\n};\n","export const CLOSE_COLORS = {\n WHITE: \"white\",\n DARK: \"dark\",\n DARK_INVERT: \"dark-invert\",\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./close.module.scss\";\n\nimport { useCallHandlingErrors } from \"../../../hooks/useCallHandlingErrors\";\nimport { CLOSE_COLORS } from \"../../../../constants/atoms/Close/close\";\n\n/**\n * A component for rendering a close icon that handles errors on click.\n * This component uses an SVG to render the icon and allows customization\n * through props for color, size, and the click event handling.\n *\n * @param {Object} props - The properties passed to the component.\n * @param {string} props.color - The color theme of the close icon.\n * Should be one of the properties of CLOSE_COLORS.\n * @param {Function} props.onClick - The function to call when the icon is clicked.\n * @param {boolean} props.large - Whether the icon should be displayed in a larger size.\n */\nexport const Close = ({ color = CLOSE_COLORS.WHITE, onClick = () => {}, large = false }) => {\n const callHandlingErrors = useCallHandlingErrors();\n\n return (\n <svg\n className={s[\"close\"] + \" \" + s[color] + (large ? \" \" + s[\"large\"] : \"\")}\n onClick={e => callHandlingErrors(onClick, e)}\n style={{ cursor: \"pointer\" }}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 50 50`}\n x=\"0px\"\n y=\"0px\"\n >\n <path\n d=\"M28.228,23.986L47.092,5.122c1.172-1.171,1.172-3.071,0-4.242c-1.172-1.172-3.07-1.172-4.242,0L23.986,19.744L5.121,0.88\n c-1.172-1.172-3.07-1.172-4.242,0c-1.172,1.171-1.172,3.071,0,4.242l18.865,18.864L0.879,42.85c-1.172,1.171-1.172,3.071,0,4.242\n C1.465,47.677,2.233,47.97,3,47.97s1.535-0.293,2.121-0.879l18.865-18.864L42.85,47.091c0.586,0.586,1.354,0.879,2.121,0.879\n s1.535-0.293,2.121-0.879c1.172-1.171,1.172-3.071,0-4.242L28.228,23.986z\"\n />\n </svg>\n );\n};\n\nClose.propTypes = {\n color: PropTypes.oneOf(Object.values(CLOSE_COLORS)),\n onClick: PropTypes.func,\n large: PropTypes.bool,\n};\n\nClose.defaultProps = {\n color: CLOSE_COLORS.WHITE,\n onClick: () => {},\n large: false,\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"27\" height=\"27\" viewBox=\"0 0 27 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect opacity=\"0.8\" x=\"1.5\" y=\"1.5\" width=\"24\" height=\"24\" rx=\"12\" fill=\"#DAF1FE\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M11.8703 15.7837L9.64348 13.5569C9.30357 13.217 8.75246 13.217 8.41255 13.5569C8.07264 13.8968 8.07264 14.4479 8.41255 14.7878L11.2351 17.6104C11.5672 17.9425 12.103 17.9512 12.4457 17.6301L18.4492 12.0049C18.8 11.6762 18.8179 11.1254 18.4892 10.7746C18.1605 10.4238 17.6097 10.4059 17.2589 10.7346L11.8703 15.7837Z\"\n fill=\"url(#paint0_linear)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear\"\n x1=\"19.8333\"\n y1=\"18.9098\"\n x2=\"15.586\"\n y2=\"7.2736\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#55E7D9\" />\n <stop offset=\"1\" stop-color=\"#54B4FF\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"27\" height=\"27\" viewBox=\"0 0 27 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect opacity=\"0.8\" x=\"1.5\" y=\"1.5\" width=\"24\" height=\"24\" rx=\"12\" fill=\"#DAF1FE\" />\n <path\n d=\"M12.3259 10.5855C12.2575 9.8896 12.8063 9.28745 13.5055 9.29121C14.2008 9.29495 14.7418 9.8964 14.6722 10.5881L14.1937 15.3431C14.1575 15.7026 13.855 15.9762 13.4937 15.9762C13.1319 15.9762 12.829 15.7017 12.7936 15.3415L12.3259 10.5855Z\"\n fill=\"url(#paint0_linear)\"\n />\n <path\n d=\"M13.514 17.1182C14.1325 17.1182 14.634 17.6196 14.634 18.2382C14.634 18.8567 14.1325 19.3582 13.514 19.3582H13.486C12.8674 19.3582 12.366 18.8567 12.366 18.2382C12.366 17.6196 12.8674 17.1182 13.486 17.1182H13.514Z\"\n fill=\"url(#paint1_linear)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear\"\n x1=\"17.3456\"\n y1=\"14.0483\"\n x2=\"11.6522\"\n y2=\"12.8896\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#55E7D9\" />\n <stop offset=\"1\" stop-color=\"#54B4FF\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear\"\n x1=\"17.3456\"\n y1=\"14.2383\"\n x2=\"11.6522\"\n y2=\"13.0796\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#55E7D9\" />\n <stop offset=\"1\" stop-color=\"#54B4FF\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./validation.module.scss\";\nimport SuccessfulValidationIcon from \"../../../assets/wrappedImages/successfulValidationIcon\";\nimport FailedValidationIcon from \"../../../assets/wrappedImages/failedValidationIcon\";\n\n/**\n * Simple validation message with an icon.\n * It shows either a success or failure icon based on the isSuccessAlert prop.\n *\n * @param {Object} props - The component props.\n * @param {string} props.text - The validation message text to display.\n * @param {boolean} props.isSuccessAlert - Determines if the displayed alert is for a success (true) or failure (false).\n */\nexport const Validation = ({ text = \"\", isSuccessAlert }) => {\n return (\n <div className={s[\"validation\"]}>\n <div>\n {isSuccessAlert ? (\n // <img src={successfulValidationIcon} alt=\"validation icon\" />\n <SuccessfulValidationIcon />\n ) : (\n // <img src={failedValidationIcon} alt=\"validation icon\" />\n <FailedValidationIcon />\n )}\n </div>\n <span className={s[\"validation-text\"]}>{text}</span>\n </div>\n );\n};\n\nValidation.propTypes = {\n text: PropTypes.string,\n isSuccessAlert: PropTypes.bool.isRequired,\n};\n\nValidation.defaultProps = {\n text: \"\",\n isSuccessAlert: false,\n};\n","import React from \"react\";\n\n/**\n * Adds reference to standard state variable. It is helpful to be able to use state variable value inside\n * event handlers and other callbacks without the need to call setState(prev => { value = prev; return prev; }).\n *\n * @param initialValue {any} to be passed to useState\n * @return {[React.Ref, function]} reference to state variable and its setter\n */\nexport function useReferredState(initialValue) {\n const [state, setState] = React.useState(initialValue);\n const reference = React.useRef(state);\n\n const setReferredState = value => {\n if (value && {}.toString.call(value) === \"[object Function]\") {\n value = value(reference.current);\n }\n\n reference.current = value;\n setState(value);\n };\n\n return [reference, setReferredState];\n}\n","import { Logger } from \"./utils/logging/logger.js\";\nimport { safeStringify } from \"./utils/safeStringify.js\";\n\n/**\n * This function improves the passed error object (its message) by adding the passed function name\n * and additional message to it.\n * This is useful as Javascript doesn't guarantee the stack-traces, so we should manually add these details to errors\n * to be able to troubleshoot.\n *\n * @param e {Error}\n * @param settingFunction {string}\n * @param [additionalMessage=\"\"] {string|undefined}\n * @throws {Error} always rethrows the original passed error but with an improved message\n */\nexport function improveAndRethrow(e, settingFunction, additionalMessage = \"\") {\n const message = improvedErrorMessage(e, settingFunction, additionalMessage);\n if (e) {\n e.message = message;\n throw e; // to preserve existing stacktrace if present\n }\n throw new Error(message);\n}\n\nfunction improvedErrorMessage(e, settingFunction, additionalMessage) {\n let message = `\\nFunction call ${settingFunction ?? \"\"} failed. `;\n e && e.message && (message += `Error message: ${e.message}. `);\n additionalMessage && (message += `${additionalMessage} `);\n\n return message;\n}\n\nexport function logErrorOrOutputToConsole(e) {\n try {\n // TODO: [dev] remove this after few weeks of testing output in real life\n // eslint-disable-next-line no-console\n console.log(\"BEFORE SAFE\", e);\n Logger.log(\"logErrorOrOutputToConsole\", safeStringify(e));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\"logErrorOrOutputToConsole\", e);\n }\n}\n","// If changed - update the prop configuration in the stories and related components.\nexport const DIALOG_SIZES = {\n small: {\n width: \"550px\",\n height: \"650px\",\n },\n regular: {\n width: \"600px\",\n height: \"650px\",\n },\n large: {\n width: \"700px\",\n height: \"650px\",\n },\n largePlus: {\n width: \"750px\",\n height: \"650px\",\n },\n largePlusPlus: {\n width: \"800px\",\n height: \"650px\",\n },\n extraLarge: {\n width: \"1000px\",\n height: \"650px\",\n },\n};\n\nexport const DIALOG_TRANSITION_STEP_DURATION = 200;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { CSSTransition } from \"react-transition-group\";\nimport AnimateHeight from \"react-animate-height\";\nimport ResizeObserver from \"resize-observer-polyfill\";\nimport { disableBodyScroll, enableBodyScroll, clearAllBodyScrollLocks } from \"body-scroll-lock\";\nimport animateScrollTo from \"animated-scroll-to\";\n\nimport { useReferredState } from \"../../hooks/useReferredState\";\nimport { logErrorOrOutputToConsole } from \"../../../common/errorUtils\";\nimport { DIALOG_TRANSITION_STEP_DURATION, DIALOG_SIZES } from \"../../../constants/organisms/dialog/dialog\";\n\nimport s from \"./dialog.module.scss\";\nimport { Close } from \"../../atoms/buttons/Close/Close\";\nimport { DialogButtons } from \"./DialogButtons/DialogButtons\";\n\n/**\n * Flexible modal window component with support for multiple steps. Can be used as an inline component and inserted in regular layouts. Only <DialogStep> components can be passed as children.\n *\n * @component\n * @param {Object} props - Component props.\n * @param {boolean} props.showDialog - Step name, specified on the root dialog level, used as an ID for dialog navigation.\n * @param {string} props.onClose - Handler for when the dialog is closed.\n * @param {string} props.initControls - State-setting function to initialize the dialog-to-step connection.\n * @param {string} props.children - Content of the dialog window, supports only dialog step components.\n * @param {Coin} props.width - Width in pixels, formatted as \"1000px\" and passed a string. Values should be used from constants.\n * @param {string} props.dispatchDialogOpened - Dispatch upon the dialog closure.\n * @param {string} props.dispatchDialogClosed - Dispatch upon the dialog opening.\n * @param {boolean} props.inline - If false or not set, dialog will be opened as a modal window above the UI. If true, inline mode will be used, making the dialog a regular block, that can be placed inside a regular layout. Default: false.\n * @returns {JSX.Element} React component\n */\nexport const Dialog = ({\n showDialog = false,\n onClose = () => {},\n initControls = null,\n children = [],\n width = \"\",\n dispatchDialogOpened = () => {},\n dispatchDialogClosed = () => {},\n inline = false,\n}) => {\n const buttonsConfigurationDefault = {\n primaryButtonTitle: null,\n primaryButtonOnClick: null,\n primaryButtonLoader: false,\n primaryButtonTo: null,\n primaryButtonSetClickTrigger: () => {},\n secondaryButtonTitle: null,\n secondaryButtonOnClick: null,\n secondaryButtonTo: null,\n fixedButtonsEnabled: false,\n };\n\n const [showDialogProcessed, setShowDialogProcessed] = useState(false);\n const [currentStep, setCurrentStep] = useState(0);\n const [steps, setSteps] = useState(null);\n const [dialogConfiguration, updateDialogConfiguration] = useState({\n cornerBackButtonTitle: \"\",\n customWidth: width !== \"\" ? width : DIALOG_SIZES.small.width,\n });\n const [animationConfiguration, updateAnimationConfiguration] = useState({\n animateHeightDelay: DIALOG_TRANSITION_STEP_DURATION * 2,\n animateHeightTransitionSpeed: DIALOG_TRANSITION_STEP_DURATION,\n animateHeightTransitionEnabled: false,\n wrapperWidthAnimationEnabled: false,\n currentStepAnimationEnabled: false,\n cornerBackButtonAnimationEnabled: false,\n triggerAnimationFinishedDispatcher: false,\n dialogContainerOverflowDisabled: false,\n hideMobileBottomButtonSection: false,\n });\n const [stepAnimationFinishedTrigger, setStepAnimationFinishedTrigger] = useState(0);\n const [dialogVerticalHeight, setDialogVerticalHeight] = useState(300);\n const [currentStepRef, setCurrentStepRef] = useState({});\n const [dimensions, setDimensions] = useState({ width: 0, height: 0 });\n const [buttonsConfiguration, updateButtonsConfigurationState] = useState(buttonsConfigurationDefault);\n const [buttonControllingStep, updateButtonControllingStep] = useReferredState(\"\");\n const [isMultiStep, setIsMultiStep] = useState(false);\n\n const dialogWrapperRef = useRef();\n const dialogRef = useRef();\n const scrollableRef = useRef();\n const resizeObserverRef = useRef(null);\n\n const updateButtonsConfiguration = (newConfiguration, stepName) => {\n if (buttonControllingStep.current === stepName || buttonControllingStep.current === \"\")\n updateButtonsConfigurationState(newConfiguration);\n };\n\n useEffect(() => {\n if (showDialog) disableAnimation();\n setShowDialogProcessed(showDialog);\n showDialog ? dispatchDialogOpened() : dispatchDialogClosed();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showDialog]);\n\n const showCornerButtonForStep = (stepName, stepButtonShowParam) => {\n if (stepName !== \"\") {\n let stepNameId = steps.findIndex(step => step.name === stepName);\n return stepButtonShowParam !== null && typeof stepButtonShowParam === \"boolean\"\n ? stepButtonShowParam\n : stepNameId > steps.findIndex(step => step.hidden === false);\n } else {\n return false;\n }\n };\n\n const nextStep = (animationControlEnabled = true) => {\n const nextStep = steps.find((step, index) => index > currentStep && step.hidden === false);\n if (nextStep) {\n goToStep(nextStep.name, animationControlEnabled);\n return true;\n } else {\n return false;\n }\n };\n\n const previousStep = (animationControlEnabled = true) => {\n const prevSteps = steps\n .map((step, index) => {\n return index < currentStep && step.hidden === false ? step.name : undefined;\n })\n .filter(item => typeof item !== \"undefined\");\n\n if (prevSteps.length > 0) {\n goToStep(prevSteps[prevSteps.length - 1], animationControlEnabled);\n return true;\n } else {\n return false;\n }\n };\n\n const getStepClass = stepName => {\n if (steps.length > 1) {\n let stepNameId = steps.findIndex(step => step.name === stepName);\n let stepClass = currentStep > stepNameId ? \"prev\" : currentStep === stepNameId ? \"current\" : \"next\";\n return stepClass;\n } else {\n return \"current\";\n }\n };\n\n const isCurrentStep = stepName => {\n return steps[currentStep].name === stepName;\n };\n\n const toFirstStep = (animationControlEnabled = true) => {\n if (animationControlEnabled) enableAnimation();\n setCurrentStep(steps.findIndex(step => step.hidden === false));\n };\n\n const goToStep = (stepName, animationControlEnabled = true) => {\n if (animationControlEnabled) enableAnimation();\n try {\n let stepNameId = steps.findIndex(step => step.name === stepName);\n setCurrentStep(stepNameId);\n } catch (e) {\n logErrorOrOutputToConsole(e);\n }\n };\n\n const provideCurrentStepRef = ref => {\n setCurrentStepRef(ref);\n };\n\n const disableAnimation = (dispatch = false) => {\n updateAnimationConfiguration(prev => {\n return {\n ...prev,\n animateHeightTransitionEnabled: false,\n wrapperWidthAnimationEnabled: false,\n currentStepAnimationEnabled: false,\n cornerBackButtonAnimationEnabled: false,\n dialogContainerOverflowDisabled: false,\n hideMobileBottomButtonSection: false,\n };\n });\n if (dispatch) {\n updateAnimationConfiguration(prev => {\n return {\n ...prev,\n triggerAnimationFinishedDispatcher: true,\n };\n });\n }\n };\n\n useEffect(() => {\n if (animationConfiguration.triggerAnimationFinishedDispatcher) {\n setStepAnimationFinishedTrigger(prev => prev + 1);\n updateAnimationConfiguration(prev => {\n return {\n ...prev,\n triggerAnimationFinishedDispatcher: false,\n };\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationConfiguration]);\n\n const enableAnimation = () => {\n updateAnimationConfiguration(prev => {\n return {\n ...prev,\n animateHeightTransitionEnabled: true,\n wrapperWidthAnimationEnabled: true,\n currentStepAnimationEnabled: true,\n cornerBackButtonAnimationEnabled: true,\n dialogContainerOverflowDisabled: true,\n hideMobileBottomButtonSection: true,\n };\n });\n };\n\n const scrollDialogToTop = () => {\n animateScrollTo(0, {\n elementToScroll: dialogRef?.current,\n minDuration: DIALOG_TRANSITION_STEP_DURATION,\n maxDuration: DIALOG_TRANSITION_STEP_DURATION,\n });\n animateScrollTo(0, {\n elementToScroll: scrollableRef?.current,\n minDuration: DIALOG_TRANSITION_STEP_DURATION,\n maxDuration: DIALOG_TRANSITION_STEP_DURATION,\n });\n };\n\n const clearButtonsConfiguration = () => {\n updateButtonsConfigurationState(buttonsConfigurationDefault);\n };\n\n useEffect(() => {\n initControls &&\n initControls(prev => {\n return {\n ...prev,\n stepAnimationFinishedTrigger: stepAnimationFinishedTrigger,\n };\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stepAnimationFinishedTrigger]);\n\n useEffect(() => {\n initControls &&\n initControls(prev => {\n return {\n ...prev,\n animationConfiguration: animationConfiguration,\n };\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationConfiguration]);\n\n useEffect(() => {\n if (currentStepRef.current) {\n resizeObserverRef.current = new ResizeObserver((entries = []) => {\n entries.forEach(entry => {\n const { width, height } = entry.contentRect;\n setDimensions({ width, height });\n });\n });\n if (currentStepRef.current) resizeObserverRef.current.observe(currentStepRef.current);\n return () => {\n if (resizeObserverRef.current) resizeObserverRef.current.disconnect();\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentStepRef]);\n\n useEffect(() => {\n setDialogVerticalHeight(prev => (prev !== 0 && dimensions.height === 0 ? prev : dimensions.height));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dimensions]);\n\n useEffect(() => {\n const childrenFormatted = children.length > 1 ? children : [children];\n\n let stepsArr = childrenFormatted.map(child => {\n return {\n name: child.props.stepName,\n hidden: !!child.props.hidden,\n };\n });\n setSteps(stepsArr);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setIsMultiStep(typeof initControls === \"function\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initControls]);\n\n useEffect(() => {\n if (steps)\n initControls &&\n initControls({\n nextStep: nextStep,\n previousStep: previousStep,\n currentStep: currentStep,\n isCurrentStep: isCurrentStep,\n getStepClass: getStepClass,\n updateDialogConfiguration: updateDialogConfiguration,\n toFirstStep: toFirstStep,\n goToStep: goToStep,\n provideCurrentStepRef: provideCurrentStepRef,\n animationConfiguration: animationConfiguration,\n disableAnimation: disableAnimation,\n enableAnimation: enableAnimation,\n showCornerButtonForStep: showCornerButtonForStep,\n stepAnimationFinishedTrigger: stepAnimationFinishedTrigger,\n scrollDialogToTop: scrollDialogToTop,\n updateButtonsConfiguration: updateButtonsConfiguration,\n clearButtonsConfiguration: clearButtonsConfiguration,\n buttonControllingStep: buttonControllingStep.current,\n updateButtonControllingStep: updateButtonControllingStep,\n updateAnimationConfiguration: updateAnimationConfiguration,\n inline: inline,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentStep, steps]);\n\n useEffect(() => {\n return () => {\n clearAllBodyScrollLocks();\n updateButtonControllingStep(\"\");\n clearButtonsConfiguration();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <CSSTransition\n in={showDialogProcessed}\n timeout={DIALOG_TRANSITION_STEP_DURATION}\n classNames={\n inline\n ? undefined\n : {\n enter: s[\"dialog-transition-enter\"],\n enterActive: s[\"dialog-transition-enter-active\"],\n exit: s[\"dialog-transition-exit\"],\n exitActive: s[\"dialog-transition-exit-active\"],\n }\n }\n unmountOnExit\n onExited={() => {\n disableAnimation(false);\n clearButtonsConfiguration();\n updateButtonControllingStep(\"\");\n }}\n onExiting={() => {\n if (inline) return;\n enableBodyScroll(scrollableRef.current);\n enableBodyScroll(dialogRef.current);\n }}\n onEntered={() => {\n if (inline) return;\n disableBodyScroll(scrollableRef.current);\n disableBodyScroll(dialogRef.current);\n }}\n >\n <div\n className={\n s[\"dialog\"] +\n \" \" +\n (dialogVerticalHeight > 1 || !isMultiStep ? \"\" : \" \" + s[\"hidden\"]) +\n (animationConfiguration.dialogContainerOverflowDisabled\n ? \" \" + s[\"vertical-overflow-disabled\"]\n : \"\") +\n (inline ? \" \" + s[\"inline\"] : \"\")\n }\n ref={dialogRef}\n >\n <div className={s[\"scrollable\"] + (inline ? \" \" + s[\"inline\"] : \"\")} ref={scrollableRef}>\n <div\n className={\n s[\"dialog-wrapper\"] +\n (animationConfiguration.wrapperWidthAnimationEnabled ? \"\" : \" \" + s[\"animation-disabled\"]) +\n (inline ? \" \" + s[\"inline\"] : \"\")\n }\n ref={dialogWrapperRef}\n style={\n dialogConfiguration.customWidth !== \"\"\n ? { maxWidth: dialogConfiguration.customWidth }\n : width !== \"\"\n ? { maxWidth: width }\n : null\n }\n >\n <AnimateHeight\n duration={\n animationConfiguration.animateHeightTransitionEnabled\n ? animationConfiguration.animateHeightTransitionSpeed\n : 0\n }\n delay={\n animationConfiguration.animateHeightTransitionEnabled\n ? animationConfiguration.animateHeightDelay\n : 0\n }\n height={isMultiStep ? dialogVerticalHeight : \"auto\"}\n contentClassName={s[\"dialog-wrapper-rah-content\"]}\n >\n {inline ? (\n \"\"\n ) : (\n <div className={s[\"dialog-wrapper-close\"]}>\n <Close color=\"dark\" onClick={e => onClose()} large />\n </div>\n )}\n {children}\n </AnimateHeight>\n </div>\n </div>\n {\n <CSSTransition\n in={\n (!!buttonsConfiguration.primaryButtonTitle ||\n !!buttonsConfiguration.secondaryButtonTitle) &&\n !animationConfiguration.hideMobileBottomButtonSection &&\n buttonsConfiguration.fixedButtonsEnabled\n }\n timeout={DIALOG_TRANSITION_STEP_DURATION}\n // classNames={s[\"fixed-buttons-container\"]}\n classNames={{\n enter: s[\"fixed-buttons-container-enter\"],\n enterActive: s[\"fixed-buttons-container-enter-active\"],\n enterDone: s[\"fixed-buttons-container-enter-done\"],\n exit: s[\"fixed-buttons-container-exit\"],\n exitActive: s[\"fixed-buttons-container-exit-active\"],\n exitDone: s[\"fixed-buttons-container-exit-done\"],\n }}\n unmountOnExit\n >\n <div className={s[\"fixed-buttons-container\"]}>\n <DialogButtons {...buttonsConfiguration} />\n </div>\n </CSSTransition>\n }\n </div>\n </CSSTransition>\n );\n};\n\nDialog.propTypes = {\n showDialog: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n initControls: PropTypes.func,\n children: PropTypes.node,\n width: PropTypes.oneOf([\"550px\", \"600px\", \"700px\", \"750px\", \"800px\", \"1000px\"]),\n dispatchDialogOpened: PropTypes.func,\n dispatchDialogClosed: PropTypes.func,\n inline: PropTypes.bool,\n};\n\nDialog.defaultProps = {\n showDialog: false,\n onClose: () => {},\n initControls: null,\n children: [],\n dispatchDialogOpened: () => {},\n dispatchDialogClosed: () => {},\n inline: false,\n};\n","export const DIALOG_STEP_CLASS = \"dialog-step\";\n","import React from \"react\";\n\n// Originally: arrow-tosca.svg\nexport default () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.2431 6L8.00045 10.2426L3.75781 6\"\n stroke=\"#16CDD6\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\n\n// Originally: arrow-tosca.svg\nexport default () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.2431 6L8.00045 10.2426L3.75781 6\"\n stroke=\"#fff\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React, { useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { logErrorOrOutputToConsole } from \"../../../../common/errorUtils\";\nimport { DIALOG_STEP_CLASS } from \"../../../../constants/organisms/dialog/DialogStep/dialogStep\";\nimport { DIALOG_TRANSITION_STEP_DURATION } from \"../../../../constants/organisms/dialog/dialog\";\n\nimport arrowTosca from \"../../../../assets/wrappedImages/arrowTosca\";\nimport arrowWhite from \"../../../../assets/wrappedImages/arrowWhite\";\n\nimport s from \"./dialog-step.module.scss\";\nimport { AssetIcon } from \"../../../atoms/AssetIcon/AssetIcon\";\nimport { LinkButton } from \"../../../atoms/buttons/LinkButton/LinkButton\";\nimport { BackgroundTitle } from \"../../../atoms/BackgroundTitle/BackgroundTitle\";\nimport { DialogButtons } from \"../DialogButtons/DialogButtons\";\nimport { LoadingDots } from \"../../../atoms/LoadingDots/LoadingDots\";\nimport { ICON_ROTATE_OPTIONS } from \"../../../../constants/atoms/LinkButton/linkButton\";\n\n/**\n * Step component, part of the DialogWithSteps modal component. This component should be used inside the primary dialog component.\n * @component\n * @param {string} stepName - Step name, specified on the root dialog level, used as an ID for dialog navigation.\n * @param {Object} children - Content of the dialog step. Supports both raw content and components.\n * @param {string} image - Illustration/icon at the top, path to an image. The content is the path to the image.\n * @param {React.ComponentType} ImageRaw - Illustration/icon at the top, path to an image. The content is the image component to be inserted.\n * @param {string} title - Step title.\n * @param {string} titleIcon - Icon next to the step title, path to an image.\n * @param {Coin} titleIconCoin - Coin to be shown as an AssetIcon next to the step title.\n * @param {function} coinToIconPaths - Function returning icons paths by Coin\n * @param {boolean} titleLoadingDots - Show loading dots next to the title or not.\n * @param {string} subtitle - Step subtitle.\n * @param {string} backButtonText - Secondary button title.\n * @param {function} backButtonClick - Secondary button click handler.\n * @param {string} backButtonTo - Secondary button link.\n * @param {string} confirmButtonText - Primary button title.\n * @param {function} confirmButtonClick - Primary button click handler.\n * @param {string} confirmButtonLink - Primary button link.\n * @param {boolean} primaryButtonLoader - Enable loader for the primary button.\n * @param {boolean} fixedButtons - Enable fixed buttons in the bottom for mobile devices.\n * @param {boolean} showCornerBackButton - Forcefully enable or disable blue corner back button.\n * @param {string} cornerBackButtonTitle - Blue corner back button title.\n * @param {function} cornerBackButtonClick - Blue corner back button click handler.\n * @param {boolean} bigButtonMargins - Increase button margins.\n * @param {boolean} noButtonMargins - Decrease button margins.\n * @param {boolean} headerTitleLeft - Align header title to the left. Default: false.\n * @param {boolean} subtitleSmallMargin - Reduce the margin under the subtitle.\n * @param {boolean} subtitleNoMargin - Disable the margin under the subtitle.\n * @param {boolean} showBackgroundTitle - Enable the semi-transparent secondary background title.\n * @param {function} setClickTrigger - Function to setup an external trigger for the primary button.\n * @param {boolean} breakSubtitleWords - Enable word-break for subtitles. Default: false.\n * @param {string} contentAlign - Receives \"left\", \"center\", \"right\". Controls the step content container alignment.\n * @param {Object} controls - Dialog-to-step connection object, required for multi-step dialog windows.\n * @param {string} width - Width in pixels, formatted as \"1000px\" and passed a string. Values should be used from constants.\n * @param {string} height - Height in pixels, formatted as \"1000px\" and passed a string. Values should be used from constants.\n * @param {string} backgroundImage - Background image, path to an image.\n * @param {string} backgroundImageMobile - Background image for mobiles, path to an image.\n * @param {boolean} isSecondaryButtonBig - Changes the secondary button style from link to a secondary-button. Default: false.\n * @returns {JSX.Element} React component\n */\nexport const DialogStep = ({\n stepName = \"\",\n children = \"\",\n image = \"\",\n ImageRaw,\n title = \"\",\n titleIcon = \"\",\n titleIconCoin,\n coinToIconPaths = () => {},\n titleLoadingDots = false,\n subtitle = \"\",\n backButtonText = \"\",\n backButtonClick = () => {},\n backButtonTo = \"\",\n confirmButtonText = \"\",\n confirmButtonClick = () => {},\n confirmButtonLink = \"\",\n primaryButtonLoader = false,\n fixedButtons = false,\n showCornerBackButton = null,\n cornerBackButtonTitle = null,\n cornerBackButtonClick = null,\n bigButtonMargins = false,\n noButtonMargins = false,\n headerTitleLeft = false,\n subtitleSmallMargin = false,\n subtitleNoMargin = false,\n showBackgroundTitle = true,\n setClickTrigger = () => {},\n breakSubtitleWords = false,\n contentAlign = \"left\",\n controls = {},\n width = \"\",\n height,\n backgroundImage,\n backgroundImageMobile,\n isSecondaryButtonBig = false,\n}) => {\n const {\n currentStep = null,\n isCurrentStep = () => {},\n previousStep,\n getStepClass = () => {},\n updateDialogConfiguration,\n provideCurrentStepRef,\n animationConfiguration,\n disableAnimation,\n showCornerButtonForStep,\n scrollDialogToTop = () => {},\n updateButtonsConfiguration = () => {},\n clearButtonsConfiguration = () => {},\n buttonControllingStep,\n updateButtonControllingStep = () => {},\n updateAnimationConfiguration = () => {},\n inline,\n } = controls;\n\n const [isMultiStep, setIsMultiStep] = useState(false);\n const [stepClass, setStepClass] = useState(\"\");\n const [wrapperDirectionSubclass, setWrapperDirectionSubclass] = useState(\"\");\n const [unmountOnAnimationEndTrigger, setUnmountOnAnimationEndTrigger] = useState(0);\n const [stepMounted, setStepMounted] = useState(false);\n const [isTopImagePassed, setIsTopImagePassed] = useState(false);\n\n const currentStepRef = useRef();\n // const { t } = useTranslation();\n\n useEffect(() => setIsTopImagePassed(!!image || !!ImageRaw), [image, ImageRaw]);\n\n useEffect(() => {\n if (controls !== {} && stepName !== \"\") setIsMultiStep(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleTransitionEnd = event => {\n if (\n isMultiStep &&\n isCurrentStep(stepName) &&\n event.propertyName === \"opacity\" &&\n event.target.classList[0] === s[DIALOG_STEP_CLASS]\n ) {\n disableAnimation(animationConfiguration.animateHeightTransitionEnabled);\n }\n\n if (\n isMultiStep &&\n unmountOnAnimationEndTrigger &&\n event.propertyName === \"opacity\" &&\n event.target.classList[0] === s[DIALOG_STEP_CLASS]\n ) {\n clearButtonsConfiguration();\n scrollDialogToTop();\n setStepMounted(false);\n setUnmountOnAnimationEndTrigger(0);\n }\n };\n\n useEffect(() => {\n var multiStep = false;\n if (controls !== {} && stepName !== \"\") {\n setIsMultiStep(true);\n multiStep = true;\n }\n\n if (!multiStep && fixedButtons) {\n logErrorOrOutputToConsole(\n new Error(\n \"DialogStep parameter 'fixedButtons' works only with controls connected between the DialogWithSteps and DialogStep components. Unless the controls are configured the 'fixedButtons' parameter will be ignored.\"\n )\n );\n }\n\n if (multiStep) {\n if (getStepClass(stepName) === \"current\") setStepMounted(true);\n\n if (stepClass === \"current\" && getStepClass(stepName) !== \"current\")\n setUnmountOnAnimationEndTrigger(prev => prev + 1);\n\n setWrapperDirectionSubclass(\n getStepClass(stepName) === \"current\" && animationConfiguration.currentStepAnimationEnabled\n ? stepClass === \"prev\"\n ? \"appear-from-left\"\n : \"appear-from-right\"\n : \"\"\n );\n } else {\n if (width !== \"\")\n logErrorOrOutputToConsole(\n new Error(\n \"Single DialogStep does not support 'width' parameter, since it requires controls to be connected. Pass 'width' to the Dialog component to set the width of the modal window.\"\n )\n );\n setStepMounted(true);\n }\n\n setStepClass(multiStep ? getStepClass(stepName) : \"current\");\n if (multiStep && isCurrentStep(stepName)) {\n setTimeout(\n () => updateButtonControllingStep(stepName),\n buttonControllingStep === \"\" ? 0 : DIALOG_TRANSITION_STEP_DURATION\n );\n\n setTimeout(() => {\n updateButtonsConfiguration(\n {\n primaryButtonTitle: confirmButtonText,\n primaryButtonOnClick: resetButtonLoader => confirmButtonClick(resetButtonLoader),\n primaryButtonLoader: primaryButtonLoader,\n primaryButtonTo: confirmButtonLink,\n primaryButtonSetClickTrigger: setClickTrigger,\n secondaryButtonTitle: backButtonText,\n secondaryButtonOnClick: backButtonClick,\n secondaryButtonTo: backButtonTo,\n fixedButtonsEnabled: fixedButtons,\n },\n stepName\n );\n\n updateAnimationConfiguration(prev => {\n return {\n ...prev,\n hideMobileBottomButtonSection: false,\n };\n });\n }, DIALOG_TRANSITION_STEP_DURATION * 3);\n\n updateDialogConfiguration(prev => {\n return {\n ...prev,\n cornerBackButtonTitle: cornerBackButtonTitle,\n customWidth: width,\n };\n });\n provideCurrentStepRef(currentStepRef);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentStep]);\n\n useEffect(() => {\n if (isMultiStep && isCurrentStep(stepName) && fixedButtons && (confirmButtonText || backButtonText)) {\n updateButtonsConfiguration(\n {\n primaryButtonTitle: confirmButtonText,\n primaryButtonOnClick: resetButtonLoader => confirmButtonClick(resetButtonLoader),\n primaryButtonLoader: primaryButtonLoader,\n primaryButtonTo: confirmButtonLink,\n primaryButtonSetClickTrigger: setClickTrigger,\n secondaryButtonTitle: backButtonText,\n secondaryButtonOnClick: backButtonClick,\n secondaryButtonTo: backButtonTo,\n fixedButtonsEnabled: fixedButtons,\n },\n stepName\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n confirmButtonText,\n confirmButtonClick,\n primaryButtonLoader,\n confirmButtonLink,\n setClickTrigger,\n backButtonText,\n backButtonClick,\n backButtonTo,\n currentStep,\n ]);\n\n const { assetIconSrc, assetIconProtocolSrc, fallbackSrc } =\n titleIconCoin && coinToIconPaths ? coinToIconPaths(titleIconCoin) : {};\n\n return (\n <div\n className={\n s[DIALOG_STEP_CLASS] +\n \" \" +\n s[stepClass] +\n (!isMultiStep || !animationConfiguration?.currentStepAnimationEnabled\n ? \" \" + s[\"animation-disabled\"]\n : \"\") +\n (!isMultiStep ? \" \" + s[\"single-step\"] : \"\") +\n (backgroundImage || backgroundImageMobile ? \" \" + s[\"with-background\"] : \"\") +\n (inline ? \" \" + s[\"inline\"] : \"\")\n }\n ref={currentStepRef}\n onTransitionEnd={handleTransitionEnd}\n style={height ? { height: height } : null}\n >\n {stepMounted ? (\n <>\n {backgroundImage || backgroundImageMobile ? (\n <div className={s[\"dialog-step-background-image\"] + \" \" + s[stepClass]}>\n {backgroundImage ? (\n <img\n src={backgroundImage}\n className={\n s[\"dialog-step-background-image-desktop\"] +\n \" \" +\n stepClass +\n (!backgroundImageMobile ? \" \" + s[\"primary\"] : \"\")\n }\n alt={\"dialog step background\"}\n />\n ) : null}\n {backgroundImageMobile ? (\n <img\n src={backgroundImageMobile}\n className={\n s[\"dialog-step-background-image-mobile\"] +\n \" \" +\n stepClass +\n (!backgroundImage ? \" \" + s[\"primary\"] : \"\")\n }\n alt={\"dialog step background\"}\n />\n ) : null}\n </div>\n ) : null}\n <div\n className={\n s[\"dialog-step-wrapper\"] +\n \" \" +\n s[stepClass] +\n \" \" +\n s[wrapperDirectionSubclass] +\n (inline ? \" \" + s[\"inline\"] : \"\")\n }\n >\n {isMultiStep && showCornerButtonForStep(stepName, showCornerBackButton) ? (\n <div className={s[\"dialog-step-wrapper-back-button\"]}>\n <LinkButton\n onClick={cornerBackButtonClick ? cornerBackButtonClick : previousStep}\n content={\n cornerBackButtonTitle\n ? cornerBackButtonTitle\n : // : t(\"organisms.DialogWithSteps.DialogStep.default-back-button-title\")\n \"Back\"\n }\n IconComponent={backgroundImage || backgroundImageMobile ? arrowWhite : arrowTosca}\n iconRotate={ICON_ROTATE_OPTIONS.rotate90}\n isColored={backgroundImage || backgroundImageMobile ? false : undefined}\n />\n </div>\n ) : null}\n\n <div\n className={\n s[\"dialog-step-wrapper-header\"] +\n (headerTitleLeft ? \" \" + s[\"text-left\"] : \"\") +\n (backgroundImage || backgroundImageMobile ? \" \" + s[\"with-background-image\"] : \"\")\n }\n >\n {image ? (\n <img\n src={image}\n alt=\"dialog popup logo\"\n className={s[\"dialog-step-wrapper-header-logo\"]}\n />\n ) : ImageRaw ? (\n <div className={s[\"dialog-step-wrapper-header-logo\"]}>\n <ImageRaw />\n </div>\n ) : null}\n\n <div\n className={\n s[\"dialog-step-wrapper-header-title\"] +\n (!isTopImagePassed ? \" \" + s[\"without-logo\"] : \"\") +\n (!isTopImagePassed && headerTitleLeft ? \" \" + s[\"close-button-padding\"] : \"\") +\n (inline ? \" \" + s[\"no-close-button-padding\"] : \"\")\n }\n >\n {titleIconCoin ? (\n <div className={s[\"dialog-step-wrapper-header-title-coin-icon\"]}>\n <AssetIcon\n assetIconSrc={assetIconSrc}\n assetIconProtocolSrc={assetIconProtocolSrc}\n fallbackSrc={fallbackSrc}\n />\n </div>\n ) : titleIcon ? (\n <div className={s[\"dialog-step-wrapper-header-title-icon\"]}>\n <img src={titleIcon} alt=\"coin icon to send\" />\n </div>\n ) : null}\n {titleLoadingDots ? (\n <div className={s[\"dialog-step-wrapper-header-title-loading\"]}>\n <LoadingDots isColored />\n </div>\n ) : (\n \"\"\n )}\n <div className={s[\"dialog-step-wrapper-header-title-text\"]}>\n {!isTopImagePassed && showBackgroundTitle ? <BackgroundTitle text={title} /> : null}\n <h5\n className={\n s[\"dialog-step-wrapper-header-title-text-content\"] +\n (!isTopImagePassed ? \" \" + s[\"without-logo\"] : \"\") +\n (backgroundImage || backgroundImageMobile ? \" \" + s[\"white\"] : \"\")\n }\n >\n {title}\n </h5>\n </div>\n </div>\n\n {subtitle ? (\n <p\n className={\n s[\"dialog-step-wrapper-header-text\"] +\n ` ${!isTopImagePassed ? s[\"without-logo\"] : \"\"} ${\n subtitleSmallMargin ? s[\"small-margin\"] : \"\"\n }${subtitleNoMargin ? s[\"no-margin\"] : \"\"} ${\n headerTitleLeft ? s[\"text-left\"] : \"\"\n } ${breakSubtitleWords ? s[\"break-words\"] : \"\"} ${\n backgroundImage || backgroundImageMobile ? s[\"white\"] : \"\"\n }`\n }\n >\n {subtitle}\n </p>\n ) : null}\n </div>\n <div className={s[\"dialog-step-wrapper-content\"] + \" \" + s[\"align-\" + contentAlign]}>\n {children}\n </div>\n\n {backButtonText || confirmButtonText ? (\n <div\n className={\n s[\"dialog-step-wrapper-buttons\"] +\n ` ${bigButtonMargins ? s[\"big-margin\"] : \"\"} ${\n noButtonMargins ? s[\"no-margin\"] : \"\"\n } ${isSecondaryButtonBig ? s[\"space-between-layout\"] : \"\"}`\n }\n >\n <DialogButtons\n primaryButtonTitle={confirmButtonText}\n primaryButtonOnClick={resetButtonLoader => confirmButtonClick(resetButtonLoader)}\n primaryButtonLoader={primaryButtonLoader}\n primaryButtonTo={confirmButtonLink}\n primaryButtonSetClickTrigger={setClickTrigger}\n secondaryButtonTitle={backButtonText}\n secondaryButtonOnClick={backButtonClick}\n secondaryButtonTo={backButtonTo}\n secondaryButtonBig={isSecondaryButtonBig}\n withBackgroundImage={!!backgroundImage || !!backgroundImageMobile}\n hideOnMobiles={isMultiStep && fixedButtons && (backButtonText || confirmButtonText)}\n />\n </div>\n ) : (\n \"\"\n )}\n </div>\n </>\n ) : null}\n </div>\n );\n};\n\nDialogStep.propTypes = {\n stepName: PropTypes.string,\n children: PropTypes.node,\n image: PropTypes.string,\n title: PropTypes.string,\n ImageRaw: PropTypes.func,\n titleIcon: PropTypes.string,\n titleIconCoin: PropTypes.object,\n coinToIconPaths: PropTypes.func,\n titleLoadingDots: PropTypes.bool,\n subtitle: PropTypes.string,\n backButtonText: PropTypes.string,\n backButtonClick: PropTypes.func,\n backButtonTo: PropTypes.string,\n confirmButtonText: PropTypes.string,\n confirmButtonClick: PropTypes.func,\n confirmButtonLink: PropTypes.string,\n primaryButtonLoader: PropTypes.bool,\n fixedButtons: PropTypes.bool,\n showCornerBackButton: PropTypes.bool,\n cornerBackButtonTitle: PropTypes.string,\n cornerBackButtonClick: PropTypes.func,\n bigButtonMargins: PropTypes.bool,\n noButtonMargins: PropTypes.bool,\n headerTitleLeft: PropTypes.bool,\n subtitleSmallMargin: PropTypes.bool,\n subtitleNoMargin: PropTypes.bool,\n showBackgroundTitle: PropTypes.bool,\n setClickTrigger: PropTypes.func,\n breakSubtitleWords: PropTypes.bool,\n contentAlign: PropTypes.string,\n controls: PropTypes.object,\n width: PropTypes.oneOf([\"550px\", \"600px\", \"700px\", \"750px\", \"800px\", \"1000px\"]),\n height: PropTypes.string,\n backgroundImage: PropTypes.string,\n backgroundImageMobile: PropTypes.string,\n isSecondaryButtonBig: PropTypes.bool,\n};\n\nDialogStep.defaultProps = {\n stepName: \"\",\n children: null,\n image: \"\",\n title: \"\",\n titleIcon: \"\",\n coinToIconPaths: () => ({}),\n titleLoadingDots: false,\n subtitle: \"\",\n backButtonText: \"\",\n backButtonClick: () => {},\n backButtonTo: \"\",\n confirmButtonText: \"\",\n confirmButtonClick: () => {},\n confirmButtonLink: \"\",\n primaryButtonLoader: false,\n fixedButtons: false,\n showCornerBackButton: null,\n cornerBackButtonTitle: null,\n cornerBackButtonClick: null,\n bigButtonMargins: false,\n noButtonMargins: false,\n headerTitleLeft: false,\n subtitleSmallMargin: false,\n subtitleNoMargin: false,\n showBackgroundTitle: true,\n setClickTrigger: () => {},\n breakSubtitleWords: false,\n contentAlign: \"left\",\n controls: {},\n height: null,\n backgroundImage: \"\",\n backgroundImageMobile: \"\",\n isSecondaryButtonBig: false,\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.2431 6L8.00045 10.2426L3.75781 6\"\n stroke=\"#232d42\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./asset-selection.module.scss\";\nimport ArrowIcon from \"../../../assets/wrappedImages/arrowIcon.jsx\";\n\nimport { AssetIcon } from \"../AssetIcon/AssetIcon.jsx\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\n\n/**\n * Component-button for triggering selecting an asset.\n *\n * @component\n * @param {Function} handleClick - The function to call when the component is clicked\n * @param {boolean} disabled - If true, disables click functionality\n * @param {string} assetIconSrc - The source URL for the asset icon\n * @param {string} [protocolName] - The name of the protocol, if any\n * @param {string} [assetIconProtocolSrc] - The source URL for the asset protocol icon\n * @param {string} [fallbackSrc] - The fallback source URL if the main asset icon fails to load\n */\nexport const AssetSelection = ({\n handleClick = () => {},\n disabled = false,\n assetIconSrc,\n protocolName,\n assetIconProtocolSrc = null,\n fallbackSrc,\n}) => {\n const handleError = useCallHandlingErrors();\n\n return (\n <div\n className={s[\"asset-selection\"] + \" \" + (disabled ? s[\"disabled\"] : \"\")}\n onClick={disabled ? () => {} : e => handleError(handleClick, e)}\n >\n <div className={s[\"asset-selection-icon-wrapper\"]}>\n <AssetIcon\n small\n assetIconSrc={assetIconSrc}\n assetIconProtocolSrc={assetIconProtocolSrc}\n fallbackSrc={fallbackSrc}\n />\n </div>\n {protocolName ? <div className={s[\"asset-selection-protocol-wrapper\"]}>{protocolName}</div> : \"\"}\n <div className={s[\"arrow\"]}>\n <ArrowIcon />\n </div>\n {/*<img src={arrowIcon} className=\"arrow\" alt=\"\"></img>*/}\n </div>\n );\n};\n\nAssetSelection.propTypes = {\n handleClick: PropTypes.func,\n disabled: PropTypes.bool,\n assetIconSrc: PropTypes.string.isRequired,\n protocolName: PropTypes.string,\n assetIconProtocolSrc: PropTypes.string,\n fallbackSrc: PropTypes.string,\n};\n\nAssetSelection.defaultProps = {\n handleClick: () => {},\n disabled: false,\n assetIconProtocolSrc: null,\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"25\" height=\"13\" viewBox=\"0 0 25 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12.5 13L25 0H0L12.5 13Z\" fill=\"#232D42\" />\n </svg>\n);\n","export const TOOLTIP_POSITIONS = {\n TOP: \"top\",\n LEFT: \"left\",\n RIGHT: \"right\",\n BOTTOM: \"bottom\",\n TOP_LEFT: \"top-left\",\n TOP_RIGHT: \"top-right\",\n};\n","import React from \"react\";\nimport { CSSTransition } from \"react-transition-group\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./tooltip.module.scss\";\nimport DarkRectangle from \"../../../assets/wrappedImages/darkRectangle.jsx\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\nimport { TOOLTIP_POSITIONS } from \"../../../constants/atoms/Tooltip/tooltip.jsx\";\n\n/**\n * Tooltip component for displaying contextual information.\n *\n * @component\n * @param {React.ReactNode} children - The content to display inside the tooltip.\n * @param {boolean} showTooltip - Controls whether the tooltip is visible.\n * @param {Function} handleClick - Handler for click events.\n * @param {boolean} wide - If true, applies a wider style to the tooltip.\n * @param {string} position - One of the predefined positions for the tooltip.\n * @param {boolean} ignorePointerEvents - If true, the tooltip will not react to pointer events.\n */\nexport const Tooltip = ({\n children,\n showTooltip,\n handleClick = () => {},\n wide = false,\n position = TOOLTIP_POSITIONS.TOP,\n ignorePointerEvents = false,\n}) => {\n const handleError = useCallHandlingErrors();\n\n const onClick = e => {\n e.stopPropagation();\n handleClick();\n };\n\n return (\n <CSSTransition in={showTooltip} timeout={400} unmountOnExit>\n <span\n className={`${s[\"tooltip\"]} ${wide ? s[\"wide\"] : \"\"} ${s[position]} ${\n ignorePointerEvents ? s[\"ignore-pointer\"] : \"\"\n }`}\n onClick={e => handleError(onClick, e)}\n onDoubleClick={e => handleError(e => e.stopPropagation(), e)}\n >\n <DarkRectangle />\n {/*<img src={darkRectangle} alt=\"dark rectangle\" />*/}\n {children}\n </span>\n </CSSTransition>\n );\n};\n\nTooltip.propTypes = {\n children: PropTypes.node.isRequired,\n showTooltip: PropTypes.bool.isRequired,\n handleClick: PropTypes.func,\n wide: PropTypes.bool,\n position: PropTypes.oneOf(Object.values(TOOLTIP_POSITIONS)),\n ignorePointerEvents: PropTypes.bool,\n};\n\nTooltip.defaultProps = {\n handleClick: () => {},\n wide: false,\n position: TOOLTIP_POSITIONS.TOP,\n ignorePointerEvents: false,\n};\n","export const handleClickOutside = (exceptionsRefs, callback) => {\n function handleClick(event) {\n const isExceptionClicked = exceptionsRefs.find(ref => ref?.current && ref.current.contains(event.target));\n if (!isExceptionClicked) {\n callback();\n }\n }\n\n document.addEventListener(\"click\", handleClick);\n\n return () => document.removeEventListener(\"click\", handleClick);\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.5\" y=\"0.25\" width=\"16\" height=\"16\" rx=\"8\" fill=\"#DAF1FE\" />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.44968 9.62287C8.0213 9.62287 7.67264 9.24008 7.815 8.83604C7.84547 8.74956 7.87999 8.67275 7.91856 8.61686C8.10216 8.35084 8.37005 8.06047 8.72224 7.74574C8.99201 7.50594 9.19246 7.298 9.3236 7.1219C9.45474 6.9458 9.52031 6.74535 9.52031 6.52054C9.52031 6.20581 9.39292 5.95103 9.13814 5.7562C8.88335 5.56137 8.5424 5.46395 8.11527 5.46395C7.62404 5.46395 7.05412 5.78283 6.68203 6.03347C6.43716 6.19842 6.11362 6.21939 5.86602 6.05857C5.51562 5.83099 5.45796 5.34121 5.77515 5.06925C5.99176 4.88352 6.23474 4.69937 6.44046 4.60407C6.95003 4.36802 7.5495 4.25 8.23891 4.25C9.07819 4.25 9.74698 4.43172 10.2453 4.79516C10.7436 5.15859 10.9928 5.65878 10.9928 6.29574C10.9928 6.60297 10.9422 6.87274 10.841 7.10504C10.7399 7.33734 10.6181 7.53404 10.4757 7.69516C10.3334 7.85627 10.146 8.04173 9.91372 8.25155C9.62896 8.50633 9.41727 8.73114 9.27864 8.92597C9.25936 8.95306 9.24143 8.98609 9.22483 9.02289C9.0785 9.34733 8.8056 9.62287 8.44968 9.62287Z\"\n fill=\"url(#paint1_linear)\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8.3626 12.3094C8.10033 12.3094 7.88489 12.2251 7.71629 12.0565C7.54768 11.8879 7.46338 11.6799 7.46338 11.4326C7.46338 11.1854 7.54768 10.9793 7.71629 10.8144C7.88489 10.6496 8.10033 10.5671 8.3626 10.5671C8.61739 10.5671 8.82908 10.6496 8.99768 10.8144C9.16629 10.9793 9.25059 11.1854 9.25059 11.4326C9.25059 11.6799 9.16629 11.8879 8.99768 12.0565C8.82908 12.2251 8.61739 12.3094 8.3626 12.3094Z\"\n fill=\"url(#paint2_linear)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear\"\n x1=\"25.862\"\n y1=\"18.5044\"\n x2=\"12.7031\"\n y2=\"-2.23444\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#FCE2F0\" />\n <stop offset=\"1\" stop-color=\"#F7EAFD\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear\"\n x1=\"14.2067\"\n y1=\"10.3799\"\n x2=\"9.83017\"\n y2=\"3.3283\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#55E7D9\" />\n <stop offset=\"1\" stop-color=\"#54B4FF\" />\n </linearGradient>\n <linearGradient\n id=\"paint2_linear\"\n x1=\"10.2963\"\n y1=\"12.5549\"\n x2=\"8.87929\"\n y2=\"10.2639\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#55E7D9\" />\n <stop offset=\"1\" stop-color=\"#54B4FF\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import React, { useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./notice-icon.module.scss\";\n\nimport { handleClickOutside } from \"../../utils/uiUtils.js\";\nimport { Tooltip } from \"../Tooltip/Tooltip.jsx\";\nimport NoticeQuestionIcon from \"../../../assets/wrappedImages/noticeQuestionIcon.jsx\";\n\nimport { TOOLTIP_POSITIONS } from \"../../../constants/atoms/Tooltip/tooltip.jsx\";\n\n/**\n * A component that displays a notice icon with optional tooltip.\n *\n * @component\n * @param {string} noticeText - The text to display inside the tooltip.\n * @param {string} [titleNoticeIcon] - The source URL for the icon displayed on the notice.\n * @param {string} tooltipPosition - Position for the tooltip relative to the icon.\n */\nexport const NoticeIcon = ({ noticeText, titleNoticeIcon = \"\", tooltipPosition = TOOLTIP_POSITIONS.TOP }) => {\n const [showTooltip, setShowTooltip] = useState(false);\n\n const noticeRef = useRef();\n\n useEffect(() => handleClickOutside([noticeRef], () => setShowTooltip(false)), []);\n\n return (\n <div ref={noticeRef} className={s[\"notice-icon\"]}>\n {titleNoticeIcon ? (\n <img\n src={titleNoticeIcon}\n alt=\"title icon\"\n onClick={() => setShowTooltip(prev => !prev)}\n className={s[\"notice-icon-image\"]}\n />\n ) : (\n <div className={s[\"notice-icon-image\"]} onClick={() => setShowTooltip(prev => !prev)}>\n <NoticeQuestionIcon />\n </div>\n )}\n <div className={s[\"notice-icon-tooltip\"]}>\n <Tooltip\n showTooltip={showTooltip}\n handleClick={() => setShowTooltip(false)}\n wide={true}\n position={tooltipPosition}\n >\n {noticeText}\n </Tooltip>\n </div>\n </div>\n );\n};\n\nNoticeIcon.propTypes = {\n noticeText: PropTypes.string.isRequired,\n titleNoticeIcon: PropTypes.string,\n tooltipPosition: PropTypes.oneOf(Object.values(TOOLTIP_POSITIONS)),\n};\n\nNoticeIcon.defaultProps = {\n titleNoticeIcon: \"\",\n tooltipPosition: TOOLTIP_POSITIONS.TOP,\n};\n","import copy from \"clipboard-copy\";\n\nimport { improveAndRethrow } from \"../../common/errorUtils.js\";\n\n/**\n * Copies given text to clipboard inside browser.\n *\n * @param text - text to be copied\n */\nexport function copyBrowserTextToClipboard(text) {\n try {\n if (!copy(text)) {\n throw new Error(\"Failed to execute copy command.\");\n }\n } catch (e) {\n improveAndRethrow(e, \"saveTextToFile\");\n }\n}\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./title-box.module.scss\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\nimport { copyBrowserTextToClipboard } from \"../../utils/textUtils.js\";\nimport { TOOLTIP_POSITIONS } from \"../../../constants/atoms/Tooltip/tooltip.jsx\";\n\nimport { NoticeIcon } from \"../NoticeIcon/NoticeIcon.jsx\";\nimport { LinkButton } from \"../buttons/LinkButton/LinkButton.jsx\";\nimport { Tooltip } from \"../Tooltip/Tooltip.jsx\";\n\n/**\n * A box component for displaying a title with optional controls like buttons or icons and any children inside.\n *\n * @component\n * @param {string} title - The main title text.\n * @param {string} linkText - The text for the link button, if any.\n * @param {Function} linkButtonClick - The function to execute when the link button is clicked.\n * @param {boolean} isLinkButtonDisabled - Determines if the link button is disabled.\n * @param {React.ReactNode} children - Child components to be rendered.\n * @param {boolean} linkButtonLoader - Displays a loader animation on the link button if true.\n * @param {boolean} fullWidth - If true, the title box will take full width of its container.\n * @param {string} titleNoticeText - The text for a notice icon tooltip.\n * @param {string} titleNoticeIcon - The icon for the notice tooltip.\n * @param {string} titleNoticePosition - Tooltip position for the notice icon.\n * @param {boolean} bigTitle - If true, uses a larger font size for the title.\n * @param {boolean} transparentTitle - If true, the title has a transparent background.\n * @param {string} copyButtonText - The text for the copy button.\n * @param {string} copyButtonContent - The content to be copied to the clipboard.\n * @param {string} copyButtonTooltipContent - Tooltip content displayed after copying.\n */\nexport const TitleBox = ({\n title = \"\",\n linkText = \"\",\n linkButtonClick = resetButtonLoader => {},\n isLinkButtonDisabled = false,\n children,\n linkButtonLoader = false,\n fullWidth = true,\n titleNoticeText = \"\",\n titleNoticeIcon,\n titleNoticePosition,\n bigTitle = false,\n transparentTitle = false,\n copyButtonText,\n copyButtonContent,\n copyButtonTooltipContent,\n}) => {\n const handleError = useCallHandlingErrors();\n\n const transparentTitleClass = transparentTitle ? s[\"transparent-title\"] : \"\";\n\n const [showCopyNotice, setShowCopyNotice] = useState(false);\n\n const handleCopyButton = e => {\n handleError(() => {\n setShowCopyNotice(true);\n copyBrowserTextToClipboard(copyButtonContent);\n setTimeout(() => {\n setShowCopyNotice(false);\n }, 1500);\n }, e);\n };\n\n return (\n <div className={`${s[\"title-box\"]} ${fullWidth ? s[\"full-width\"] : \"\"}`}>\n {title || titleNoticeText || linkText ? (\n <div className={s[\"title-box-wrapper\"]}>\n {bigTitle ? (\n <h5 className={s[\"title-box-wrapper-title\"] + \" \" + transparentTitleClass}>{title}</h5>\n ) : (\n <h6 className={s[\"title-box-wrapper-title\"] + \" \" + transparentTitleClass}>{title}</h6>\n )}\n {titleNoticeText ? (\n <NoticeIcon\n noticeText={titleNoticeText}\n titleNoticeIcon={titleNoticeIcon}\n tooltipPosition={titleNoticePosition}\n />\n ) : null}\n {copyButtonContent && copyButtonText ? (\n <div className={s[\"title-box-wrapper-link-button\"]}>\n <LinkButton\n content={copyButtonText}\n onClick={handleCopyButton}\n isLoadable={false}\n isDisabled={false}\n />\n <Tooltip position={TOOLTIP_POSITIONS.TOP_LEFT} showTooltip={showCopyNotice}>\n {copyButtonTooltipContent}\n </Tooltip>\n </div>\n ) : linkText ? (\n <div className={s[\"title-box-wrapper-link-button\"]}>\n <LinkButton\n content={linkText}\n onClick={linkButtonClick}\n isLoadable={linkButtonLoader}\n isDisabled={isLinkButtonDisabled}\n />\n </div>\n ) : null}\n </div>\n ) : null}\n {children}\n </div>\n );\n};\n\nTitleBox.propTypes = {\n title: PropTypes.string,\n linkText: PropTypes.string,\n linkButtonClick: PropTypes.func,\n isLinkButtonDisabled: PropTypes.bool,\n children: PropTypes.node,\n linkButtonLoader: PropTypes.bool,\n fullWidth: PropTypes.bool,\n titleNoticeText: PropTypes.string,\n titleNoticeIcon: PropTypes.string,\n titleNoticePosition: PropTypes.string,\n bigTitle: PropTypes.bool,\n transparentTitle: PropTypes.bool,\n copyButtonText: PropTypes.string,\n copyButtonContent: PropTypes.string,\n copyButtonTooltipContent: PropTypes.string,\n};\n\nTitleBox.defaultProps = {\n title: \"\",\n linkText: \"\",\n linkButtonClick: () => {},\n isLinkButtonDisabled: false,\n linkButtonLoader: false,\n fullWidth: true,\n titleNoticeText: \"\",\n titleNoticePosition: TOOLTIP_POSITIONS.TOP,\n bigTitle: false,\n transparentTitle: false,\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6265 10.4119V12.2379C12.6265 12.7338 12.193 13.1356 11.6583 13.1356H3.26825C2.73352 13.1356 2.29999 12.7338 2.29999 12.2379V3.79771C2.29999 3.30178 2.73352 2.89999 3.26825 2.89999H11.6583C12.193 2.89999 12.6265 3.30178 12.6265 3.79771V5.84996\"\n stroke=\"#8F95A2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M13.0952 10.1922H10.2664C9.0847 10.1922 8.12704 9.23439 8.12704 8.05246C8.12704 6.87052 9.0847 5.91269 10.2664 5.91269H13.0952C13.4072 5.91269 13.66 6.16552 13.66 6.47758V9.62689C13.66 9.93939 13.4072 10.1922 13.0952 10.1922Z\"\n stroke=\"#8F95A2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path d=\"M2.29999 4.73721H4.99884\" stroke=\"#8F95A2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M2.29999 11.3122H4.99884\" stroke=\"#8F95A2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n);\n","import { BigNumber } from \"bignumber.js\";\n\nexport class InputValuesProviders {\n /**\n * Designed to be called onKeyUp event of html input field for float value\n * Removes all prohibited stuff from the given float string and remains only allowed.\n * Removes digits before and after the dot.\n *\n * @param inputString {string} string to be corrected\n * @param maxValue {string} max value for the correcting float value\n * @param digitsAfterDot {number} count of digits after the dot that this method should provide, min 0\n * @return {string} corrected float value string\n */\n static provideFormatOfFloatValueByInputString(inputString, digitsAfterDot = 2, maxValue = null) {\n let value = inputString;\n if (!value) {\n return \"\";\n }\n\n if (digitsAfterDot < 0) {\n throw new Error(\"Min suffix length is 0, got \" + digitsAfterDot);\n }\n\n value = value.replace(/[,]/g, \".\"); // replaces commas with dots\n value = value.replace(/[^0-9.]/g, \"\"); // remove non digits/dots\n value = value.replace(/^\\./g, \"0.\"); // adds leading zero\n value = value.replace(/\\.+/g, \".\"); // replaces series of dots with single dot\n\n let parts = value.split(\".\");\n if (parts.length > 2) {\n // removes all after second dot and itself\n parts = [parts[0], parts[1]];\n }\n\n if (maxValue != null) {\n const maxDigitsCountBeforeTheDot = BigNumber(maxValue).toFixed(0).length;\n if (parts[0]?.length > maxDigitsCountBeforeTheDot) {\n // removes redundant prefix digits\n parts[0] = parts[0].substring(parts[0].length - maxDigitsCountBeforeTheDot, parts[0].length);\n }\n }\n\n if (parts[1]?.length > digitsAfterDot) {\n // removes redundant suffix digits\n parts[1] = parts[1].substring(0, digitsAfterDot);\n }\n\n return parts.join(\".\");\n }\n}\n","export class FiatCurrenciesService {\n static getFullCurrencyNameByCode(code = \"\") {\n const data = fiatCurrenciesList.find(currencyData => currencyData[0] === code.toUpperCase());\n return (data && data[2]) || null;\n }\n\n static isCodeValid(code) {\n return !!fiatCurrenciesList.find(currenciesData => currenciesData[0] === code);\n }\n\n /**\n * Returns currency symbol by code if present\n *\n * @param code {string} currency code\n * @return {string|null} code or null if there is no symbol for the currency\n */\n static getCurrencySymbolByCode(code = \"\") {\n const data = fiatCurrenciesList.find(currencyData => currencyData[0] === code.toUpperCase());\n return data?.[1] ?? null;\n }\n\n /**\n * @param code {string}\n * @return {number|null}\n */\n static getCurrencyDecimalCountByCode(code = \"\") {\n const data = fiatCurrenciesList.find(currencyData => currencyData[0] === code.toUpperCase());\n return data?.[3] ?? null;\n }\n}\n\nconst fiatCurrenciesList = [\n [\"USD\", \"$\", \"US Dollar\", 2],\n [\"CAD\", \"CA$\", \"Canadian Dollar\", 2],\n [\"EUR\", \"€\", \"Euro\", 2],\n [\"AED\", \"AED\", \"UAE Dirham\", 2],\n [\"AFN\", \"؋\", \"Afghan Afghani\", 0],\n [\"ALL\", \"ALL\", \"Albanian Lek\", 0],\n [\"AMD\", \"֏\", \"Armenian Dram\", 0],\n [\"ARS\", \"AR$\", \"Argentine Peso\", 2],\n [\"AUD\", \"AU$\", \"Australian Dollar\", 2],\n [\"AZN\", \"₼\", \"Azerbaijani Manat\", 2],\n [\"BAM\", \"KM\", \"Bosnia-Herzegovina Convertible Mark\", 2],\n [\"BDT\", \"Tk\", \"Bangladeshi Taka\", 2],\n [\"BGN\", \"BGN\", \"Bulgarian Lev\", 2],\n [\"BHD\", \"BD\", \"Bahraini Dinar\", 3],\n [\"BIF\", \"FBu\", \"Burundian Franc\", 0],\n [\"BND\", \"BN$\", \"Brunei Dollar\", 2],\n [\"BOB\", \"Bs\", \"Bolivian Boliviano\", 2],\n [\"BRL\", \"R$\", \"Brazilian Real\", 2],\n [\"BWP\", \"BWP\", \"Botswanan Pula\", 2],\n [\"BYN\", \"Br\", \"Belarusian Ruble\", 2],\n [\"BZD\", \"BZ$\", \"Belize Dollar\", 2],\n [\"CDF\", \"CDF\", \"Congolese Franc\", 2],\n [\"CHF\", \"CHF\", \"Swiss Franc\", 2],\n [\"CLP\", \"CL$\", \"Chilean Peso\", 0],\n [\"CNY\", \"CN¥\", \"Chinese Yuan\", 2],\n [\"COP\", \"CO$\", \"Colombian Peso\", 0],\n [\"CRC\", \"₡\", \"Costa Rican Colón\", 0],\n [\"CVE\", \"CV$\", \"Cape Verdean Escudo\", 2],\n [\"CZK\", \"Kč\", \"Czech Republic Koruna\", 2],\n [\"DJF\", \"Fdj\", \"Djiboutian Franc\", 0],\n [\"DKK\", \"Dkr\", \"Danish Krone\", 2],\n [\"DOP\", \"RD$\", \"Dominican Peso\", 2],\n [\"DZD\", \"DA\", \"Algerian Dinar\", 2],\n [\"EEK\", \"Ekr\", \"Estonian Kroon\", 2],\n [\"EGP\", \"EGP\", \"Egyptian Pound\", 2],\n [\"ERN\", \"Nfk\", \"Eritrean Nakfa\", 2],\n [\"ETB\", \"Br\", \"Ethiopian Birr\", 2],\n [\"GBP\", \"£\", \"British Pound Sterling\", 2],\n [\"GEL\", \"₾\", \"Georgian Lari\", 2],\n [\"GHS\", \"₵\", \"Ghanaian Cedi\", 2],\n [\"GNF\", \"FG\", \"Guinean Franc\", 0],\n [\"GTQ\", \"GTQ\", \"Guatemalan Quetzal\", 2],\n [\"HKD\", \"HK$\", \"Hong Kong Dollar\", 2],\n [\"HNL\", \"HNL\", \"Honduran Lempira\", 2],\n [\"HRK\", \"kn\", \"Croatian Kuna\", 2],\n [\"HUF\", \"Ft\", \"Hungarian Forint\", 0],\n [\"IDR\", \"Rp\", \"Indonesian Rupiah\", 0],\n [\"ILS\", \"₪\", \"Israeli New Sheqel\", 2],\n [\"INR\", \"₹\", \"Indian Rupee\", 2],\n [\"IQD\", \"IQD\", \"Iraqi Dinar\", 0],\n [\"IRR\", \"﷼\", \"Iranian Rial\", 0],\n [\"ISK\", \"Ikr\", \"Icelandic Króna\", 0],\n [\"JMD\", \"J$\", \"Jamaican Dollar\", 2],\n [\"JOD\", \"JD\", \"Jordanian Dinar\", 3],\n [\"JPY\", \"¥\", \"Japanese Yen\", 0],\n [\"KES\", \"Ksh\", \"Kenyan Shilling\", 2],\n [\"KHR\", \"KHR\", \"Cambodian Riel\", 2],\n [\"KMF\", \"CF\", \"Comorian Franc\", 0],\n [\"KRW\", \"₩\", \"South Korean Won\", 0],\n [\"KWD\", \"KD\", \"Kuwaiti Dinar\", 3],\n [\"KZT\", \"₸\", \"Kazakhstani Tenge\", 2],\n [\"LBP\", \"LB£\", \"Lebanese Pound\", 0],\n [\"LKR\", \"SLRs\", \"Sri Lankan Rupee\", 2],\n [\"LTL\", \"Lt\", \"Lithuanian Litas\", 2],\n [\"LVL\", \"Ls\", \"Latvian Lats\", 2],\n [\"LYD\", \"LD\", \"Libyan Dinar\", 3],\n [\"MAD\", \"MAD\", \"Moroccan Dirham\", 2],\n [\"MDL\", \"MDL\", \"Moldovan Leu\", 2],\n [\"MGA\", \"MGA\", \"Malagasy Ariary\", 0],\n [\"MKD\", \"MKD\", \"Macedonian Denar\", 2],\n [\"MMK\", \"MMK\", \"Myanma Kyat\", 0],\n [\"MNT\", \"₮\", \"Mongolian Tugrik\", 0],\n [\"MOP\", \"MOP$\", \"Macanese Pataca\", 2],\n [\"MUR\", \"MURs\", \"Mauritian Rupee\", 0],\n [\"MXN\", \"MX$\", \"Mexican Peso\", 2],\n [\"MYR\", \"RM\", \"Malaysian Ringgit\", 2],\n [\"MZN\", \"MTn\", \"Mozambican Metical\", 2],\n [\"NAD\", \"N$\", \"Namibian Dollar\", 2],\n [\"NGN\", \"₦\", \"Nigerian Naira\", 2],\n [\"NIO\", \"C$\", \"Nicaraguan Córdoba\", 2],\n [\"NOK\", \"Nkr\", \"Norwegian Krone\", 2],\n [\"NPR\", \"NPRs\", \"Nepalese Rupee\", 2],\n [\"NZD\", \"NZ$\", \"New Zealand Dollar\", 2],\n [\"OMR\", \"OMR\", \"Omani Rial\", 3],\n [\"PAB\", \"B/.\", \"Panamanian Balboa\", 2],\n [\"PEN\", \"S/.\", \"Peruvian Nuevo Sol\", 2],\n [\"PHP\", \"₱\", \"Philippine Peso\", 2],\n [\"PKR\", \"PKRs\", \"Pakistani Rupee\", 0],\n [\"PLN\", \"zł\", \"Polish Zloty\", 2],\n [\"PYG\", \"₲\", \"Paraguayan Guarani\", 0],\n [\"QAR\", \"QR\", \"Qatari Rial\", 2],\n [\"RON\", \"RON\", \"Romanian Leu\", 2],\n [\"RSD\", \"din.\", \"Serbian Dinar\", 0],\n [\"RUB\", \"₽\", \"Russian Ruble\", 2],\n [\"RWF\", \"RWF\", \"Rwandan Franc\", 0],\n [\"SAR\", \"SR\", \"Saudi Riyal\", 2],\n [\"SDG\", \"SDG\", \"Sudanese Pound\", 2],\n [\"SEK\", \"Skr\", \"Swedish Krona\", 2],\n [\"SGD\", \"S$\", \"Singapore Dollar\", 2],\n [\"SOS\", \"Ssh\", \"Somali Shilling\", 0],\n [\"SYP\", \"SY£\", \"Syrian Pound\", 0],\n [\"THB\", \"฿\", \"Thai Baht\", 2],\n [\"TND\", \"DT\", \"Tunisian Dinar\", 3],\n [\"TOP\", \"T$\", \"Tongan Paʻanga\", 2],\n [\"TRY\", \"₺\", \"Turkish Lira\", 2],\n [\"TTD\", \"TT$\", \"Trinidad and Tobago Dollar\", 2],\n [\"TWD\", \"NT$\", \"New Taiwan Dollar\", 2],\n [\"TZS\", \"TSh\", \"Tanzanian Shilling\", 0],\n [\"UAH\", \"₴\", \"Ukrainian Hryvnia\", 2],\n [\"UGX\", \"USh\", \"Ugandan Shilling\", 0],\n [\"UYU\", \"$U\", \"Uruguayan Peso\", 2],\n [\"UZS\", \"UZS\", \"Uzbekistan Som\", 0],\n [\"VEF\", \"Bs.F.\", \"Venezuelan Bolívar\", 2],\n [\"VND\", \"₫\", \"Vietnamese Dong\", 0],\n [\"XAF\", \"FCFA\", \"CFA Franc BEAC\", 0],\n [\"XOF\", \"CFA\", \"CFA Franc BCEAO\", 0],\n [\"YER\", \"﷼\", \"Yemeni Rial\", 0],\n [\"ZAR\", \"R\", \"South African Rand\", 2],\n [\"ZMK\", \"ZK\", \"Zambian Kwacha\", 0],\n [\"ZWL\", \"ZWL$\", \"Zimbabwean Dollar\", 0],\n];\n","import { BigNumber } from \"bignumber.js\";\n\nimport { FiatCurrenciesService } from \"./fiatCurrenciesService.js\";\nimport { improveAndRethrow } from \"./errorUtils.js\";\n\n// TODO: [dev] return addCommasToAmountString internal method to encapsulate commas adding\n\nexport class AmountUtils {\n static significantDecimalCount = 8;\n static collapsedDecimalCount = 2;\n static maxTotalLength = 12;\n static extraSmallMaxTotalLength = 9; // >=10 breaks transactions list (mobile) and it is hard to avoid this\n static periods = \"..\";\n\n static defaultFiatParams = {\n ticker: true, // If true, currency code will be shown\n enableCurrencySymbols: true, // Enables currency symbols where available. Requires \"ticker: true\"\n collapsible: true, // Enables minimization of amounts over 1 million (example: 1.52M)\n limitTotalLength: true, // Limits the total amount length to maxTotalLength\n extraSmallLength: false, // Limits the total amount length to extraSmallMaxTotalLength\n };\n\n static fiatXs(amount, code) {\n return this.fiat(amount, code, { extraSmallLength: true });\n }\n\n /**\n * Universal method for rendering of fiat amounts, taking into account the rules of\n * the passed fiat currency code.\n *\n * TODO: [feature, high] remove 'number' from accepted types list task_id=1e692bcfabbe487a9d1638fc8ff17448\n * @param amount {BigNumber|number|string|null|undefined} The number value to be trimmed\n * @param currencyCode {string|null} The currency code. Can be omitted if { ticker: false } in the config\n * @param [passedParams={}] {object} Formatting parameters\n * @return {string} Formatted fiat amount string\n */\n static fiat(amount, currencyCode, passedParams = {}) {\n try {\n const params = { ...this.defaultFiatParams, ...passedParams };\n\n if (this._checkIfAmountInvalid(amount, true) || typeof currencyCode !== \"string\") return \"NULL\";\n\n const currencySymbol = FiatCurrenciesService.getCurrencySymbolByCode(currencyCode);\n const currencyDecimalCount = FiatCurrenciesService.getCurrencyDecimalCountByCode(currencyCode);\n\n const trimmedByMaxDigits = BigNumber(amount).toFixed(currencyDecimalCount, BigNumber.ROUND_FLOOR);\n\n let processedAmount = BigNumber(trimmedByMaxDigits);\n if (params.collapsible && processedAmount.gte(BigNumber(\"1000000\"))) {\n processedAmount = this._collapseToMillionsAndFormat(\n processedAmount,\n this.collapsedDecimalCount,\n params\n );\n } else {\n const limitResult = this._limitTotalAmountLengthIfNeeded(trimmedByMaxDigits, params);\n processedAmount = BigNumber(limitResult.processedAmount).toFormat(); // Adds commas to integer part\n }\n\n // Add the currency code or currency symbol, if symbol is enabled and available\n if (params.ticker) {\n if (typeof currencySymbol === \"string\" && params.enableCurrencySymbols) {\n processedAmount = currencySymbol + (currencySymbol.length > 1 ? \" \" : \"\") + processedAmount;\n } else {\n processedAmount = processedAmount + \" \" + currencyCode;\n }\n }\n\n return processedAmount;\n } catch (e) {\n improveAndRethrow(e, \"fiat\", `Passed: ${amount}`);\n }\n }\n\n static defaultCryptoParams = {\n ticker: true, // If true, asset ticker will be shown\n collapsible: true, // Enables minimization of amounts over 1 million (example: 1.52M)\n trim: true, // Cuts the right part of the amount if necessary, and adds \"..\" in the end\n limitTotalLength: true, // Limits the total amount length to maxTotalLength\n extraSmallLength: false, // Limits the total amount length to extraSmallMaxTotalLength\n periods: true, // Whether we add periods (\"..\") as suffix for trimmed numbers\n numberPartsSeparator: true, // Whether we add separators e.g. for 1000000 -> 1,000,000\n };\n\n static cryptoWoTicker(amount, digits) {\n return this.crypto(amount, null, digits, { ticker: false });\n }\n\n static cryptoWoTickerXs(amount, digits) {\n return this.crypto(amount, null, digits, {\n ticker: false,\n extraSmallLength: true,\n });\n }\n\n static cryptoXs(amount, ticker, digits) {\n return this.crypto(amount, ticker, digits, {\n extraSmallLength: true,\n periods: false,\n });\n }\n\n static cryptoFull(amount, ticker, digits) {\n return this.crypto(amount, ticker, digits, {\n collapsible: false,\n trim: false,\n limitTotalLength: false,\n });\n }\n\n static cryptoFullPureNumber(amount, digits) {\n return this.crypto(amount, null, digits, {\n ticker: false,\n collapsible: false,\n trim: false,\n limitTotalLength: false,\n numberPartsSeparator: false,\n });\n }\n\n /**\n * Universal method for rendering of crypto amounts, taking into account the rules of\n * the passed ticker. Requires the number of digits after period to be less of equal to\n * the number of digits, supported by the passed ticker.\n *\n * @param amount {BigNumber|string|null|undefined} The number value to be formatted\n * @param ticker {string|null} Coin ticker\n * @param [digits=8] {number} max digits after the dot\n * @param passedParams {object} Formatting parameters\n * @return {string} Formatted crypto amount string\n */\n static crypto(amount, ticker, digits = this.significantDecimalCount, passedParams) {\n try {\n const params = { ...this.defaultCryptoParams, ...passedParams };\n\n if (this._checkIfAmountInvalid(amount) || (typeof ticker !== \"string\" && params.ticker)) return \"NULL\";\n\n let addPeriods = false;\n\n const amountBigNumber = BigNumber(amount);\n\n let processedAmount = amountBigNumber.toFixed(digits, BigNumber.ROUND_FLOOR);\n processedAmount = this.removeRedundantRightZerosFromNumberString(processedAmount);\n const originalAmountDecimalPlaces = BigNumber(processedAmount).decimalPlaces();\n // Check decimal count and throw an error, if the amount has more decimal digits than supported by the asset\n if (originalAmountDecimalPlaces > digits) {\n const errorMessage = `An attempt to render a crypto value with too many digits after period was made: ${amount}, allowed digits: ${digits}. This is a no-op, since the logical and visually rendered values would differ, which is not acceptable for crypto amounts. Please trim the amount before rendering, using the trimCryptoAmountByCoin(amount, coin) method.`;\n // throw new Error(errorMessage);\n // eslint-disable-next-line no-console\n console.log(errorMessage, \"crypto\");\n }\n\n // Shortening the value to general significant number of digits after period\n if (params.trim) {\n processedAmount = this.removeRedundantRightZerosFromNumberString(\n amountBigNumber.toFixed(this.significantDecimalCount, BigNumber.ROUND_FLOOR)\n );\n addPeriods = originalAmountDecimalPlaces > this.significantDecimalCount;\n }\n\n const limitResult = this._limitTotalAmountLengthIfNeeded(processedAmount, params);\n processedAmount = limitResult.processedAmount;\n addPeriods ||= limitResult.addPeriods;\n\n let wereMillionsCollapsed = false;\n if (params.collapsible && amountBigNumber.gte(\"1000000\")) {\n // Collapse the 1M+ amounts if applicable\n processedAmount = this._collapseToMillionsAndFormat(\n BigNumber(processedAmount),\n this.collapsedDecimalCount,\n params\n );\n wereMillionsCollapsed = true;\n } else if (params.numberPartsSeparator) {\n // Add separators to integer part of the amount\n processedAmount = BigNumber(processedAmount).toFormat();\n }\n\n // Adding periods, if the amount was shortened\n if (params.periods && addPeriods && !wereMillionsCollapsed) {\n processedAmount = processedAmount + this.periods;\n }\n\n // Adding an adaptive (printable/full) ticker\n if (params.ticker && ticker) {\n processedAmount = processedAmount + \" \" + ticker;\n }\n\n return processedAmount;\n } catch (e) {\n improveAndRethrow(e, \"crypto\", `Passed: ${amount}, ${ticker}, ${digits}`);\n }\n }\n\n static _checkIfAmountInvalid(amount, allowNumbers = false) {\n return (\n amount == null ||\n amount === \"\" ||\n (!BigNumber.isBigNumber(amount) &&\n typeof amount !== \"string\" &&\n (!allowNumbers || typeof amount !== \"number\"))\n );\n }\n\n /**\n * Trims all digits after period that exceed the number of digits provided.\n * Use this everywhere when calculating some amount value to ensure the result is correct in terms\n * of max digits allowed by specific currency.\n *\n * @param amount {BigNumber|number|string|null|undefined} The number value to be trimmed.\n * HEX strings also allowed \"0x...\" and JS hex numbers\n * @param digits {number} allowed digits\n * @return {string|null} String with trimmed number or null for invalid amount\n */\n static trim(amount, digits) {\n try {\n if (this._checkIfAmountInvalid(amount, true)) return null;\n return BigNumber(amount).toFixed(digits, BigNumber.ROUND_FLOOR);\n } catch (e) {\n improveAndRethrow(e, \"trim\", `Passed: ${amount}, ${digits}`);\n }\n }\n\n /**\n * Returns integer part of number as a string.\n *\n * @param amount {BigNumber|number|string|null|undefined} The number value to be trimmed.\n * HEX strings also allowed \"0x...\" and JS hex numbers\n * @return {string|null}\n */\n static toIntegerString(amount) {\n return this.trim(amount, 0);\n }\n\n /**\n * Shortens the line length by using a \"1.52M\" representation of big amounts.\n *\n * @param amountBigNumber {BigNumber} The number value to be trimmed\n * @param decimalCount {number} The number of digits after period to keep in millions representation\n * @param params {object} params object\n * @return {string} A shortened string, converted into \"millions\" format, if the amount exceeds 1 million\n */\n static _collapseToMillionsAndFormat(amountBigNumber, decimalCount, params = {}) {\n try {\n // TODO: [feature, moderate] use local format here - take from JS locales (comma/dot etc.)\n const millionBigNumber = BigNumber(\"1000000\");\n const millions = amountBigNumber.div(millionBigNumber).toFixed(decimalCount, BigNumber.ROUND_FLOOR);\n const limitedResult = this._limitTotalAmountLengthIfNeeded(millions, params);\n const formatted = BigNumber(limitedResult.processedAmount).toFormat();\n\n return formatted + \"M\";\n } catch (e) {\n improveAndRethrow(e, \"_collapseAmountAndFormat\", `Passed: ${amountBigNumber.toFixed()}, ${decimalCount}`);\n }\n }\n\n /**\n * @param amountString {string} The amount to be restricted by length\n * @param params {object} Params object used for formatting\n * @return {{processedAmount:string, addPeriods: boolean}} A shortened string\n */\n static _limitTotalAmountLengthIfNeeded(amountString, params) {\n try {\n let addPeriods = false;\n if (params.limitTotalLength || params.extraSmallLength) {\n const maxLength = params.extraSmallLength ? this.extraSmallMaxTotalLength : this.maxTotalLength;\n if (amountString.length > maxLength) {\n const delta = amountString.length - maxLength;\n const currentDecimalsCount = BigNumber(amountString).decimalPlaces();\n const newDecimalCount = currentDecimalsCount - delta;\n amountString = BigNumber(amountString).toFixed(\n newDecimalCount > 2 ? newDecimalCount : 2,\n BigNumber.ROUND_FLOOR\n );\n addPeriods = currentDecimalsCount > newDecimalCount;\n }\n }\n\n return { addPeriods: addPeriods, processedAmount: amountString };\n } catch (e) {\n improveAndRethrow(e, \"_limitTotalAmountLengthIfNeeded\", `Passed: ${amountString}, ${params}`);\n }\n }\n\n /**\n * Safely composes rate string (handles small/big rates).\n * Here we try to calculate a clear rate for the user. The difficulty is that the rate value can be pretty\n * small as some coins have significantly higher price than the other. For such cases we calculate\n * not the \"1 <coin_A> is X <coin B>\" but \"Y <coin_A> is X <coin B>\" where Y is one of the powers of 100.\n *\n * @param leftTicker {string}\n * @param rightTicker {string}\n * @param rate {number|string|BigNumber}\n * @param [rightCurrencyDigitsAfterDots=8] {number}\n * @param [strictRate=false] {boolean} true if the rate is strict and false if approximate\n * @return {string}\n */\n static composeRateText(\n leftTicker,\n rightTicker,\n rate,\n rightCurrencyDigitsAfterDots = this.significantDecimalCount,\n strictRate = false\n ) {\n try {\n if (rightCurrencyDigitsAfterDots < 0) {\n rightCurrencyDigitsAfterDots = this.significantDecimalCount;\n }\n let leftNumber = BigNumber(\"1\");\n const multiplier = BigNumber(\"100\");\n const maxAttemptsToGetRate = 10;\n let right = null;\n const rateBigNumber = BigNumber(rate);\n if (BigNumber(rate).eq(\"0\")) {\n right = BigNumber(\"0\");\n } else if (rate && (BigNumber.isBigNumber(rate) || !Number.isNaN(+rate))) {\n for (let i = 0; i < maxAttemptsToGetRate; ++i) {\n const rightNumberAttempt = rateBigNumber\n .times(leftNumber)\n .toFixed(rightCurrencyDigitsAfterDots, BigNumber.ROUND_FLOOR);\n if (!BigNumber(rightNumberAttempt).eq(BigNumber(\"0\"))) {\n right = BigNumber(rightNumberAttempt);\n break;\n } else {\n leftNumber = leftNumber.times(multiplier);\n }\n }\n }\n const leftAmountString = AmountUtils.toIntegerString(leftNumber);\n const rightAmountString =\n right != null ? right.toFixed(rightCurrencyDigitsAfterDots, BigNumber.ROUND_FLOOR) : null;\n return `${leftAmountString} ${leftTicker} ${strictRate ? \"=\" : \"~\"} ${\n rightAmountString ?? \"?\"\n } ${rightTicker}`;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\"composeRateText\", e);\n }\n return \"-\";\n }\n\n /**\n * @param numberAsAString {string}\n * @return {string}\n */\n static removeRedundantRightZerosFromNumberString(numberAsAString) {\n try {\n const parts = (\"\" + numberAsAString).split(\".\");\n let right = parts[1];\n while (right?.length && right[right.length - 1] === \"0\") {\n right = right.slice(0, right.length - 1);\n }\n\n return `${parts[0]}${right?.length ? `.${right}` : \"\"}`;\n } catch (e) {\n improveAndRethrow(e, \"removeRedundantRightZerosFromNumberString\", `Passed: ${numberAsAString}`);\n }\n }\n}\n","import React, { useEffect, useState } from \"react\";\nimport { BigNumber } from \"bignumber.js\";\n\nimport s from \"./amount-input.module.scss\";\nimport WalletIcon from \"../../../assets/wrappedImages/walletIcon.jsx\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\nimport { InputValuesProviders } from \"../../utils/inputValueProviders.js\";\nimport { logErrorOrOutputToConsole } from \"../../../common/errorUtils.js\";\n\nimport { TitleBox } from \"../../atoms/TitleBox/TitleBox.jsx\";\nimport { AmountUtils } from \"../../../common/amountUtils.js\";\nimport { AssetSelection } from \"../../atoms/AssetSelection/AssetSelection.jsx\";\nimport { Validation } from \"../../atoms/Validation/Validation.jsx\";\n\nexport const AmountInput = React.forwardRef(\n (\n {\n label = \"\",\n handleCoinAmountChange = btcAmount => {},\n handleFiatAmountChange = fiatAmount => {},\n handleChangeAssetClick = () => {},\n handleBalanceValidationChange = isValid => {},\n disabled,\n locked,\n alertText,\n predefinedValue,\n children,\n ticker,\n tickerPrintable,\n assetDecimalPlaces,\n assetBalance = { fiatAmount: null, assetAmount: null },\n assetIconSrc,\n assetIconProtocolSrc,\n fallbackAssetIconSrc,\n isSendAll = null,\n handleSendAllClick = () => {},\n showBalance = false,\n showBalanceValidation = false,\n showChangeAssetButton = false,\n changeAssetButtonProtocol,\n changeAssetButtonDisabled = false,\n upperFormPosition,\n lowerFormPosition,\n errorEncountered,\n updateAssetInputTo = null,\n estimateAmount = false,\n isLoading = false,\n cryptoAssetToFiatRate = null,\n fiatCurrencyCode = null,\n fiatCurrencyDecimals = null,\n linkButtonActiveText = null,\n linkButtonInactiveText = null,\n balanceLoaderText = null,\n fiatInputPlaceholderText = null,\n },\n buttonForwardRef\n ) => {\n const callHandlingErrors = useCallHandlingErrors();\n\n const [coinAmountValue, setCoinAmountValue] = useState(\"\");\n const [coinAmountPlaceholder, setCoinAmountPlaceholder] = useState(\"0\");\n const [fiatAmountValue, setFiatAmountValue] = useState(\"\");\n const [interactedWith, setInteractedWith] = useState(false);\n const [fiatAmountAutoFocus, setFiatAmountAutoFocus] = useState(false);\n const [isInFocus, setIsInFocus] = useState(false);\n const [highlightBalance, setHighlightBalance] = useState(false);\n const [highlightInput, setHighlightInput] = useState(false);\n\n const resetToDefault = () => {\n setInteractedWith(false);\n setFiatAmountAutoFocus(false);\n };\n\n useEffect(() => {\n if (updateAssetInputTo !== null) handleChangeAmount(updateAssetInputTo?.toString(), false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [updateAssetInputTo]);\n\n const handleChangeAmount = (newAmountString, handlerEnabled = true) => {\n (async () => {\n try {\n const correctedAmount = InputValuesProviders.provideFormatOfFloatValueByInputString(\n newAmountString,\n assetDecimalPlaces\n );\n setCoinAmountValue(correctedAmount);\n if (handlerEnabled) handleCoinAmountChange(correctedAmount);\n\n if (correctedAmount !== \"\" && cryptoAssetToFiatRate != null) {\n const fiatAmount = BigNumber(correctedAmount)\n .times(cryptoAssetToFiatRate)\n .toFixed(fiatCurrencyDecimals);\n setFiatAmountValue(fiatAmount);\n handleFiatAmountChange(fiatAmount);\n } else {\n setFiatAmountValue(\"\");\n }\n } catch (e) {\n setFiatAmountValue(null);\n logErrorOrOutputToConsole(e);\n }\n })();\n setInteractedWith(true);\n };\n\n const handleChangeAmountFiat = newAmountString => {\n if (cryptoAssetToFiatRate == null) return;\n (async () => {\n try {\n const correctedFiatAmount = InputValuesProviders.provideFormatOfFloatValueByInputString(\n newAmountString,\n fiatCurrencyDecimals\n );\n setFiatAmountValue(correctedFiatAmount);\n handleFiatAmountChange(correctedFiatAmount);\n\n const coinAmount =\n correctedFiatAmount !== \"\"\n ? BigNumber(correctedFiatAmount).div(cryptoAssetToFiatRate).toFixed(assetDecimalPlaces)\n : \"0\";\n const coinsAmount = BigNumber(coinAmount).isZero() ? \"\" : coinAmount;\n setCoinAmountValue(coinsAmount);\n handleCoinAmountChange(coinsAmount);\n } catch (e) {\n setFiatAmountValue(null);\n logErrorOrOutputToConsole(e);\n }\n })();\n };\n\n const placeholderByDecimalCount = decimalCount =>\n \"0\" + (decimalCount > 0 ? \".\" + \"0\".repeat(decimalCount) : \"\");\n\n const handleFiatInteraction = () => {\n if (disabled || locked) return;\n setFiatAmountAutoFocus(true);\n setInteractedWith(true);\n };\n\n useEffect(() => {\n predefinedValue != null && handleChangeAmount(predefinedValue + \"\");\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [predefinedValue]);\n\n useEffect(() => {\n try {\n setCoinAmountPlaceholder(placeholderByDecimalCount(assetDecimalPlaces));\n } catch (e) {\n logErrorOrOutputToConsole(e);\n }\n resetToDefault();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ticker]);\n\n // Check if input & balance highlights are needed after a change in either the asset amount or the balance\n useEffect(() => {\n if (!showBalanceValidation || assetBalance?.assetAmount == null) return;\n\n let enableHighlight = BigNumber(coinAmountValue).gt(assetBalance?.assetAmount);\n\n handleBalanceValidationChange(enableHighlight);\n setHighlightBalance(enableHighlight);\n setHighlightInput(enableHighlight);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [coinAmountValue, assetBalance]);\n\n // Clearing the custom focus upon disabling or enabling the form\n useEffect(() => setIsInFocus(false), [disabled, locked]);\n\n return (\n <>\n <TitleBox\n title={label}\n linkText={isSendAll !== null ? (isSendAll ? linkButtonActiveText : linkButtonInactiveText) : null}\n linkButtonClick={handleSendAllClick}\n >\n <div\n className={[\n s[\"amount-input-container\"],\n isInFocus ? s[\"focus\"] : \"\",\n errorEncountered || highlightInput ? s[\"error-encountered\"] : \"\",\n upperFormPosition ? s[\"upper-form-position\"] : \"\",\n lowerFormPosition ? s[\"lower-form-position\"] : \"\",\n ].join(\" \")}\n >\n <div\n className={`${s[\"amount-input-container-input-wrapper\"]} ${disabled ? s[\"disabled\"] : \"\"}\n ${children ? s[\"bottom-margin\"] : \"\"}`}\n >\n {showBalance ? (\n <div className={s[\"asset-balance\"] + \" \" + (highlightBalance ? s[\"red\"] : \"\")}>\n <WalletIcon />\n <p>\n {assetBalance?.assetAmount != null &&\n assetBalance?.fiatAmount != null &&\n ticker &&\n fiatCurrencyCode ? (\n <>\n {AmountUtils.cryptoFull(\n assetBalance.assetAmount,\n tickerPrintable,\n assetDecimalPlaces\n )}\n <span>\n {\" ~ \" +\n AmountUtils.fiat(assetBalance.fiatAmount, fiatCurrencyCode)}\n </span>\n </>\n ) : (\n balanceLoaderText\n )}\n </p>\n </div>\n ) : (\n \"\"\n )}\n\n <div className={s[\"requested-amount-coin\"]}>\n <span className={s[\"requested-amount-coin-currency\"]}>\n {tickerPrintable ? (estimateAmount ? \"~ \" : \"\") + tickerPrintable : \"\"}\n </span>\n {!isLoading ? (\n <input\n type=\"text\"\n inputMode=\"decimal\"\n value={coinAmountValue}\n onChange={e => handleChangeAmount(e.target.value)}\n placeholder={coinAmountPlaceholder}\n className={s[\"requested-amount-coin-input\"]}\n disabled={disabled || locked}\n onFocus={e => callHandlingErrors(() => setIsInFocus(true), e)}\n onBlur={e => callHandlingErrors(() => setIsInFocus(false), e)}\n />\n ) : (\n <div className={s[\"requested-amount-coin-skeleton\"]}>\n <span\n className={\n s[\"requested-amount-coin-skeleton-content\"] + \" \" + s[\"skeleton-dark\"]\n }\n ></span>\n </div>\n )}\n </div>\n {fiatCurrencyCode !== null ? (\n <>\n <div\n className={\n s[\"requested-amount-fiat\"] + (interactedWith ? \" \" + s[\"interacted\"] : \"\")\n }\n >\n {interactedWith ? (\n <>\n <span className={s[\"requested-amount-fiat-currency\"]}>\n {(estimateAmount ? \"~ \" : \"\") + fiatCurrencyCode}\n </span>\n <input\n type=\"text\"\n inputMode=\"decimal\"\n className={s[\"requested-amount-fiat-input\"]}\n value={fiatAmountValue}\n disabled={disabled || locked}\n onChange={e => handleChangeAmountFiat(e.target.value)}\n placeholder={placeholderByDecimalCount(fiatCurrencyDecimals)}\n autoFocus={fiatAmountAutoFocus}\n onFocus={e => callHandlingErrors(() => setIsInFocus(true), e)}\n onBlur={e => callHandlingErrors(() => setIsInFocus(false), e)}\n />\n </>\n ) : (\n <span\n className={s[\"requested-amount-fiat-placeholder\"]}\n onClick={e => callHandlingErrors(() => handleFiatInteraction(), e)}\n >\n {fiatInputPlaceholderText}\n </span>\n )}\n </div>\n </>\n ) : null}\n </div>\n {showChangeAssetButton && ticker ? (\n <div className={s[\"amount-input-container-button-wrapper\"]} ref={buttonForwardRef}>\n <AssetSelection\n assetIconSrc={assetIconSrc}\n assetIconProtocolSrc={assetIconProtocolSrc}\n fallbackSrc={fallbackAssetIconSrc}\n handleClick={handleChangeAssetClick}\n disabled={changeAssetButtonDisabled}\n protocolName={changeAssetButtonProtocol}\n />\n </div>\n ) : (\n \"\"\n )}\n {children}\n </div>\n </TitleBox>\n {alertText ? <Validation text={alertText} /> : null}\n </>\n );\n }\n);\n","import React, { forwardRef } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./textarea.module.scss\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors\";\nimport { Validation } from \"../Validation/Validation\";\n\n/**\n * A textarea component with optional adaptive height and validation messaging.\n *\n * @param {string} name - The name of the textarea.\n * @param {function} onChange - Handler for change events.\n * @param {string} placeholder - Placeholder text for the textarea.\n * @param {string} alertText - Text for the alert message.\n * @param {string} successAlertText - Text for the success alert message.\n * @param {string} value - Value of the textarea.\n * @param {string} label - Label text for the textarea.\n * @param {string|null} id - ID for the textarea element.\n * @param {boolean} autoFocus - If the textarea should be auto-focused.\n * @param {boolean} fullHeight - If the textarea should be full height.\n * @param {boolean} smallText - If the textarea should use small text styling.\n * @param {boolean} adaptiveHeight - If the textarea should adjust its height based on content.\n * @param {boolean} disabled - If the textarea is disabled.\n * @param {boolean} errorEncountered - If there is an error related to the textarea.\n * @param {boolean} ignoreEnter - If Enter key presses should be ignored.\n */\nexport const Textarea = forwardRef(\n (\n {\n name = \"\",\n onChange = () => {},\n placeholder = \"\",\n alertText = \"\",\n successAlertText = \"\",\n value = \"\",\n label = \"\",\n id = null,\n autoFocus = false,\n fullHeight = false,\n smallText = false,\n adaptiveHeight = false,\n disabled = false,\n errorEncountered = false,\n ignoreEnter = false,\n },\n ref\n ) => {\n const callHandlingErrors = useCallHandlingErrors();\n\n const onChangeProxy = e => {\n if (ignoreEnter) e.target.value = e.target.value.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n\n if (e.target?.value.indexOf(\"\\n\") === -1 || !ignoreEnter) onChange(e);\n };\n\n return (\n <div className={s[\"textarea\"] + ` ${fullHeight ? \" \" + s[\"full-height\"] : \"\"}`}>\n {label ? (\n <label htmlFor={id} className={s[\"textarea-input-label\"]}>\n {label}\n </label>\n ) : null}\n\n {adaptiveHeight ? (\n <TextareaAutosize\n className={\n s[\"textarea-input\"] +\n \" \" +\n s[\"adaptive-height\"] +\n (disabled ? \" \" + s[\"disabled\"] : \"\") +\n (errorEncountered ? \" \" + s[\"error-encountered\"] : \"\")\n }\n minRows={1}\n maxRows={3}\n onChange={e => callHandlingErrors(onChangeProxy, e)}\n placeholder={placeholder}\n value={value}\n id={id}\n autoFocus={autoFocus}\n ref={ref}\n disabled={disabled}\n />\n ) : (\n <textarea\n name={name}\n className={\n s[\"textarea-input\"] +\n ` ${fullHeight ? s[\"full-height\"] : \"\"} ${smallText ? s[\"small-text\"] : \"\"} ${\n disabled ? s[\"disabled\"] : \"\"\n }`\n }\n onChange={e => callHandlingErrors(onChange, e)}\n placeholder={placeholder}\n value={value}\n id={id}\n autoFocus={autoFocus}\n ref={ref}\n disabled={disabled}\n />\n )}\n\n {alertText || successAlertText ? (\n <Validation text={alertText || successAlertText} isSuccessAlert={!alertText} />\n ) : null}\n </div>\n );\n }\n);\n\nTextarea.propTypes = {\n name: PropTypes.string,\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n alertText: PropTypes.string,\n successAlertText: PropTypes.string,\n value: PropTypes.string,\n label: PropTypes.string,\n id: PropTypes.string,\n autoFocus: PropTypes.bool,\n fullHeight: PropTypes.bool,\n smallText: PropTypes.bool,\n adaptiveHeight: PropTypes.bool,\n disabled: PropTypes.bool,\n errorEncountered: PropTypes.bool,\n ignoreEnter: PropTypes.bool,\n};\n\nTextarea.defaultProps = {\n name: \"\",\n onChange: () => {},\n placeholder: \"\",\n alertText: \"\",\n successAlertText: \"\",\n value: \"\",\n label: \"\",\n id: null,\n autoFocus: false,\n fullHeight: false,\n smallText: false,\n adaptiveHeight: false,\n disabled: false,\n errorEncountered: false,\n ignoreEnter: false,\n};\n","import React from \"react\";\n\nimport s from \"./rate-selector.module.scss\";\n\nexport const RateSelector = ({\n isFixed = false,\n setIsFixed = () => {},\n translations = {\n floatingRate: \"Floating rate\",\n fixedRate: \"Fixed rate\",\n },\n}) => {\n return (\n <div className={s[\"rate-selector\"]}>\n <div\n className={`${s[\"rate-selector-item\"]} ${!isFixed ? s[\"selected\"] : \"\"}`}\n onClick={() => setIsFixed(false)}\n >\n <div className={s[\"rate-selector-item-text\"]}>{translations.floatingRate}</div>\n </div>\n <div\n className={`${s[\"rate-selector-item\"]} ${isFixed ? s[\"selected\"] : \"\"}`}\n onClick={() => setIsFixed(true)}\n >\n <div className={s[\"rate-selector-item-text\"]}>{translations.fixedRate}</div>\n </div>\n </div>\n );\n};\n","import { BigNumber } from \"bignumber.js\";\nimport React, { useEffect, useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./swap-form.module.scss\";\n\nimport { useReferredState } from \"../../hooks/useReferredState.js\";\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\n\nimport { AmountUtils } from \"../../../common/amountUtils.js\";\nimport { TitleBox } from \"../../atoms/TitleBox/TitleBox.jsx\";\nimport { AmountInput } from \"../../molecules/AmountInput/AmountInput.jsx\";\nimport { Validation } from \"../../atoms/Validation/Validation.jsx\";\nimport { Button } from \"../../atoms/buttons/Button/Button.jsx\";\nimport { Textarea } from \"../../atoms/Textarea/Textarea.jsx\";\nimport { TOOLTIP_POSITIONS } from \"../../../constants/atoms/Tooltip/tooltip.jsx\";\nimport { RateSelector } from \"../../atoms/RateSelector/RateSelector.jsx\";\n\n/**\n * This is the type definition of a function used inside SwapForm to compose the URL for the hero button.\n *\n * @function\n * @name composeConfirmButtonTo\n * @param {string} [fromTicker] - Ticker symbol of the asset being sent.\n * @param {string} [toTicker] - Ticker symbol of the asset being received.\n * @param {string} [fromAmount] - Amount of the asset being sent.\n * @return {string} Full URL or relative URL that can be used for <a href=\"...\" />.\n */\n\n/**\n * Common click handler without parameters and return value, just your logic execution.\n *\n * @function\n * @name handleClick\n * @return {void}\n */\n\n/**\n * Form executes this function when swap creation info retrieval is finished successfully.\n *\n * @function\n * @name setSwapCreationEstimation\n * @param {BaseSwapCreationInfo} details - Details of the swap creation estimation.\n * @return {void}\n */\n\n/**\n * Error handler for unexpected errors.\n *\n * @function\n * @name handleUnexpectedError\n * @param {Error} error - The unexpected error encountered.\n * @return {void}\n */\n\n/**\n * Should implement the logic with rotating assets (if you want \"to\" to become \"from\" and \"from\" to become \"to\").\n *\n * @function\n * @name rotateAssets\n * @param {string} sendingAssetTicker - Ticker symbol of the asset being sent.\n * @param {string} receivingAssetTicker - Ticker symbol of the asset being received.\n * @return {void}\n */\n\n/**\n * Error handler for standard errors that we can recognize.\n *\n * @function\n * @name handleSwapServiceError\n * @param {string} errorCode - Error code returned as \"reason\" from your handlers.\n * @param {function} setValidationContent - Function to set the validation error message on the form.\n * @param {function} setBalanceValid - Function to set the balance validity, accepts a boolean.\n * @param {function} setMinimalAmountValid - Function to set the minimal amount validity, accepts a boolean.\n * @param {function} setMaximumAmountValid - Function to set the maximum amount validity, accepts a boolean.\n * @param {function} setIsPairSupported - Function to set the pair support status, accepts a boolean.\n * @param {function} setIsSameCoins - Function to set the status if the same coins are used, accepts a boolean.\n * @return {void}\n */\n\n/**\n * Handler for the confirm button click. You should implement errors handling inside it.\n *\n * @function\n * @name handleConfirmButtonClick\n * @param {function} resetButtonLoader - callback resetting the confirm button loader\n * @param {function} setValidationContent - Function to set the validation error message on the form.\n * @param {function} setBalanceValid - Function to set the balance validity, accepts a boolean.\n * @param {function} setMinimalAmountValid - Function to set the minimal amount validity, accepts a boolean.\n * @param {function} setMaximumAmountValid - Function to set the maximum amount validity, accepts a boolean.\n * @param {function} setIsPairSupported - Function to set the pair support status, accepts a boolean.\n * @param {function} setIsSameCoins - Function to set the status if the same coins are used, accepts a boolean.\n * @return {void}\n */\n\n/**\n * Async function that retrieves swap creation info by given params.\n *\n * @function\n * @name retrieveSwapDetails\n * @param {string} sendingAssetTicker - Ticker symbol of the asset being sent.\n * @param {string} receivingAssetTicker - Ticker symbol of the asset being received.\n * @param {string} amount - Amount of the asset to be swapped.\n * @param {boolean} [isSwapAll=false] - Indicates if the swap should use all available balance.\n * @return {Promise<{\n * result: false,\n * reason: string,\n * min: (string|null),\n * max: (string|null),\n * rate: (string|undefined),\n * fiatMin: (number|null),\n * fiatMax: (number|null)\n * }|{\n * result: true,\n * swapCreationInfo: BaseSwapCreationInfo\n * }>}\n */\n\n/**\n * Async function that retrieves initial swap details for a pair like whether the pair is available, min/max swappable amounts, etc.\n *\n * @function\n * @name retrieveInitialSwapData\n * @param {string} sendingAssetTicker - Ticker symbol of the asset being sent.\n * @param {string} receivingAssetTicker - Ticker symbol of the asset being received.\n * @return {Promise<{\n * result: true,\n * min: string,\n * fiatMin: (number|null),\n * max: string,\n * fiatMax: (number|null),\n * rate: (string|null)\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n\n/**\n * Swap form provides basic functionality for entering to/from amounts both in crypto and fiat, switching assets,\n * selecting assets, showing balance for assets. It gracefully handles unavailable fiat rates and can work\n * both with and without a wallet environment (without balances).\n *\n * @param {object} props - Props object for SwapForm component.\n * @param {string} props.sendingAssetTicker - Rabbit format of the ticker symbol for the asset being sent.\n * @param {string} props.receivingAssetTicker - Rabbit format of the ticker symbol for the asset being received.\n * @param {number} [props.sendingAssetDecimalCount=AmountUtils.significantDecimalCount] - Decimal count for the sending asset.\n * @param {number} [props.receivingAssetDecimalCount=AmountUtils.significantDecimalCount] - Decimal count for the receiving asset.\n * @param {string} props.sendingAssetTickerPrintable - Standard ticker symbol for the sending asset.\n * @param {string} props.receivingAssetTickerPrintable - Standard ticker symbol for the receiving asset.\n * @param {string} [props.sendingAssetProtocol] - Protocol name to be displayed in text on the change asset button.\n * @param {string} [props.receivingAssetProtocol] - Protocol name to be displayed in text on the change asset button.\n * @param {string} props.sendingAssetIconSrc - Source URL for the sending asset icon.\n * @param {string} [props.sendingAssetProtocolIconSrc=null] - Optional source URL for the sending asset protocol icon.\n * @param {string} props.receivingAssetIconSrc - Source URL for the receiving asset icon.\n * @param {string} [props.receivingAssetProtocolIconSrc=null] - Optional source URL for the receiving asset protocol icon.\n * @param {string} [props.fallBackAssetIconSrc=null] - Optional source URL for a fallback icon used when an icon fails to load.\n * @param {string} [props.sendingAssetFeeCoinTickerPrintable] - Optional standard ticker symbol for the fee coin of the sending asset.\n * @param {string} [props.sendingAssetBalance] - Balance of the sending asset.\n * @param {string} [props.receivingAssetBalance] - Balance of the receiving asset.\n * @param {handleClick} props.handleChangeSendingAssetClick - Function to handle clicking on the change sending asset button.\n * @param {handleClick} props.handleChangeReceivingAssetClick - Function to handle clicking on the change receiving asset button.\n * @param {handleConfirmButtonClick} props.handleConfirmButtonClick - Function to handle clicking on the confirm button.\n * @param {composeConfirmButtonTo} props.composeConfirmButtonTo - Function to compose the URL for the confirm button.\n * @param {setSwapCreationEstimation} props.setSwapCreationEstimation - Function to set the swap creation estimation.\n * @param {handleUnexpectedError} props.handleUnexpectedError - Function to handle unexpected errors.\n * @param {rotateAssets} props.rotateAssets - Function to rotate the assets (swap sending and receiving assets).\n * @param {string} [props.preservedAmount=null] - Amount to be preserved.\n * @param {handleSwapServiceError} props.handleSwapServiceError - Function to handle standard errors that we can recognize.\n * @param {boolean} [props.formHasBalance] - Indicates if the form has balance information.\n * @param {retrieveSwapDetails} props.retrieveSwapDetails - Function to retrieve swap details based on the given parameters.\n * @param {retrieveInitialSwapData} props.retrieveInitialSwapData - Function to retrieve initial swap data for a given pair of assets.\n * @param {number} props.triggerDataUpdateResetting - Number to reset interval updating the data periodically.\n * @param {React.Ref} props.fromAssetSelectionButtonRef - Reference to the from asset selection button.\n * @param {React.Ref} props.toAssetSelectionButtonRef - Reference to the to asset selection button.\n * @param {number|string} [props.sendingAssetToFiatRate] - Rate for converting the sending asset to fiat.\n * @param {number|string} [props.receivingAssetToFiatRate] - Rate for converting the receiving asset to fiat.\n * @param {string} [props.fiatCurrencyCode] - Code for the fiat currency.\n * @param {number} [props.fiatCurrencyDecimals] - Decimal places for the fiat currency.\n * @param {boolean} [props.formHasFiat] - Indicates if the form supports fiat currency.\n * @param {string|null} [props.termsOfUseUrl] - Terms of use URL, shown only if both terms & privacy policy passed.\n * @param {string|null} [props.privacyPolicyUrl] - Privacy policy of use URL, shown only if both terms & privacy policy passed.\n * @param {object} [props.translations] - Object containing translations, default English texts will be used if omitted.\n * @param {string} props.swapSeparatorIconSrc - Source URL for the swap separator icon.\n * @param {boolean} props.swapButtonAlwaysActive - Setting that allows the form state to proceed to the next step regardless of validity.\n * @return {JSX.Element} Rendered SwapForm component.\n * @constructor\n */\nexport const SwapForm = ({\n sendingAssetTicker,\n receivingAssetTicker,\n sendingAssetDecimalCount = AmountUtils.significantDecimalCount,\n receivingAssetDecimalCount = AmountUtils.significantDecimalCount,\n sendingAssetTickerPrintable,\n receivingAssetTickerPrintable,\n sendingAssetProtocol,\n receivingAssetProtocol,\n sendingAssetIconSrc,\n sendingAssetProtocolIconSrc = null,\n receivingAssetIconSrc,\n receivingAssetProtocolIconSrc = null,\n fallBackAssetIconSrc = null,\n sendingAssetFeeCoinTickerPrintable,\n sendingAssetBalance,\n receivingAssetBalance,\n handleChangeSendingAssetClick,\n handleChangeReceivingAssetClick,\n handleConfirmButtonClick = (\n resetButtonLoader,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n ) => {},\n composeConfirmButtonTo = (fromTicker, toTicker, fromAmount) => \"\",\n setSwapCreationEstimation = details => {},\n handleUnexpectedError = error => {},\n rotateAssets = (fromTicker, toTicker) => {},\n preservedAmount = null,\n handleSwapServiceError = (\n errorCode,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n ) => {},\n formHasBalance = false,\n retrieveSwapDetails = async (sendingAssetTicker, receivingAssetTicker, amount, isSwapAll = false) => {},\n retrieveInitialSwapData = async (sendingAssetTicker, receivingAssetTicker) => {},\n triggerDataUpdateResetting = 0,\n fromAssetSelectionButtonRef = null,\n toAssetSelectionButtonRef = null,\n sendingAssetToFiatRate = null,\n receivingAssetToFiatRate = null,\n fiatCurrencyCode = null,\n fiatCurrencyDecimals = null,\n formHasFiat = true,\n termsOfUseUrl = null,\n privacyPolicyUrl = null,\n translations = {\n swapAllButtonTitles: {\n enable: \"Swap all\",\n cancel: \"Cancel\",\n },\n input: {\n fiatPlaceholder: \"Enter fiat amount\",\n balanceLoaderText: \"Loading balance...\",\n },\n consents: {\n consentText: 'By clicking \"Swap\" you agree with Rabbit Swap\\'s',\n termsOfUse: \"Terms of Use\",\n and: \"and\",\n privacyPolicy: \"Privacy Policy\",\n },\n informationBlock: {\n minimumAmount: \"Minimal amount: \",\n maximumAmount: \"Maximum amount: \",\n transactionFee: \"Network fee: \",\n calculatingNetworkFee: \"Calculating network fee..\",\n loadingMinimalAmount: \"Loading minimal amount..\",\n swapRate: \"Rate: \",\n calculatingSwapRates: \"Calculating swap rates..\",\n pairNotAvailable: \"Pair is not available now. Please, try again later or choose another pair.\",\n },\n addressFields: {\n addressTitle: \"Recepient address\",\n extraIdTitle: \"Extra ID (optional)\",\n extraIdPlaceholder: \"Example: ABC123\",\n extraIdNotice:\n \"Please check if your recipient address requires a 'Memo' or 'Destination Tag' - sometimes called a tag, ID, label, or a note. Exchanges may require such ID for the deposit. Including this identifier is crucial when required, as omitting or misentering it can result in lost assets.\",\n },\n rateSelector: {\n floatingRate: \"Floating rate\",\n fixedRate: \"Fixed rate\",\n },\n confirmButtonText: \"Swap\",\n },\n swapSeparatorIconSrc,\n swapButtonAlwaysActive = false,\n recepientAddress,\n recepientAddressExtraId,\n recepientAddressValid = true,\n recepientAddressExtraIdValid = true,\n setRecepientAddress,\n setRecepientAddressExtraId,\n recepientAddressExtraIdAvailable = false,\n displayRateSelector = false,\n}) => {\n const DETAIL_REFRESH_INTERVAL_MS = 1.5 * 60000;\n const IS_FIXED_BY_DEFAULT = false;\n\n // Updating the states below will insert the new value into the send or receive input field\n const [updateSendInputTo, setUpdateSendInputTo] = useState(preservedAmount ?? null);\n const [updateReceiveInputTo, setUpdateReceiveInputTo] = useState(null);\n\n const [sendAssetAmount, setSendAssetAmount] = useReferredState(\n preservedAmount == null || preservedAmount === \"\" ? null : preservedAmount\n );\n\n const [swapRate, setSwapRate] = useState();\n const [minimalAmount, setMinimalAmount] = useReferredState(null);\n const [maximumAmount, setMaximumAmount] = useReferredState(null);\n const [validationContent, setValidationContent] = useState();\n\n const [minimalAmountValid, setMinimalAmountValid] = useState(true); // Whether the amount is above the minimal amount\n const [maximumAmountValid, setMaximumAmountValid] = useState(true);\n const [isPairSupported, setIsPairSupported] = useState(true);\n const [isSameCoins, setIsSameCoins] = useState(false);\n const [isSwapCalculated, setIsSwapCalculated] = useState(false);\n const [readyToSwap, setReadyToSwap] = useState(false); // Basically a param that enables/disables the \"Next\" button\n // TODO: [refactoring, moderate] instead of handling preservedAmount at a lot of cases below, just\n // write single useEffect setting sendAssetAmount to the=is passed value and simplify the logic below. task_id=6453251e49b04c5e88a3cc771479ffb5\n const [isAmountZero, setIsAmountZero] = useState(preservedAmount == null || String(preservedAmount) === \"0\");\n const [isLoading, setIsLoading] = useReferredState(false); // Whether the form is in the progress of loading some data (new rates, for example)\n const [isAddressFieldEnabled, setIsAddressFieldEnabled] = useState(false);\n const [isFixedRate, setIsFixedRate] = useReferredState(null);\n\n const [confirmButtonTo, setConfirmButtonTo] = useState(\n composeConfirmButtonTo(sendingAssetTicker, receivingAssetTicker, preservedAmount)\n );\n\n const [transactionFee, setTransactionFee] = useState();\n const [balanceValid, setBalanceValid] = useState(true); // Whether the amount is less than total balance\n const [isSwapAll, setIsSwapAll] = useReferredState(null);\n const [swapAllButtonLoaderReSetter, setSwapAllButtonLoaderReSetter] = useState([]);\n\n const [dataUpdateTimeoutId, setDataUpdateTimeoutId] = useReferredState(null);\n const [idleDataUpdateTimeoutId, setIdleDataUpdateTimeoutId] = useReferredState(null);\n\n const callHandlingErrors = useCallHandlingErrors();\n\n const recalculationDelayOnTyping = 1000;\n\n const handleSendAssetAmountChange = amount => {\n if (amount != null && amount !== \"\") {\n setUpdateReceiveInputTo(AmountUtils.trim(BigNumber(amount).times(swapRate), receivingAssetDecimalCount));\n } else {\n setUpdateReceiveInputTo(\"\");\n }\n setSendAssetAmount(amount);\n };\n\n const handleReceiveAssetAmountChange = amount => {\n let sendAssetAmount = \"\";\n if (amount != null && amount !== \"\") {\n sendAssetAmount = AmountUtils.trim(BigNumber(amount).div(swapRate), sendingAssetDecimalCount);\n }\n setUpdateSendInputTo(sendAssetAmount);\n setSendAssetAmount(sendAssetAmount);\n };\n\n const handleMinimalAmountClick = () => {\n if (!minimalAmount.current) return;\n\n setUpdateSendInputTo(minimalAmount.current?.crypto);\n handleSendAssetAmountChange(minimalAmount.current?.crypto);\n };\n\n const handleMaximumAmountClick = () => {\n if (!maximumAmount.current) return;\n\n setUpdateSendInputTo(maximumAmount.current?.crypto);\n handleSendAssetAmountChange(maximumAmount.current?.crypto);\n };\n\n const handleSwapAllClick = resetButtonLoader => {\n setIsSwapAll(prev => {\n if (prev) {\n // Setting amount inputs to empty string if we are handling the disabling of previously enabled swap all\n setUpdateSendInputTo(\"\");\n setUpdateReceiveInputTo(\"\");\n setSendAssetAmount(null);\n }\n return !prev;\n });\n setSwapAllButtonLoaderReSetter([resetButtonLoader]);\n };\n\n const processMinMaxAmounts = amount => {\n if (amount === null) return;\n\n setMaximumAmountValid(\n !maximumAmount.current || BigNumber(amount).eq(\"0\") || BigNumber(amount).lte(maximumAmount.current.crypto)\n );\n setMinimalAmountValid(\n !minimalAmount.current || BigNumber(amount).eq(\"0\") || BigNumber(amount).gte(minimalAmount.current?.crypto)\n );\n };\n\n const requestDataRefresh = (amount, immediately = false, isSwapAll = false) => {\n try {\n clearTimeout(dataUpdateTimeoutId.current);\n\n if (isSwapAll) {\n loadFullEstimation(null);\n return;\n }\n\n if (!amount) {\n return;\n }\n\n if (BigNumber(amount).eq(\"0\")) {\n if (immediately) {\n loadMinimalAmountAndSwapRate(true);\n } else {\n setDataUpdateTimeoutId(\n setTimeout(() => loadMinimalAmountAndSwapRate(true), recalculationDelayOnTyping)\n );\n }\n } else {\n if (immediately) {\n loadFullEstimation(amount, preservedAmount && String(preservedAmount) !== \"0\" ? true : undefined);\n } else {\n setDataUpdateTimeoutId(setTimeout(() => loadFullEstimation(amount), recalculationDelayOnTyping));\n }\n }\n } catch (e) {\n handleUnexpectedError(e);\n }\n };\n\n const setAmountLimitsAndRate = details => {\n setSwapRate(details?.rate ?? null);\n setMinimalAmount(details.min == null ? null : { crypto: details.min, fiat: details.fiatMin });\n setMaximumAmount(details.max == null ? null : { crypto: details.max, fiat: details.fiatMax });\n if (details.feeCoins != null) {\n setTransactionFee({\n crypto: details.feeCoins,\n fiat: details.feeFiat,\n });\n } else {\n setTransactionFee(null);\n }\n };\n\n const loadFullEstimation = (amount, isForPreserved = false) => {\n (async () => {\n try {\n const dataMemento = {\n rate: swapRate,\n min: minimalAmount.current?.crypto,\n max: maximumAmount.current?.crypto,\n feeCoins: transactionFee?.crypto,\n feeFiat: transactionFee?.fiat,\n };\n setIsLoading(true);\n setMinimalAmount(null);\n setMaximumAmount(null);\n setTransactionFee(null);\n setValidationContent(null);\n setSwapCreationEstimation(null);\n setIsSameCoins(false);\n setIsPairSupported(true);\n setIsSwapCalculated(false);\n\n const response = await retrieveSwapDetails(\n sendingAssetTicker,\n receivingAssetTicker,\n amount,\n isSwapAll.current,\n isFixedRate.current ?? IS_FIXED_BY_DEFAULT\n );\n\n if (\n !isSwapAll.current &&\n String(amount) !==\n String(\n isForPreserved && sendAssetAmount.current == null\n ? preservedAmount\n : sendAssetAmount.current\n )\n ) {\n // Means amount changed and we no more need to do this exact calculation\n return;\n }\n\n if (response.result) {\n const swapCreationInfo = response.swapCreationInfo;\n\n setUpdateSendInputTo(swapCreationInfo.fromAmountCoins);\n setUpdateReceiveInputTo(swapCreationInfo.toAmountCoins);\n\n if (isSwapAll.current) {\n setIsAmountZero(BigNumber(\"0\").eq(swapCreationInfo.fromAmountCoins));\n }\n\n setAmountLimitsAndRate(swapCreationInfo);\n setSwapCreationEstimation(swapCreationInfo);\n processMinMaxAmounts(isSwapAll.current ? swapCreationInfo.fromAmountCoins : amount);\n setIsSwapCalculated(true);\n } else {\n handleSwapServiceError(\n response.reason,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n );\n if (isSwapAll.current) {\n /* We disable swap all if swap all details retrieval fails and set\n * previous limits and rate. We set null to avoid triggering reloading of initial data.\n */\n setIsSwapAll(null);\n setAmountLimitsAndRate(dataMemento);\n } else {\n /* We set returned amount limits and rate only if the failed details retrieval is not\n * for the swap All case.\n */\n setAmountLimitsAndRate(response);\n }\n }\n setIsLoading(false);\n } catch (e) {\n handleUnexpectedError(e);\n }\n })();\n };\n\n const loadMinimalAmountAndSwapRate = (isCalledForClearedInput = false) => {\n (async () => {\n try {\n setIsLoading(true);\n setMinimalAmount(null);\n setMaximumAmount(null);\n setSwapRate(null);\n setValidationContent(null);\n setIsPairSupported(true);\n setIsSwapCalculated(false);\n\n const swapData = await retrieveInitialSwapData(sendingAssetTicker, receivingAssetTicker);\n\n if (sendAssetAmount.current != null && !isCalledForClearedInput) {\n // Means user already entered amount after starting the form initialization\n return;\n }\n\n if (swapData.result === true) {\n setAmountLimitsAndRate(swapData);\n } else {\n handleSwapServiceError(\n swapData.reason,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n );\n }\n\n setIsLoading(false);\n } catch (e) {\n handleUnexpectedError(e);\n }\n })();\n };\n\n const handleChangeAssetsIconClick = e => {\n callHandlingErrors(() => {\n if (!isLoading.current) {\n setIsSwapAll(null);\n setMaximumAmountValid(true);\n setMinimalAmountValid(true);\n rotateAssets(sendingAssetTicker, receivingAssetTicker);\n }\n }, e);\n };\n\n const handleRateModeChanged = isFixed => {\n setIsFixedRate(isFixed);\n requestDataRefresh(sendAssetAmount.current, true);\n };\n\n useEffect(() => {\n if (isSwapAll.current === true) {\n requestDataRefresh(undefined, true, true);\n } else if (isSwapAll.current === false) {\n loadMinimalAmountAndSwapRate();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isSwapAll.current]);\n\n useEffect(() => {\n setConfirmButtonTo(\n composeConfirmButtonTo(\n sendingAssetTicker,\n receivingAssetTicker,\n sendAssetAmount.current || preservedAmount || null\n )\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sendingAssetTicker, receivingAssetTicker]);\n\n useEffect(() => {\n if (!sendingAssetTicker || !receivingAssetTicker) return;\n\n const isCurrentAmountNotZero = sendAssetAmount.current && !BigNumber(\"0\").eq(sendAssetAmount.current);\n const isPreservedAmountNotZero = preservedAmount && !BigNumber(\"0\").eq(preservedAmount);\n if (isCurrentAmountNotZero) {\n loadFullEstimation(sendAssetAmount.current);\n } else if (isPreservedAmountNotZero) {\n loadFullEstimation(preservedAmount, true);\n } else {\n loadMinimalAmountAndSwapRate();\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sendingAssetTicker, receivingAssetTicker]);\n\n useEffect(() => {\n if (!minimalAmountValid || isAmountZero) {\n setTransactionFee(null);\n }\n if (isAmountZero) {\n clearTimeout(dataUpdateTimeoutId.current);\n }\n\n setReadyToSwap(\n swapButtonAlwaysActive ||\n ((balanceValid || !formHasBalance) &&\n minimalAmountValid &&\n !isAmountZero &&\n isSwapCalculated &&\n (!isSameCoins || !formHasBalance) &&\n isPairSupported &&\n (!isAddressFieldEnabled || recepientAddressValid))\n );\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n balanceValid,\n formHasBalance,\n minimalAmountValid,\n isAmountZero,\n isSwapCalculated,\n isSameCoins,\n isPairSupported,\n isAddressFieldEnabled,\n recepientAddressValid,\n ]);\n\n useEffect(() => {\n // Here we set up auto recalculations for the swap details if the form is ready to swap but is idle for some time\n let timeoutId = null;\n if (readyToSwap) {\n timeoutId = setTimeout(\n () => requestDataRefresh(sendAssetAmount.current ?? preservedAmount, true),\n DETAIL_REFRESH_INTERVAL_MS\n );\n setIdleDataUpdateTimeoutId(timeoutId);\n } else {\n clearTimeout(idleDataUpdateTimeoutId.current);\n setIdleDataUpdateTimeoutId(null);\n }\n return () => {\n timeoutId != null && clearTimeout(timeoutId);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [readyToSwap]);\n\n // TODO: [refactoring, critical] this code looks like a hack related to task_id=6e328d39063142b7b9fa01d497e616da\n useEffect(() => {\n if (triggerDataUpdateResetting) {\n clearTimeout(dataUpdateTimeoutId.current);\n setDataUpdateTimeoutId(null);\n\n clearTimeout(idleDataUpdateTimeoutId.current);\n setIdleDataUpdateTimeoutId(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [triggerDataUpdateResetting]);\n\n // Resets the passed \"set value to\" param to null, so it can be used multiple times with any value\n useEffect(() => {\n if (!!updateSendInputTo) setUpdateSendInputTo(null);\n if (!!updateReceiveInputTo) setUpdateReceiveInputTo(null);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [updateSendInputTo, updateReceiveInputTo]);\n\n useEffect(() => {\n if (swapRate != null && sendAssetAmount.current != null) {\n setUpdateReceiveInputTo(\n AmountUtils.trim(BigNumber(sendAssetAmount.current).times(swapRate), receivingAssetDecimalCount)\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [swapRate]);\n\n useEffect(() => {\n if (isLoading.current === false && swapAllButtonLoaderReSetter?.length) {\n swapAllButtonLoaderReSetter[0]();\n setSwapAllButtonLoaderReSetter([]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isLoading.current, swapAllButtonLoaderReSetter]);\n\n // Handlers upon changing the asset amount\n useEffect(() => {\n setConfirmButtonTo(composeConfirmButtonTo(sendingAssetTicker, receivingAssetTicker, sendAssetAmount.current));\n\n if (sendAssetAmount.current == null) return;\n let processingAmount = sendAssetAmount.current === \"\" ? \"0\" : sendAssetAmount.current;\n requestDataRefresh(processingAmount);\n processMinMaxAmounts(processingAmount);\n setIsAmountZero(BigNumber(\"0\").eq(processingAmount));\n setIsSwapCalculated(false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sendAssetAmount.current]);\n\n // Checking if all necessary props for address input are passed properly.\n useEffect(() => {\n setIsAddressFieldEnabled(\n recepientAddress !== undefined &&\n recepientAddressExtraId !== undefined &&\n recepientAddressValid !== undefined &&\n setRecepientAddress !== undefined &&\n typeof setRecepientAddress === \"function\" &&\n setRecepientAddressExtraId !== undefined &&\n typeof setRecepientAddressExtraId === \"function\"\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n recepientAddress,\n recepientAddressExtraId,\n recepientAddressValid,\n recepientAddressExtraIdValid,\n setRecepientAddress,\n setRecepientAddressExtraId,\n ]);\n\n return (\n <div className={s[\"swap-form\"]}>\n <TitleBox\n linkButtonClick={\n BigNumber(sendingAssetBalance?.assetAmount).eq(0)\n ? null\n : resetButtonLoader => handleSwapAllClick(resetButtonLoader)\n }\n linkText={\n !formHasBalance\n ? \"\"\n : isSwapAll.current\n ? translations.swapAllButtonTitles.cancel\n : translations.swapAllButtonTitles.enable\n }\n linkButtonLoader={true}\n isLinkButtonDisabled={\n isLoading.current ||\n sendingAssetTicker === receivingAssetTicker ||\n BigNumber(sendingAssetBalance?.assetAmount).eq(0)\n }\n >\n <div className={s[\"swap-form-inputs\"]}>\n <AmountInput\n ticker={sendingAssetTicker}\n tickerPrintable={sendingAssetTickerPrintable}\n assetDecimalPlaces={sendingAssetDecimalCount}\n assetBalance={sendingAssetBalance}\n assetIconSrc={sendingAssetIconSrc}\n assetIconProtocolSrc={sendingAssetProtocolIconSrc}\n fallbackAssetIconSrc={fallBackAssetIconSrc}\n disabled={isSwapAll.current || sendingAssetTicker === null || receivingAssetTicker === null}\n handleCoinAmountChange={handleSendAssetAmountChange}\n handleChangeAssetClick={handleChangeSendingAssetClick}\n handleBalanceValidationChange={isValid => setBalanceValid(!isValid)}\n updateAssetInputTo={updateSendInputTo}\n showBalance={formHasBalance}\n showBalanceValidation={formHasBalance}\n showChangeAssetButton\n changeAssetButtonProtocol={sendingAssetProtocol}\n upperFormPosition\n errorEncountered={!minimalAmountValid}\n ref={fromAssetSelectionButtonRef}\n isLoading={false}\n cryptoAssetToFiatRate={sendingAssetToFiatRate}\n fiatCurrencyCode={formHasFiat ? fiatCurrencyCode : null}\n fiatCurrencyDecimals={fiatCurrencyDecimals}\n balanceLoaderText={translations.input.balanceLoaderText}\n fiatInputPlaceholderText={translations.input.fiatPlaceholder}\n />\n <div\n className={\n s[\"swap-form-inputs-separator\"] +\n \" \" +\n (isLoading.current || sendingAssetTicker === null || receivingAssetTicker === null\n ? s[\"disabled\"]\n : \"\")\n }\n >\n <img\n src={swapSeparatorIconSrc}\n alt=\"swap icon\"\n draggable={false}\n onClick={e => callHandlingErrors(handleChangeAssetsIconClick, e)}\n />\n </div>\n <AmountInput\n ticker={receivingAssetTicker}\n tickerPrintable={receivingAssetTickerPrintable}\n assetDecimalPlaces={receivingAssetDecimalCount}\n assetBalance={receivingAssetBalance}\n assetIconSrc={receivingAssetIconSrc}\n assetIconProtocolSrc={receivingAssetProtocolIconSrc}\n fallbackAssetIconSrc={fallBackAssetIconSrc}\n disabled={isSwapAll.current || sendingAssetTicker === null || receivingAssetTicker === null}\n locked={!formHasBalance}\n handleCoinAmountChange={handleReceiveAssetAmountChange}\n handleChangeAssetClick={handleChangeReceivingAssetClick}\n updateAssetInputTo={updateReceiveInputTo}\n showChangeAssetButton\n changeAssetButtonProtocol={receivingAssetProtocol}\n showBalance={formHasBalance}\n lowerFormPosition\n estimateAmount={!isFixedRate.current}\n ref={toAssetSelectionButtonRef}\n isLoading={isLoading.current}\n cryptoAssetToFiatRate={receivingAssetToFiatRate}\n fiatCurrencyCode={formHasFiat ? fiatCurrencyCode : null}\n fiatCurrencyDecimals={fiatCurrencyDecimals}\n balanceLoaderText={translations.input.balanceLoaderText}\n fiatInputPlaceholderText={translations.input.fiatPlaceholder}\n />\n </div>\n <div className={s[\"swap-form-information-field\"]}>\n {/* TODO: [refactoring, moderate] Add flags calculation for each message to avoid this ugly cumbersome implicit unclear logic of message displaying. task_id=8bc31dbcd94d46a598346e8bfb505971 */}\n <p>\n {!isPairSupported ? (\n translations.informationBlock.pairNotAvailable\n ) : transactionFee && minimalAmountValid ? (\n <>\n {translations.informationBlock.transactionFee}\n <span>\n {AmountUtils.crypto(transactionFee?.crypto, sendingAssetFeeCoinTickerPrintable)}\n </span>\n {transactionFee?.fiat != null && transactionFee?.fiat !== \"\" ? (\n <span className={s[\"semi-transparent\"]}>\n {\" ~ \" + AmountUtils.fiat(transactionFee?.fiat, fiatCurrencyCode)}\n </span>\n ) : (\n \"\"\n )}\n </>\n ) : !isLoading.current && (isSwapCalculated || (!minimalAmount.current && swapRate)) ? (\n <>\n {translations.informationBlock.swapRate}\n <span>\n {AmountUtils.composeRateText(\n sendingAssetTickerPrintable,\n receivingAssetTickerPrintable,\n swapRate,\n receivingAssetDecimalCount,\n isFixedRate.current ?? IS_FIXED_BY_DEFAULT\n )}\n </span>\n </>\n ) : minimalAmount.current || maximumAmount.current ? (\n !maximumAmountValid && maximumAmount.current != null ? (\n <>\n {translations.informationBlock.maximumAmount}\n <span\n className={s[\"interactable\"] + \" \" + s[\"red\"]}\n onClick={\n isLoading.current\n ? () => {}\n : e => callHandlingErrors(handleMaximumAmountClick, e)\n }\n >\n {AmountUtils.crypto(maximumAmount.current?.crypto, sendingAssetTickerPrintable)}\n </span>\n {maximumAmount.current?.fiat != null && maximumAmount.current?.fiat !== \"\" ? (\n <span className={s[\"semi-transparent\"]}>\n {\" ~ \" + AmountUtils.fiat(maximumAmount.current.fiat, fiatCurrencyCode)}\n </span>\n ) : (\n \"\"\n )}\n </>\n ) : !minimalAmount.current ? (\n \"\"\n ) : (\n <>\n {translations.informationBlock.minimumAmount}\n <span\n className={s[\"interactable\"] + \" \" + (!minimalAmountValid ? s[\"red\"] : \"\")}\n onClick={\n isLoading.current\n ? () => {}\n : e => callHandlingErrors(handleMinimalAmountClick, e)\n }\n >\n {AmountUtils.crypto(minimalAmount.current.crypto, sendingAssetTickerPrintable)}\n </span>\n {minimalAmount.current?.fiat != null && minimalAmount.current.fiat !== \"\" ? (\n <span className={s[\"semi-transparent\"]}>\n {\" ~ \" + AmountUtils.fiat(minimalAmount.current.fiat, fiatCurrencyCode)}\n </span>\n ) : (\n \"\"\n )}\n </>\n )\n ) : isLoading.current ? (\n sendAssetAmount.current || isSwapAll.current ? (\n translations.informationBlock[\n formHasBalance ? \"calculatingNetworkFee\" : \"calculatingSwapRates\"\n ]\n ) : (\n translations.informationBlock.loadingMinimalAmount\n )\n ) : (\n \"\"\n )}\n </p>\n </div>\n\n {isAddressFieldEnabled ? (\n <div className={s[\"swap-form-address-field\"]}>\n <TitleBox title={translations.addressFields.addressTitle}>\n <Textarea\n type={\"text\"}\n onChange={e => setRecepientAddress(e.target.value)}\n value={recepientAddress}\n adaptiveHeight={true}\n errorEncountered={!recepientAddressValid && recepientAddress !== \"\"}\n />\n </TitleBox>\n {recepientAddressExtraIdAvailable ? (\n <TitleBox\n title={translations.addressFields.extraIdTitle}\n titleNoticeText={translations.addressFields.extraIdNotice}\n titleNoticePosition={TOOLTIP_POSITIONS.TOP_LEFT}\n >\n <Textarea\n type={\"text\"}\n onChange={e => setRecepientAddressExtraId(e.target.value)}\n value={recepientAddressExtraId}\n adaptiveHeight={true}\n errorEncountered={!recepientAddressExtraIdValid}\n placeholder={translations.addressFields.extraIdPlaceholder}\n />\n </TitleBox>\n ) : (\n \"\"\n )}\n </div>\n ) : (\n \"\"\n )}\n\n {displayRateSelector ? (\n <div className={s[\"swap-form-rate-selector\"]}>\n <RateSelector\n isFixed={isFixedRate.current ?? IS_FIXED_BY_DEFAULT}\n setIsFixed={!isLoading.current ? handleRateModeChanged : () => {}}\n translations={translations.rateSelector}\n />\n </div>\n ) : (\n \"\"\n )}\n\n {validationContent ? (\n <div className={s[\"swap-form-validation-text\"]}>\n <Validation text={validationContent} />\n </div>\n ) : (\n \"\"\n )}\n <div className={s[\"swap-form-button-container\"]}>\n {!termsOfUseUrl || !privacyPolicyUrl ? null : (\n <p className={s[\"swap-form-button-container-consent-text\"]}>\n {translations.consents.consentText + \" \"}\n <a\n href={termsOfUseUrl}\n className={s[\"swap-form-button-container-consent-text-link\"]}\n target=\"_blank\"\n >\n {translations.consents.termsOfUse}\n </a>\n {\" \" + translations.consents.and + \" \"}\n <a\n href={privacyPolicyUrl}\n className={s[\"swap-form-button-container-consent-text-link\"]}\n target=\"_blank\"\n >\n {translations.consents.privacyPolicy}\n </a>\n .\n </p>\n )}\n <Button\n size=\"lg\"\n mode=\"primary\"\n content={translations.confirmButtonText}\n onClick={resetButtonLoader =>\n handleConfirmButtonClick(\n resetButtonLoader,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n )\n }\n fullWidthOnMobiles\n isDisabled={!readyToSwap}\n to={formHasBalance ? \"\" : confirmButtonTo}\n loader\n handleError={callHandlingErrors}\n />\n </div>\n </TitleBox>\n </div>\n );\n};\n\nSwapForm.propTypes = {\n sendingAssetTicker: PropTypes.string.isRequired,\n receivingAssetTicker: PropTypes.string.isRequired,\n sendingAssetDecimalCount: PropTypes.number,\n receivingAssetDecimalCount: PropTypes.number,\n sendingAssetTickerPrintable: PropTypes.string.isRequired,\n receivingAssetTickerPrintable: PropTypes.string.isRequired,\n sendingAssetProtocol: PropTypes.string,\n receivingAssetProtocol: PropTypes.string,\n sendingAssetIconSrc: PropTypes.string.isRequired,\n sendingAssetProtocolIconSrc: PropTypes.oneOfType([PropTypes.string, null]),\n receivingAssetIconSrc: PropTypes.string.isRequired,\n receivingAssetProtocolIconSrc: PropTypes.oneOfType([PropTypes.string, null]),\n fallBackAssetIconSrc: PropTypes.oneOfType([PropTypes.string, null]),\n sendingAssetFeeCoinTickerPrintable: PropTypes.string,\n sendingAssetBalance: PropTypes.string,\n receivingAssetBalance: PropTypes.string,\n handleChangeSendingAssetClick: PropTypes.func.isRequired,\n handleChangeReceivingAssetClick: PropTypes.func.isRequired,\n handleConfirmButtonClick: PropTypes.func,\n composeConfirmButtonTo: PropTypes.func,\n setSwapCreationEstimation: PropTypes.func,\n handleUnexpectedError: PropTypes.func,\n rotateAssets: PropTypes.func,\n preservedAmount: PropTypes.oneOfType([PropTypes.string, null]),\n handleSwapServiceError: PropTypes.func.isRequired,\n formHasBalance: PropTypes.bool,\n retrieveSwapDetails: PropTypes.func.isRequired,\n retrieveInitialSwapData: PropTypes.func.isRequired,\n triggerDataUpdateResetting: PropTypes.number,\n fromAssetSelectionButtonRef: PropTypes.any,\n toAssetSelectionButtonRef: PropTypes.any,\n sendingAssetToFiatRate: PropTypes.oneOfType([PropTypes.number, PropTypes.string, null]),\n receivingAssetToFiatRate: PropTypes.oneOfType([PropTypes.number, PropTypes.string, null]),\n fiatCurrencyCode: PropTypes.oneOfType([PropTypes.string, null]),\n fiatCurrencyDecimals: PropTypes.oneOfType([PropTypes.number, null]),\n formHasFiat: PropTypes.bool,\n translations: PropTypes.object,\n swapSeparatorIconSrc: PropTypes.string.isRequired,\n swapButtonAlwaysActive: PropTypes.bool,\n};\n\nSwapForm.defaultProps = {\n sendingAssetDecimalCount: AmountUtils.significantDecimalCount,\n receivingAssetDecimalCount: AmountUtils.significantDecimalCount,\n sendingAssetProtocolIconSrc: null,\n receivingAssetProtocolIconSrc: null,\n fallBackAssetIconSrc: null,\n handleConfirmButtonClick: (\n resetButtonLoader,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n ) => {},\n composeConfirmButtonTo: (fromTicker, toTicker, fromAmount) => \"\",\n setSwapCreationEstimation: details => {},\n handleUnexpectedError: error => {},\n rotateAssets: (fromTicker, toTicker) => {},\n preservedAmount: null,\n handleSwapServiceError: (\n errorCode,\n setValidationContent,\n setBalanceValid,\n setMinimalAmountValid,\n setMaximumAmountValid,\n setIsPairSupported,\n setIsSameCoins\n ) => {},\n retrieveSwapDetails: async (sendingAssetTicker, receivingAssetTicker, amount, isSwapAll = false) => {},\n retrieveInitialSwapData: async (sendingAssetTicker, receivingAssetTicker) => {},\n triggerDataUpdateResetting: 0,\n fromAssetSelectionButtonRef: null,\n toAssetSelectionButtonRef: null,\n sendingAssetToFiatRate: null,\n receivingAssetToFiatRate: null,\n fiatCurrencyCode: null,\n fiatCurrencyDecimals: null,\n formHasFiat: true,\n swapButtonAlwaysActive: false,\n};\n","import QRCode from \"qrcode\";\n\nimport { improveAndRethrow } from \"../errorUtils\";\n\n/**\n * Generates QR as svg xml string.\n * Note that you should care about the element size by your self - the generated QR will just fill all available space\n *\n * @param encodingString {string} to be encoded as QR-code image\n * @return {Promise<string>} xml string of generated svg image\n */\nexport async function generateQrAndShowInCanvas(encodingString) {\n try {\n return await QRCode.toString(encodingString, { type: \"svg\" });\n } catch (e) {\n improveAndRethrow(e, \"generateQrAndShowInCanvas\");\n }\n}\n","import React, { useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { logErrorOrOutputToConsole } from \"../../../common/errorUtils\";\nimport { generateQrAndShowInCanvas } from \"../../../common/adapters/qrUtils\";\n\nimport s from \"./qr-code.module.scss\";\n\nexport const QrCode = ({ address, fill = false }) => {\n const canvasRef = useRef();\n\n useEffect(() => {\n (async () => {\n try {\n if (address) {\n canvasRef.current.innerHTML = await generateQrAndShowInCanvas(address);\n }\n } catch (e) {\n logErrorOrOutputToConsole(e);\n }\n })();\n }, [address]);\n\n return <div className={s[\"qr-code\"] + (fill ? \" \" + s[\"fill\"] : \"\")} ref={canvasRef} />;\n};\n\nQrCode.propTypes = {\n address: PropTypes.string.isRequired,\n fill: PropTypes.bool,\n};\n\nQrCode.defaultProps = {\n address: \"\",\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./lines-of-text.module.scss\";\n\n/**\n * Renders up to three lines of text with configurable options for horizontal layout, text wrapping, and breaking.\n * Optionally, displays a default text content centered vertically if provided.\n *\n * @param {string} firstLineText - Text for the first line.\n * @param {string} secondLineText - Text for the second line.\n * @param {string} thirdLineText - Text for the third line.\n * @param {boolean} isHorizontal - If true, displays the text horizontally.\n * @param {string} defaultTextContent - Default text content to display, centered vertically.\n * @param {boolean} isFirstLineTextReducible - If true, the first line text can be reduced.\n * @param {string} firstLineNotReducibleSuffix - Suffix to append to the first line text if not reducible.\n * @param {boolean} wrapFirstLine - If true, allows the first line text to wrap.\n * @param {boolean} breakFirstLine - If true, allows the first line text to break onto the next line.\n */\nexport const LinesOfText = ({\n firstLineText = \"\",\n secondLineText = \"\",\n thirdLineText = \"\",\n isHorizontal = false,\n defaultTextContent = \"\",\n isFirstLineTextReducible = false,\n firstLineNotReducibleSuffix = \"\",\n wrapFirstLine = false,\n breakFirstLine = false,\n}) => {\n return defaultTextContent ? (\n <div className={s[\"centered-vertically\"]}>{defaultTextContent}</div>\n ) : (\n <div className={isHorizontal ? s[\"horizontal\"] : \"\"}>\n <h5 className={s[\"first-line-text\"]}>\n <span\n className={`${isFirstLineTextReducible ? s[\"shorted\"] : s[\"full-text\"]} ${\n wrapFirstLine ? \" \" + s[\"wrap\"] : \"\"\n } ${breakFirstLine ? \" \" + s[\"break\"] : \"\"}`}\n >\n {firstLineText}\n </span>\n {`\\u00A0${firstLineNotReducibleSuffix}`}\n </h5>\n {isHorizontal ? <div className={s[\"line\"]} /> : null}\n {secondLineText ? <p className={s[\"second-line-text\"]}>{secondLineText}</p> : null}\n {thirdLineText ? <p className={s[\"second-line-text\"]}>{thirdLineText}</p> : null}\n </div>\n );\n};\n\nLinesOfText.propTypes = {\n firstLineText: PropTypes.string,\n secondLineText: PropTypes.string,\n thirdLineText: PropTypes.string,\n isHorizontal: PropTypes.bool,\n defaultTextContent: PropTypes.string,\n isFirstLineTextReducible: PropTypes.bool,\n firstLineNotReducibleSuffix: PropTypes.string,\n wrapFirstLine: PropTypes.bool,\n breakFirstLine: PropTypes.bool,\n};\n\nLinesOfText.defaultProps = {\n firstLineText: \"\",\n secondLineText: \"\",\n thirdLineText: \"\",\n isHorizontal: false,\n defaultTextContent: \"\",\n isFirstLineTextReducible: false,\n firstLineNotReducibleSuffix: \"\",\n wrapFirstLine: false,\n breakFirstLine: false,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./line-with-icon-link.module.scss\";\n\n/**\n * Renders a line with text and an accompanying icon that serves as a link.\n *\n * @param {Object} props - Component props.\n * @param {string} props.text - Text to be displayed.\n * @param {string} props.icon - URL of the icon image.\n * @param {string} props.url - Target URL that the icon link points to.\n */\nexport const LineWithIconLink = ({ text, icon, url }) => {\n return (\n <div className={s[\"line-with-icon-link\"]}>\n <h5 className={s[\"line-with-icon-link-text\"]}>{text}</h5>\n <a href={url} target=\"_blank\" rel=\"noopener noreferrer\" className={\"line-with-icon-link-icon\"}>\n <img src={icon} alt=\"Link Icon\" />\n </a>\n </div>\n );\n};\n\nLineWithIconLink.propTypes = {\n text: PropTypes.string.isRequired,\n icon: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n};\n\nLineWithIconLink.defaultProps = {\n text: \"\",\n icon: \"\",\n url: \"\",\n};\n","import React from \"react\";\n\n// Originally: determined-error.svg\nexport default () => (\n <svg\n id=\"Group_5\"\n data-name=\"Group 5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"173\"\n height=\"173\"\n viewBox=\"0 0 173 173\"\n >\n <defs>\n <clipPath id=\"clip-path\">\n <circle id=\"Oval\" cx=\"86.5\" cy=\"86.5\" r=\"86.5\" fill=\"#ffa799\" />\n </clipPath>\n </defs>\n <g id=\"Group_2\" data-name=\"Group 2\">\n <circle id=\"Oval-2\" data-name=\"Oval\" cx=\"86.5\" cy=\"86.5\" r=\"86.5\" fill=\"#ffa799\" />\n <g id=\"Group_2-2\" data-name=\"Group 2\" clip-path=\"url(#clip-path)\">\n <g id=\"Group_232\" data-name=\"Group 232\" transform=\"translate(-5 -4)\">\n <rect\n id=\"Rectangle\"\n width=\"30\"\n height=\"172\"\n transform=\"translate(122.205 0.582) rotate(45)\"\n fill=\"#fff\"\n opacity=\"0.3\"\n />\n <rect\n id=\"Rectangle-2\"\n data-name=\"Rectangle\"\n width=\"30\"\n height=\"172\"\n transform=\"translate(161.205 36.582) rotate(45)\"\n fill=\"#fff\"\n opacity=\"0.3\"\n />\n <path\n id=\"Rectangle-3\"\n data-name=\"Rectangle\"\n d=\"M12,0H146a0,0,0,0,1,0,0V128a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V12A12,12,0,0,1,12,0Z\"\n transform=\"translate(34 53)\"\n fill=\"#f18573\"\n />\n <path\n id=\"Rectangle-4\"\n data-name=\"Rectangle\"\n d=\"M4,0H97a4,4,0,0,1,4,4V92a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V4A4,4,0,0,1,4,0Z\"\n transform=\"translate(43 91)\"\n fill=\"#e95d44\"\n opacity=\"0.5\"\n />\n <path\n id=\"Rectangle-5\"\n data-name=\"Rectangle\"\n d=\"M12,0H146a0,0,0,0,1,0,0V28a0,0,0,0,1,0,0H0a0,0,0,0,1,0,0V12A12,12,0,0,1,12,0Z\"\n transform=\"translate(34 53)\"\n fill=\"#eb5e49\"\n />\n <circle\n id=\"Oval-3\"\n data-name=\"Oval\"\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n transform=\"translate(44 63)\"\n fill=\"#ffa191\"\n />\n <circle\n id=\"Oval-4\"\n data-name=\"Oval\"\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n transform=\"translate(57 63)\"\n fill=\"#ffa191\"\n />\n <circle\n id=\"Oval-5\"\n data-name=\"Oval\"\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n transform=\"translate(70 63)\"\n fill=\"#ffa191\"\n />\n </g>\n </g>\n </g>\n <g id=\"Group_3\" data-name=\"Group 3\" transform=\"translate(63 105)\">\n <g id=\"Group_4\" data-name=\"Group 4\">\n <path\n id=\"Path\"\n d=\"M24.75,0A24.745,24.745,0,1,0,39.078,4.567\"\n fill=\"none\"\n stroke=\"#fff\"\n stroke-linecap=\"round\"\n stroke-miterlimit=\"10\"\n stroke-width=\"3.6\"\n />\n <text\n id=\"_\"\n data-name=\"!\"\n transform=\"translate(25.2 38.8)\"\n fill=\"#fff\"\n font-size=\"34.2\"\n font-family=\"SegoeUI, Segoe UI\"\n letter-spacing=\"0.023em\"\n >\n <tspan x=\"-4.859\" y=\"0\">\n !\n </tspan>\n </text>\n </g>\n </g>\n </svg>\n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { DialogStep } from \"../../organisms/Dialog/DialogStep/DialogStep\";\n\nimport determinedErrorImage from \"../../../assets/wrappedImages/determinedError\";\n\n/**\n * Template dialog step to display an error through the title and subtitle.\n * You can insert it into any dialog windows and implement them into flows.\n *\n * @param {object} props - Component props.\n * @param {object} props.controls - Control elements for the dialog.\n * @param {string} props.stepName - Name of the current step.\n * @param {string} props.title - Title of the dialog.\n * @param {string} props.subtitle - Subtitle of the dialog.\n * @param {string} props.backButtonText - Text for the back button.\n * @param {Function} props.backButtonClick - Handler for back button click.\n * @param {string} props.backButtonLink - Link for the back button.\n * @param {string} props.confirmButtonText - Text for the confirm button.\n * @param {Function} props.confirmButtonClick - Handler for confirm button click.\n * @param {string} props.confirmButtonLink - Link for the confirm button.\n * @param {boolean} props.showCornerBackButton - Whether to show the corner back button.\n * @returns {JSX.Element} React component\n */\nexport const DeterminedErrorDialogStep = ({\n controls,\n stepName,\n title,\n subtitle,\n backButtonText,\n backButtonClick,\n backButtonLink,\n confirmButtonText,\n confirmButtonClick,\n confirmButtonLink,\n showCornerBackButton,\n}) => {\n return (\n <DialogStep\n controls={controls}\n stepName={stepName}\n ImageRaw={determinedErrorImage}\n title={title}\n subtitle={subtitle}\n backButtonText={backButtonText}\n backButtonClick={backButtonClick}\n backButtonTo={backButtonLink}\n confirmButtonText={confirmButtonText}\n confirmButtonClick={confirmButtonClick}\n confirmButtonLink={confirmButtonLink}\n showCornerBackButton={showCornerBackButton}\n />\n );\n};\n\nDeterminedErrorDialogStep.propTypes = {\n controls: PropTypes.object,\n stepName: PropTypes.string,\n title: PropTypes.string.isRequired,\n subtitle: PropTypes.string.isRequired,\n backButtonText: PropTypes.string,\n backButtonClick: PropTypes.func,\n backButtonLink: PropTypes.string,\n confirmButtonText: PropTypes.string,\n confirmButtonClick: PropTypes.func,\n confirmButtonLink: PropTypes.string,\n showCornerBackButton: PropTypes.bool,\n};\n\nDeterminedErrorDialogStep.defaultProps = {\n backButtonText: \"\",\n backButtonClick: null,\n confirmButtonText: \"\",\n confirmButtonClick: null,\n showCornerBackButton: false,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { TitleBox } from \"../../atoms/TitleBox/TitleBox\";\nimport { LineWithIconLink } from \"../LineWithIconLink/LineWithIconLink\";\n\n/**\n * TitledLineWithIconLink component renders a title box with a text line that includes an icon with a clickable link.\n *\n * @param {string} title - The title to display in the TitleBox.\n * @param {string} text - The text to display in the LineWithIconLink.\n * @param {string} icon - The icon to display next to the text in the LineWithIconLink.\n * @param {string} url - The URL for the LineWithIconLink.\n */\nexport const TitledLineWithIconLink = ({ title, text, icon, url }) => {\n return (\n <TitleBox title={title}>\n <LineWithIconLink text={text} icon={icon} url={url} />\n </TitleBox>\n );\n};\n\nTitledLineWithIconLink.propTypes = {\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n icon: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n};\n\nTitledLineWithIconLink.defaultProps = {};\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./radio-button-with-text.module.scss\";\n\nimport { useCallHandlingErrors } from \"../../../hooks/useCallHandlingErrors.js\";\n\nimport { Tooltip } from \"../../Tooltip/Tooltip.jsx\";\nimport { LoadingDots } from \"../../LoadingDots/LoadingDots.jsx\";\n\n/**\n * RadioButtonWithText component with a label and optional tooltip.\n *\n * @component\n * @param {string} [text=\"\"] - The text to display next to the radio button.\n * @param {function} onStateChange - Callback function triggered when the state of the radio button changes.\n * @param {boolean} [isSwitchedOn=false] - Whether the radio button is switched on.\n * @param {boolean} [isDisabled=false] - Whether the radio button is disabled.\n * @param {string} [tooltipText=\"\"] - Text to display in the tooltip when hovering over the component.\n * @param {string} [id=\"\"] - The id of the radio button.\n */\nexport const RadioButtonWithText = ({\n text = \"\",\n onStateChange,\n isSwitchedOn = false,\n isDisabled = false,\n tooltipText = \"\",\n id = \"\",\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const [showTooltip, setShowTooltip] = useState(false);\n const [showTooltipTimeoutId, setShowTooltipTimeoutId] = useState(-1);\n\n const handleError = useCallHandlingErrors();\n\n function handleChange() {\n if (!isLoading && !isDisabled) {\n setIsLoading(true);\n handleError(() => onStateChange(() => setIsLoading(false)));\n }\n }\n\n const onMouseEnter = () => {\n if (tooltipText) {\n setShowTooltipTimeoutId(setTimeout(() => setShowTooltip(true), 700));\n }\n };\n\n const onMouseLeave = () => {\n if (tooltipText) {\n setShowTooltip(false);\n clearTimeout(showTooltipTimeoutId);\n setShowTooltipTimeoutId(null);\n }\n };\n\n return (\n <div className={s[\"radio-button-with-text-container\"]}>\n <label\n htmlFor={\"radio-button-with-text-\" + id}\n className={[\n s[\"radio-button-with-text\"],\n isSwitchedOn ? s[\"selected\"] : \"\",\n isLoading ? s[\"hide\"] : \"\",\n isDisabled ? s[\"disabled\"] : \"\",\n ].join(\" \")}\n onMouseEnter={e => handleError(onMouseEnter, e)}\n onMouseLeave={e => handleError(onMouseLeave, e)}\n >\n {tooltipText && showTooltip ? (\n <div>\n {/*TODO: [bug, critical] click is still propagated*/}\n <Tooltip showTooltip={showTooltip} handleClick={() => setShowTooltip(false)}>\n {tooltipText}\n </Tooltip>\n </div>\n ) : null}\n <div className={s[\"radio-button-with-text-dots\"] + (isLoading ? s[\"show\"] : \"\")}>\n <LoadingDots />\n </div>\n <div className={s[\"radio-button-with-text-content\"] + \" \" + (false ? s[\"hide\"] : \"\")}>\n <input\n id={\"radio-button-with-text-\" + id}\n type=\"checkbox\"\n value={isSwitchedOn}\n onChange={handleChange}\n />\n <span className={s[\"radio-button-with-text-wrapper\"]}>{text}</span>\n </div>\n </label>\n </div>\n );\n};\n\nRadioButtonWithText.propTypes = {\n text: PropTypes.string,\n onStateChange: PropTypes.func,\n isSwitchedOn: PropTypes.bool,\n isDisabled: PropTypes.bool,\n tooltipText: PropTypes.string,\n id: PropTypes.string,\n};\n\nRadioButtonWithText.defaultProps = {\n text: \"\",\n isSwitchedOn: false,\n isDisabled: false,\n tooltipText: \"\",\n id: \"\",\n};\n","import React from \"react\";\n\nexport default () => (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z\"\n fill=\"#8C9CBF\"\n />\n <path\n d=\"M11.6001 9.65598H13.6001V17.48H11.6001V9.65598ZM13.6961 6.02398V7.99198H11.4881V6.02398H13.6961Z\"\n fill=\"white\"\n />\n </svg>\n);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./information-message.module.scss\";\n\nimport InfoIcon from \"../../../assets/wrappedImages/infoIcon.jsx\";\n\n/**\n * InformationMessage component to display an informational message with an optional icon.\n *\n * @component\n * @param {string} [text=\"\"] - The text content of the message.\n * @param {string|boolean} [icon=false] - The URL or boolean indicating whether to display an icon.\n * @param {boolean} [bigImage=false] - Whether to use a larger image for the icon.\n * @param {boolean} [whiteText=false] - Whether the text should be displayed in white color.\n * @param {ReactNode} [children=null] - Additional child components.\n */\nexport const InformationMessage = ({\n text = \"\",\n icon = false,\n bigImage = false,\n whiteText = false,\n children = null,\n}) => {\n return (\n <div className={s[\"information-message\"] + (bigImage ? \" \" + s[\"big-image\"] : \"\")}>\n {icon ? <img src={icon} alt=\"info icon\" /> : <InfoIcon />}\n <p className={s[\"information-message-text\"] + (whiteText ? \" \" + s[\"white-text\"] : \"\")}>\n {text}\n {children}\n </p>\n </div>\n );\n};\n\nInformationMessage.propTypes = {\n text: PropTypes.string,\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n bigImage: PropTypes.bool,\n whiteText: PropTypes.bool,\n children: PropTypes.node,\n};\n\nInformationMessage.defaultProps = {\n text: \"\",\n icon: false,\n bigImage: false,\n whiteText: false,\n children: null,\n};\n","import React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./input.module.scss\";\n\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\nimport { logErrorOrOutputToConsole } from \"../../../common/errorUtils.js\";\n\nimport { Close } from \"../buttons/Close/Close.jsx\";\nimport { Validation } from \"../Validation/Validation.jsx\";\n\n/**\n * Input component for forms.\n *\n * @component\n * @param {string} [type=\"text\"] - The type of input (e.g., \"text\", \"number\", \"email\").\n * @param {string} [name=\"\"] - The name of the input field.\n * @param {function} [onChange=() => {}] - Function called when the input value changes.\n * @param {string} [alertText=\"\"] - Text for alert messages.\n * @param {string} [placeholder=\"\"] - Placeholder text for the input.\n * @param {string} [className=\"\"] - Additional CSS classes for styling.\n * @param {string} [defaultValue=\"\"] - Default value for the input.\n * @param {boolean} [isBigHeight=false] - Whether the input has a larger height.\n * @param {boolean} [isSmallHeight=false] - Whether the input has a smaller height.\n * @param {string} [label=\"\"] - Label text for the input.\n * @param {string} [id=null] - Unique ID for the input.\n * @param {string} [value=\"\"] - Value of the input.\n * @param {string} [successAlertText=\"\"] - Text for success alert messages.\n * @param {boolean} [disabled=false] - Whether the input is disabled.\n * @param {function} [onKeyUp=() => {}] - Function called on key up event.\n * @param {boolean} [autoFocus=false] - Whether the input should be autofocused.\n * @param {boolean} [fillWidth=false] - Whether the input should fill the width of its container.\n * @param {boolean} [clearButton=false] - Whether to show a clear button for the input.\n * @param {boolean} [imageBackground=false] - Whether the input has an image background.\n * @param {boolean} [errorEncountered=false] - Whether an error has been encountered for the input.\n */\nexport const Input = forwardRef(\n (\n {\n type = \"text\",\n name = \"\",\n onChange = () => {},\n alertText = \"\",\n placeholder = \"\",\n className = \"\",\n defaultValue = \"\",\n isBigHeight = false,\n isSmallHeight = false,\n label = \"\",\n id = null,\n value = \"\",\n successAlertText = \"\",\n disabled = false,\n onKeyUp = event => {},\n autoFocus = false,\n fillWidth = false,\n clearButton = false,\n imageBackground = false,\n errorEncountered = false,\n },\n ref\n ) => {\n const handleError = useCallHandlingErrors();\n\n const handleClearButtonClick = () => {\n onChange({ target: { value: \"\" } });\n try {\n ref.current.focus();\n } catch (e) {\n logErrorOrOutputToConsole(\n \"Input clear button will not work unless you provide a ref to the Input. Please pass a 'ref' parameter to the Input or disable the clear button.\"\n );\n }\n };\n\n return (\n <div\n className={[\n s[\"input\"],\n isBigHeight ? s[\"big-height\"] : \"\",\n isSmallHeight ? s[\"small-height\"] : \"\",\n disabled ? s[\"disabled\"] : \"\",\n fillWidth ? s[\"fill-width\"] : \"\",\n imageBackground ? s[\"image-background\"] : \"\",\n ].join(\" \")}\n >\n {label ? (\n <label htmlFor={id} className={s[\"input-label\"]}>\n {label}\n </label>\n ) : null}\n\n {clearButton ? (\n <div className={s[\"input-clear-button\"]}>\n <Close onClick={handleClearButtonClick} color={\"dark-invert\"} />\n </div>\n ) : (\n \"\"\n )}\n\n {defaultValue ? (\n <input\n id={id}\n type={type}\n name={name}\n onChange={e => handleError(onChange, e)}\n placeholder={placeholder}\n className={className + (errorEncountered ? \" \" + s[\"error-encountered\"] : \"\")}\n defaultValue={defaultValue}\n disabled={disabled}\n onKeyUp={event => onKeyUp(event)}\n autoFocus={autoFocus}\n ref={ref}\n />\n ) : (\n <input\n id={id}\n type={type}\n name={name}\n onChange={e => handleError(onChange, e)}\n placeholder={placeholder}\n className={className + (errorEncountered ? \" \" + s[\"error-encountered\"] : \"\")}\n value={value}\n disabled={disabled}\n onKeyUp={event => onKeyUp(event)}\n autoFocus={autoFocus}\n ref={ref}\n />\n )}\n\n {alertText || successAlertText ? (\n <Validation text={alertText || successAlertText} isSuccessAlert={!alertText} />\n ) : null}\n </div>\n );\n }\n);\n\nInput.propTypes = {\n type: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n alertText: PropTypes.string,\n placeholder: PropTypes.string,\n className: PropTypes.string,\n defaultValue: PropTypes.string,\n isBigHeight: PropTypes.bool,\n isSmallHeight: PropTypes.bool,\n label: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.string,\n successAlertText: PropTypes.string,\n disabled: PropTypes.bool,\n onKeyUp: PropTypes.func,\n autoFocus: PropTypes.bool,\n fillWidth: PropTypes.bool,\n clearButton: PropTypes.bool,\n imageBackground: PropTypes.bool,\n errorEncountered: PropTypes.bool,\n};\n\nInput.defaultProps = {\n type: \"text\",\n onChange: () => {},\n alertText: \"\",\n placeholder: \"\",\n className: \"\",\n defaultValue: \"\",\n isBigHeight: false,\n isSmallHeight: false,\n label: \"\",\n id: null,\n value: \"\",\n successAlertText: \"\",\n disabled: false,\n onKeyUp: () => {},\n autoFocus: false,\n fillWidth: false,\n clearButton: false,\n imageBackground: false,\n errorEncountered: false,\n};\n","export const FALLBACK_ASSET_ICON_URL = \"https://rabbit.io/asset-icons/fallback.svg\";\n\nexport const DEFAULT_CRYPTO_DECIMAL_COUNT = 8;\n","import React, { useEffect, useState, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport s from \"./coin-picker.module.scss\";\nimport ArrowIcon from \"../../../assets/wrappedImages/arrowIcon.jsx\";\n\nimport { useReferredState } from \"../../hooks/useReferredState.js\";\nimport { useCallHandlingErrors } from \"../../hooks/useCallHandlingErrors.js\";\nimport { logErrorOrOutputToConsole } from \"../../../common/errorUtils.js\";\n\nimport { RadioButtonWithText } from \"../../atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx\";\nimport { Input } from \"../../atoms/Input/Input.jsx\";\nimport { InformationMessage } from \"../../atoms/InformationMessage/InformationMessage.jsx\";\nimport { FALLBACK_ASSET_ICON_URL } from \"../../../constants/globalConstants.jsx\";\nimport { AssetIcon } from \"../../atoms/AssetIcon/AssetIcon.jsx\";\nimport { Button } from \"../../atoms/buttons/Button/Button.jsx\";\nimport { LoadingDots } from \"../../atoms/LoadingDots/LoadingDots.jsx\";\n\nexport const COIN_PICKER_MODES = {\n BUTTON: \"BUTTON\",\n CHECKBOX: \"CHECKBOX\",\n};\n\nconst defaultTexts = {\n searchPlaceholder: \"Search..\",\n noAssetsMessage: \"No matching assets found\",\n loadMoreButton: \"Load more\",\n assetSuggestionMessage: {\n part1: \"Need more?\",\n part2: \"Let us know\",\n part3: \"which coin to add next.\",\n },\n};\n\n/**\n * Component that can be used either for one-time selection of an asset, or\n * for a multi-selection in a CHECKBOX format.\n * CoinPicker can show all assets with a subtitle.\n *\n * Usage rules:\n * 1. for CHECKBOX mode\n * - you MUST pass allCoins, initiallyEnabledCoinsList and setCoinPickerValue\n * 2. for BUTTON mode\n * - you MUST NOT pass setCoinPickerValue (it will be ignored)\n * - if you don't pass loadCoinsAndContent function, you MUST pass allCoins\n *\n * @param [mode] {string} one-time button selection or multi-selection via toggles, available options are located in COIN_PICKER_MODES\n * @param [allCoins] {Coin[]} all coins despite on their enabled/disabled status. Pass this list if you use CHECKBOX mode or you don't pass the loadCoinsAndContent function\n * @param [initiallyEnabledCoinsList] {Coin[]} - pass this when using CHECKBOX mode\n * @param [handleClick] {function} handler function for the event when an asset is clicked\n * @param [triggerToReloadData] {number|undefined} trigger to reload the component when some related data changes\n * @param [search=false] {boolean} whether to show the search bar above the assets list, when enabled overrides searchAdaptive and locks the list height\n * @param [searchAdaptive=true] {boolean} show search bar only after six assets in the list\n * @param [setCoinPickerValue] {function} is called with the only parameter (final enabled tickers list) when closing/confirming dialog in CHECKBOX mode\n * @param [setCoinPickerListChanged] {function} is called with the only parameter (flag signalling that the list of enabled coins was changed - true, or was not changed - false) when closing/confirming dialog in CHECKBOX mode\n * @param [loadCoinsAndContent] {function} optional, you can provide it if you need custom logic for coins list composing or custom subtitles\n * {\n * coins: Coin[],\n * content: { coin: Coin, subtitle: string }[],\n * isCoinsDataReloadable: boolean\n * }\n * @param [showRequestMissingCoinsInfoMessage=true] {boolean} whether to show message about advising missing coins\n * @param [supportUrl] {string} needed when showRequestMissingCoinsInfoMessage=true\n * @param coinToIconPaths {function}\n * @param [partialLoadingEnabled=true] {boolean} enables only partialLoadingIncrement items are shown by default and user can show more clicking the load-more button\n * @param [partialLoadingIncrement=100]\n * @param [texts] {object} texts translated to desired locale, default texts use english locale\n */\nexport const CoinPicker = ({\n mode = COIN_PICKER_MODES.BUTTON,\n allCoins,\n initiallyEnabledCoinsList,\n handleClick = ticker => {},\n triggerToReloadData,\n search = false,\n searchAdaptive = true,\n setCoinPickerValue = () => {},\n setCoinPickerListChanged = () => {},\n loadCoinsAndContent = null,\n showRequestMissingCoinsInfoMessage = true,\n supportUrl = null,\n coinToIconPaths = coin => ({\n assetIconSrc: undefined,\n assetIconProtocolSrc: undefined,\n }),\n partialLoadingEnabled = true,\n partialLoadingIncrement = 100,\n texts = defaultTexts,\n}) => {\n const handleError = useCallHandlingErrors();\n\n const [coins, setCoins] = useState(null);\n const [filteredCoins, setFilteredCoins] = useState([]);\n const [initiallyEnabledCoins, setInitiallyEnabledCoins] = useReferredState({});\n const [currentlyEnabledCoins, setCurrentlyEnabledCoins] = useReferredState({});\n const [searchFieldValue, setSearchFieldValue] = useState(\"\");\n const [scrollWrapperClass, setScrollWrapperClass] = useState(\"\");\n\n const [searchEnabled, setSearchEnabled] = useState(false);\n const [coinsContent, setCoinsContent] = useState(null);\n const [isCoinsDataReloadable, setIsCoinsDataReloadable] = useState(false);\n\n const [limitedCoinsNumber, setLimitedCoinsNumber] = useState(0);\n const [displayedCoins, setDisplayedCoins] = useState([]);\n const [isListFull, setIsListFull] = useState(true);\n\n const searchRef = useRef();\n const scrollContainerRef = useRef();\n const skeletonItemsCount =\n initiallyEnabledCoinsList?.length || (partialLoadingEnabled ? partialLoadingIncrement : 6);\n\n const defaultLoadCoinsAndContent = async () => {\n const allCoinsSorted = sortCoinsArrayByAlphabet(allCoins, composeEnabledCoinsObject(allCoins));\n return {\n coins: allCoinsSorted,\n content: allCoinsSorted.map(c => ({\n coin: c,\n subtitle: c.blockchain?.name,\n })),\n isCoinsDataReloadable: false,\n };\n };\n\n const sortCoinsArrayByAlphabet = (coinsToSort, enabledCoinsObject) => {\n return [\n ...coinsToSort\n .filter(coin => enabledCoinsObject[coin.ticker])\n .sort((a, b) => a.latinName.toUpperCase() > b.latinName.toUpperCase()),\n ...coinsToSort\n .filter(coin => !enabledCoinsObject[coin.ticker])\n .sort((a, b) => a.latinName.toUpperCase() > b.latinName.toUpperCase()),\n ];\n };\n\n const composeEnabledCoinsObject = coins => {\n if (mode === COIN_PICKER_MODES.CHECKBOX) {\n return coins.reduce((prev, coin) => {\n return {\n ...prev,\n [coin.ticker]: !!initiallyEnabledCoinsList.find(enabledCoin => enabledCoin.ticker === coin.ticker),\n };\n }, {});\n }\n return {};\n };\n\n const handleToggleClick = (ticker, resetButtonLoader = () => {}) => {\n resetButtonLoader && resetButtonLoader();\n setCurrentlyEnabledCoins(prev => {\n return { ...prev, [ticker]: !prev[ticker] };\n });\n };\n\n const handleCoinClick = coin => {\n if (mode === COIN_PICKER_MODES.CHECKBOX) handleToggleClick(coin.ticker);\n handleClick(coin.ticker);\n };\n\n const handleSearchAsset = value => {\n // TODO: [refactoring, high] use unified search function. task_id=be0475316f374dd4a926c948d969e704\n setSearchFieldValue(value); // Trim the input to handle leading/trailing spaces\n const searchTerm = value.trim().toLowerCase();\n if (searchTerm !== \"\") {\n const searchWords = searchTerm.split(/\\s+/); // Split search terms on whitespace\n\n const filteredAndSortedCoins = coins\n .filter(coin => {\n // Check if all search words are found in any of the given properties\n return searchWords.every(\n word =>\n coin?.latinName?.toLowerCase().includes(word) ||\n coin?.ticker?.toLowerCase().includes(word) ||\n coin?.tickerPrintable?.toLowerCase().includes(word)\n );\n })\n .sort((a, b) => {\n // Check for exact matches\n const aMatch =\n a.latinName.toLowerCase() === searchTerm ||\n a.ticker.toLowerCase() === searchTerm ||\n a.tickerPrintable.toLowerCase() === searchTerm\n ? 1\n : 0;\n const bMatch =\n b.latinName.toLowerCase() === searchTerm ||\n b.ticker.toLowerCase() === searchTerm ||\n b.tickerPrintable.toLowerCase() === searchTerm\n ? 1\n : 0;\n if (bMatch - aMatch !== 0) {\n // Prioritize exact matches to the top\n return bMatch - aMatch;\n } else {\n // Sort remaining items alphabetically by latinName\n return a.latinName.toLowerCase().localeCompare(b.latinName.toLowerCase());\n }\n });\n\n setFilteredCoins(filteredAndSortedCoins);\n } else {\n setFilteredCoins(coins); // Reset to original list if search term is empty\n }\n };\n\n const loadCoinsAndSaveToState = () => {\n (async () => {\n try {\n const data = loadCoinsAndContent ? await loadCoinsAndContent() : await defaultLoadCoinsAndContent();\n setCoins(data.coins);\n setFilteredCoins(data.coins);\n setCoinsContent(data.content);\n setIsCoinsDataReloadable(!!data.isCoinsDataReloadable);\n } catch (e) {\n logErrorOrOutputToConsole(e);\n }\n })();\n };\n\n // Initializes enabled coins logic if the mode is CHECKBOX\n useEffect(() => {\n if (mode === COIN_PICKER_MODES.CHECKBOX) {\n const enabledCoinsObject = composeEnabledCoinsObject(allCoins);\n setInitiallyEnabledCoins(enabledCoinsObject);\n setCurrentlyEnabledCoins(enabledCoinsObject);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode]);\n\n useEffect(() => {\n loadCoinsAndSaveToState();\n if (isCoinsDataReloadable) {\n const intervalId = setInterval(loadCoinsAndSaveToState, 60000);\n return () => clearInterval(intervalId);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [triggerToReloadData]);\n\n useEffect(() => {\n const enabled = currentlyEnabledCoins.current;\n if (enabled) {\n const enabledCoinsTickers = Object.keys(enabled).filter(ticker => enabled[ticker]);\n setCoinPickerValue(enabledCoinsTickers);\n setCoinPickerListChanged(\n JSON.stringify(initiallyEnabledCoins.current) !== JSON.stringify(currentlyEnabledCoins.current)\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentlyEnabledCoins.current]);\n\n useEffect(() => {\n setSearchEnabled(\n search ? true : searchAdaptive && initiallyEnabledCoinsList ? initiallyEnabledCoinsList.length > 6 : false\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [search, searchAdaptive, coins]);\n\n useEffect(() => {\n if (filteredCoins?.length > partialLoadingIncrement && partialLoadingEnabled) {\n setLimitedCoinsNumber(partialLoadingIncrement);\n } else {\n setLimitedCoinsNumber(0);\n setDisplayedCoins(filteredCoins);\n setIsListFull(true);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filteredCoins]);\n\n useEffect(() => {\n if (limitedCoinsNumber > 0) {\n const coinsToDisplay = filteredCoins.slice(0, limitedCoinsNumber);\n setDisplayedCoins(coinsToDisplay);\n setIsListFull(coinsToDisplay.length === filteredCoins.length);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [limitedCoinsNumber]);\n\n const displayMoreCoins = () => {\n setLimitedCoinsNumber(prev => prev + partialLoadingIncrement);\n };\n\n const skeleton = () => {\n let skeletonItems = [];\n for (let i = 0; i < skeletonItemsCount; i++) {\n skeletonItems.push(\n <div className={s[\"item\"]} key={\"coin-picker-skeleton-\" + i}>\n <div className={s[\"link\"] + \" \" + s[\"loading\"]}>\n <div className={s[\"icon\"] + \" \" + s[\"skeleton-dark\"]}></div>\n <div className={s[\"content\"]}>\n <div className={s[\"name\"] + \" \" + s[\"skeleton-dark\"]}></div>\n <div className={s[\"amount\"] + \" \" + s[\"skeleton-dark\"]}></div>\n </div>\n </div>\n </div>\n );\n }\n return skeletonItems;\n };\n\n const handleScroll = () => {\n if (scrollWrapperClass !== \"\") setScrollWrapperClass(\"\");\n\n if (scrollContainerRef.current?.scrollTop === 0)\n setScrollWrapperClass(\n s[\"reached-top\"] +\n (scrollContainerRef.current?.scrollHeight - scrollContainerRef.current?.clientHeight === 0\n ? \" \" + s[\"reached-bottom\"]\n : \"\")\n );\n\n if (\n scrollContainerRef.current?.scrollTop > 0 &&\n scrollContainerRef.current?.scrollTop ===\n scrollContainerRef.current?.scrollHeight - scrollContainerRef.current?.clientHeight\n )\n setScrollWrapperClass(s[\"reached-bottom\"]);\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(handleScroll, []);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(handleScroll, [filteredCoins]);\n\n const shouldShowSkeleton = coins == null;\n\n return coins ? (\n <>\n <div className={s[\"coin-picker\"] + (shouldShowSkeleton ? \" \" + s[\"loading\"] : \"\")}>\n {searchEnabled ? (\n <div className={s[\"coin-picker-search\"]}>\n <Input\n value={searchFieldValue}\n onChange={e => handleSearchAsset(e.target.value)}\n placeholder={texts.searchPlaceholder}\n isSmallHeight={true}\n clearButton\n ref={searchRef}\n disabled={shouldShowSkeleton}\n />\n </div>\n ) : (\n \"\"\n )}\n <div\n className={\n s[\"coin-picker-wrapper\"] +\n \" \" +\n scrollWrapperClass +\n (searchEnabled ? \" \" + s[\"fixed-height\"] : \"\")\n }\n >\n <div\n className={s[\"coin-picker-wrapper-content\"] + (searchEnabled ? \" \" + s[\"fixed-height\"] : \"\")}\n ref={scrollContainerRef}\n onScroll={handleScroll}\n >\n <div className={s[\"coin-picker-wrapper-content-assets\"]}>\n {shouldShowSkeleton\n ? skeleton()\n : displayedCoins.map((coin, index) => {\n const { assetIconSrc, assetIconProtocolSrc } = coinToIconPaths(coin);\n\n return (\n <div\n className={s[\"item\"]}\n key={`picker-${coin.ticker}-${index}`}\n onClick={e => handleError(() => handleCoinClick(coin), e)}\n >\n <div\n className={\n s[\"link\"] +\n (currentlyEnabledCoins.current[coin.ticker] !==\n initiallyEnabledCoins.current[coin.ticker]\n ? \" \" + s[\"outline\"]\n : \"\")\n }\n >\n <AssetIcon\n assetIconSrc={assetIconSrc}\n assetIconProtocolSrc={assetIconProtocolSrc}\n fallbackSrc={FALLBACK_ASSET_ICON_URL}\n />\n <div className={s[\"content\"]} key={coin.ticker}>\n <p className={s[\"name\"]}>{coin.latinName}</p>\n <p className={s[\"amount\"]}>\n {coinsContent?.find(i => i.coin === coin)?.subtitle ?? \"\"}\n </p>\n </div>\n {mode === COIN_PICKER_MODES.BUTTON ? (\n <div className={s[\"arrow\"]}>\n <ArrowIcon />\n </div>\n ) : mode === COIN_PICKER_MODES.CHECKBOX ? (\n <div className={s[\"toggle-container\"]}>\n <RadioButtonWithText\n onStateChange={resetButtonLoader =>\n handleToggleClick(coin.ticker, resetButtonLoader)\n }\n isSwitchedOn={currentlyEnabledCoins.current[coin.ticker]}\n id={index}\n />\n </div>\n ) : (\n \"\"\n )}\n </div>\n </div>\n );\n })}\n </div>\n\n {filteredCoins?.length === 0 && searchFieldValue !== \"\" ? (\n <div className={s[\"coin-picker-wrapper-content-asset-not-found\"]}>\n <h6>{texts.noAssetsMessage}</h6>\n </div>\n ) : (\n \"\"\n )}\n {partialLoadingEnabled && !isListFull ? (\n <div className={s[\"coin-picker-wrapper-content-load-more-button\"]}>\n <Button\n mode=\"primary-transparent\"\n size=\"sm\"\n loader={false}\n content={texts.loadMoreButton}\n onClick={displayMoreCoins}\n handleError={handleError}\n />\n </div>\n ) : (\n \"\"\n )}\n {searchEnabled && showRequestMissingCoinsInfoMessage ? (\n <div className={s[\"coin-picker-wrapper-content-bottom-message\"]}>\n <InformationMessage\n text={\n <>\n {texts.assetSuggestionMessage.part1}\n <a\n target=\"_blank\"\n rel=\"noreferrer\"\n href={supportUrl}\n className={s[\"coin-picker-wrapper-content-bottom-message-link\"]}\n >\n {\" \" + texts.assetSuggestionMessage.part2 + \" \"}\n </a>\n {texts.assetSuggestionMessage.part3}\n </>\n }\n />\n </div>\n ) : (\n \"\"\n )}\n </div>\n </div>\n </div>\n </>\n ) : (\n <LoadingDots />\n );\n};\n\nCoinPicker.propTypes = {\n mode: PropTypes.oneOf([COIN_PICKER_MODES.BUTTON, COIN_PICKER_MODES.CHECKBOX]),\n allCoins: PropTypes.array,\n initiallyEnabledCoinsList: PropTypes.array,\n handleClick: PropTypes.func,\n triggerToReloadData: PropTypes.number,\n search: PropTypes.bool,\n searchAdaptive: PropTypes.bool,\n setCoinPickerValue: PropTypes.func,\n setCoinPickerListChanged: PropTypes.func,\n loadCoinsAndContent: PropTypes.func,\n showRequestMissingCoinsInfoMessage: PropTypes.bool,\n supportUrl: PropTypes.string,\n coinToIconPaths: PropTypes.func,\n partialLoadingEnabled: PropTypes.bool,\n partialLoadingIncrement: PropTypes.number,\n texts: PropTypes.shape({\n searchPlaceholder: PropTypes.string,\n noAssetsMessage: PropTypes.string,\n loadMoreButton: PropTypes.string,\n assetSuggestionMessage: PropTypes.shape({\n part1: PropTypes.string,\n part2: PropTypes.string,\n part3: PropTypes.string,\n }),\n }),\n};\n\nCoinPicker.defaultProps = {\n mode: COIN_PICKER_MODES.BUTTON,\n handleClick: ticker => {},\n search: false,\n searchAdaptive: true,\n setCoinPickerValue: () => {},\n setCoinPickerListChanged: () => {},\n loadCoinsAndContent: null,\n showRequestMissingCoinsInfoMessage: true,\n supportUrl: null,\n coinToIconPaths: coin => ({\n assetIconSrc: undefined,\n assetIconProtocolSrc: undefined,\n }),\n partialLoadingEnabled: true,\n partialLoadingIncrement: 100,\n texts: defaultTexts,\n};\n","import React from \"react\";\n\nimport { CoinPicker } from \"../../molecules/CoinPicker/CoinPicker.jsx\";\nimport { DialogStep } from \"../Dialog/DialogStep/DialogStep.jsx\";\nimport { DIALOG_SIZES } from \"../../../constants/organisms/dialog/dialog.js\";\n\nexport const CoinPickerDialogStep = ({\n stepName,\n controls,\n title,\n subtitle,\n handleCoinSelection = () => {},\n cornerBackButtonTitle,\n cornerBackButtonClick = null,\n confirmButtonText,\n confirmButtonClick,\n showCornerBackButton,\n mode,\n allCoins,\n initiallyEnabledCoinsList,\n triggerToReloadData,\n search,\n searchAdaptive,\n loadCoinsAndContent,\n showRequestMissingCoinsInfoMessage,\n coinToIconPaths = coin => ({\n assetIconSrc: undefined,\n assetIconProtocolSrc: undefined,\n }),\n supportUrl,\n texts,\n}) => {\n return (\n <DialogStep\n controls={controls}\n stepName={stepName}\n title={title}\n subtitle={subtitle}\n cornerBackButtonTitle={cornerBackButtonTitle}\n cornerBackButtonClick={cornerBackButtonClick}\n confirmButtonText={confirmButtonText}\n confirmButtonClick={confirmButtonClick}\n showCornerBackButton={showCornerBackButton}\n headerTitleLeft={true}\n subtitleSmallMargin={true}\n width={controls ? DIALOG_SIZES.largePlus.width : null}\n >\n <CoinPicker\n mode={mode}\n allCoins={allCoins}\n initiallyEnabledCoinsList={initiallyEnabledCoinsList}\n handleClick={ticker => handleCoinSelection(ticker)}\n triggerToReloadData={triggerToReloadData}\n search={search}\n searchAdaptive={searchAdaptive}\n loadCoinsAndContent={loadCoinsAndContent}\n showRequestMissingCoinsInfoMessage={showRequestMissingCoinsInfoMessage}\n coinToIconPaths={coinToIconPaths}\n supportUrl={supportUrl}\n texts={texts}\n />\n </DialogStep>\n );\n};\n","const PARAMETER_VALUES_SEPARATOR = \"|*|\"; // Sting that with high probability will not be in the user's data\n\n/**\n * Adds specified parameter with values to the URL query string\n *\n * @param parameterName - String - name of the parameter\n * @param values - Array of String values\n * @param updateURLCallback - callback that will be called with the updated query string. Can be used to save it to URL\n */\nexport function saveQueryParameterAndValues(parameterName, values, updateURLCallback = newQueryString => {}) {\n let parametersAndValues = parseSearchString();\n parametersAndValues = parametersAndValues.filter(parameterAndValues => parameterAndValues[0] !== parameterName);\n const parameterValuesForURL = encodeURIComponent(values.join(PARAMETER_VALUES_SEPARATOR));\n parametersAndValues.push([parameterName, parameterValuesForURL]);\n const newQueryString = `?${parametersAndValues.map(parameterAndValues => parameterAndValues.join(\"=\")).join(\"&\")}`;\n updateURLCallback(newQueryString);\n\n return newQueryString;\n}\n\n/**\n * Removes specified parameter with values from the URL query string\n *\n * @param parameterName - String - name of the parameter\n * @param updateURLCallback - callback that will be called with the updated query string. Can be used to save it to URL\n */\n// TODO: [tests, moderate] units required the same as or other functions in this module\nexport function removeQueryParameterAndValues(parameterName, updateURLCallback = newQueryString => {}) {\n let parametersAndValues = parseSearchString();\n parametersAndValues = parametersAndValues.filter(parameterAndValues => parameterAndValues[0] !== parameterName);\n const newQueryString = `?${parametersAndValues.map(parameterAndValues => parameterAndValues.join(\"=\")).join(\"&\")}`;\n updateURLCallback(newQueryString);\n\n return newQueryString;\n}\n\n/**\n * Retrieves parameter values from the URL query string.\n *\n * If there are several parameters with the same name in the URL then all their values are returned\n *\n * @param name {string} - parameter name\n * @return {string[]} [] - if the parameter is not present in URL. [\"\"] - if parameter present but has empty value\n */\nexport function getQueryParameterValues(name) {\n return parseSearchString()\n .filter(parameterAndValue => parameterAndValue[0] === name)\n .reduce((allValues, parameterAndValue) => {\n const values = decodeURIComponent(parameterAndValue[1] || \"\").split(PARAMETER_VALUES_SEPARATOR);\n return [...allValues, ...values];\n }, []);\n}\n\nfunction parseSearchString() {\n const trimmed = (window.location.search?.slice(1) || \"\").trim();\n\n return (trimmed && trimmed.split(\"&\").map(parameterAndValue => parameterAndValue.split(\"=\"))) || [];\n}\n\nexport function getQueryParameterSingleValue(name) {\n return (getQueryParameterValues(name) || [])[0];\n}\n","export class Blockchain {\n /**\n * @param name {string} latin printable name of blockchain\n * @param supportedProtocols {Protocol[]}\n */\n constructor(name, supportedProtocols = []) {\n this.name = name;\n this.supportedProtocols = supportedProtocols;\n }\n}\n","export class Protocol {\n constructor(protocolName) {\n this.protocol = protocolName;\n }\n}\n","import { improveAndRethrow } from \"./../errorUtils.js\";\n\n/**\n * The model for cryptocurrency coins.\n *\n * WARNING: this class should not be instantiated directly. Use only predefined singleton Coin (or descendants) instances.\n */\nexport class Coin {\n /**\n * Creates new coin\n *\n * @param latinName {string} the coin name in latin symbols like \"Bitcoin\"\n * @param ticker {string} the coin symbol/ticker/code like 'BTC'. Always upper case. A unique coin identifier\n * @param tickerPrintable {string} ticker but in printable format. Useful for tokens based on external blockchains\n * like ERC20 or TRC20. It is not friendly to display USDTERC20 or BUSDTRC20 - more neat options are just\n * USDT and BUSD. Note that you should always care about user's understanding of what coin he/she is working\n * with as printable ticker for USDTERC20 and USDTTRC20 are the same.\n * @param digitsCountAfterComma {number} count of digits after the comma. E.g. 8 for bitcoin\n * @param maxValue {number|null} max possible value for cryptocurrency. Null means that the currency has no max possible value\n * @param atomName {string} name of the coin's atomic value. Like 'satoshi' for bitcoin\n * @param mainnet {Network} main network for this coin\n * @param testnet {Network} test network for this coin\n * @param minConfirmations {number} min confirmations count to treat the coin's transaction confirmed\n * @param payableEntityStringForFeeRate {string|null} the payable fee entity like byte for bitcoin or gas for ether if present\n * @param feeOptionsTimeStringsSortedDesc {string[]} array of 4 strings for fee options when sending coins. Should be sorted from the highest time to the smallest\n * @param feeRatesExpirationTimeMs {number} number of milliseconds to treat the fee rates as expired\n * @param blockchain {Blockchain} blockchain object\n * @param [protocol] {Protocol|null} token/coin protocol if relevant\n * @param [tokenAddress] {string|null} address of contract of this token (if the coin is token)\n * @param [doesUseLowerCaseAddresses] {boolean} flag to clarify whether we can use lower case addresses to ensure more robust comparisons\n * @param [doesUseOutputs=false] {boolean} true if this coin uses inputs/outputs concept and false if it uses just balances\n */\n constructor(\n latinName,\n ticker,\n tickerPrintable,\n digitsCountAfterComma,\n maxValue,\n atomName,\n mainnet,\n testnet,\n minConfirmations,\n payableEntityStringForFeeRate,\n feeOptionsTimeStringsSortedDesc,\n feeRatesExpirationTimeMs,\n blockchain,\n protocol = null,\n tokenAddress = null,\n doesUseLowerCaseAddresses = true,\n doesUseOutputs = false\n ) {\n this.latinName = latinName;\n this.ticker = ticker;\n this.tickerPrintable = tickerPrintable;\n this.digits = digitsCountAfterComma;\n this.maxValue = maxValue;\n this.atomName = atomName;\n this.mainnet = mainnet;\n this.testnet = testnet;\n this.minConfirmations = minConfirmations;\n this.payableEntityStringForFeeRate = payableEntityStringForFeeRate;\n this.feeOptionsTimeStringsSortedDesc = feeOptionsTimeStringsSortedDesc;\n this.feeRatesExpirationTimeMs = feeRatesExpirationTimeMs;\n this.protocol = protocol;\n this.blockchain = blockchain;\n // TODO: [bug, critical] use testnet property for testnet contract address as it blocks the app work in testnets\n this.tokenAddress = tokenAddress;\n this.feeCoin = this;\n this._significantDigits = 8;\n this.doesUseLowerCaseAddresses = doesUseLowerCaseAddresses;\n this.doesUseOutputs = doesUseOutputs;\n }\n\n /**\n * Sets fee coin\n *\n * @param feeCoin {Coin} some tokens use another coin to charge transaction fee as they work on top of some external\n * blockchain. So pass here the coin the token uses for fee charging. Like for ERC20 token the fee coin is ETH.\n * By default, the creating coin will be set as a value for this field.\n */\n setFeeCoin(feeCoin) {\n this.feeCoin = feeCoin;\n }\n\n /**\n * Checks whether this coin uses another coin (blockchain) to charge fee for transactions (means works on base of\n * some external blockchain).\n *\n * @return {boolean} true if this coin uses external blockchain to perform transactions and charge fee\n */\n doesUseDifferentCoinFee() {\n return this.feeCoin !== this;\n }\n\n /**\n * Converts the given atoms string/number to string representing the same amount in coin itself - floating point number\n *\n * @param atoms {string} atoms positive integer amount\n * @return {string} coin amount floating point number as a string\n */\n atomsToCoinAmount(atoms) {\n throw new Error(\"Not implemented in base Coin\");\n }\n\n /**\n * Converts the given coins amount string/number to string representing the same amount in coin atoms - integer number\n *\n * @param coinsAmount {string} coins positive floating point amount\n * @return {string} coin atoms amount integer number as a string\n */\n coinAmountToAtoms(coinsAmount) {\n throw new Error(\"Not implemented in base Coin\");\n }\n\n /**\n * Composes URL to view the tx with given id in the external blockchain explorer\n *\n * @param txId {string} id of transaction\n * @return {string} URL string\n */\n composeUrlToTransactionExplorer(txId) {\n throw new Error(\"Not implemented in base Coin\");\n }\n\n /**\n * Most of the cryptocurrencies has specific fee rate or fee price metric. This value usually has specific measure\n * like satoshi/byte or gWei/gas. This function adds the described denomination string to the given amount\n * as a suffix and returns the result string ready to be show to a user.\n *\n * @param coinAtomsString {string} coin atoms positive integer amount\n * @return {string} string of coin amount and fee rate units\n */\n coinAtomsFeeRateToCommonlyUsedAmountFormatWithDenominationString(coinAtomsString) {\n throw new Error(\"Not implemented in base Coin\");\n }\n\n /**\n * Check whether this coin support transaction prioritisation during the sending process.\n *\n * @return {boolean} true if support transaction prioritisation and false otherwise\n */\n doesSupportTransactionPrioritisation() {\n return Array.isArray(this.feeOptionsTimeStringsSortedDesc);\n }\n\n tickerAndProtocol() {\n try {\n return `${this.tickerPrintable}${this.protocol ? \" \" + this.protocol.protocol ?? \"\" : \"\"}`;\n } catch (e) {\n improveAndRethrow(e, \"tickerAndProtocol\");\n }\n }\n}\n","import { improveAndRethrow } from \"../errorUtils.js\";\nimport { Logger } from \"./logging/logger.js\";\n\n/**\n * TODO: [tests, critical] Ued by payments logic\n *\n * Simple cache based on Map.\n * Provides ability to store event-dependent data.\n */\nexport class Cache {\n /**\n * @param [eventBus=null] {EventBus} EventBus.js lib instance if you plan to use Cache with events handling\n * @param [noSessionEvents=[]] {string[]} array of events that will be treated as \"no session\", you should pass EventBus to make it work\n */\n constructor(eventBus = null, noSessionEvents = []) {\n this._cache = new Map();\n this._eventDependentDataKeys = [];\n this._noSessionEvents = noSessionEvents;\n this._eventBus = eventBus;\n }\n\n _setupIntervalClearingExpired() {\n let cleaner = function () {\n try {\n for (const key of this._cache.keys()) {\n const item = this._cache.get(key);\n if (item && item.ttlMs && item.addedMsTimestamp + item.ttlMs < Date.now()) {\n this._cache.delete(key);\n }\n }\n } catch (e) {\n improveAndRethrow(e, \"_intervalClearingExpiredCache\");\n }\n };\n\n cleaner = cleaner.bind(this);\n\n setInterval(cleaner, 1000);\n }\n\n /**\n * Puts data to cache\n *\n * @param key {string} string key for this data\n * @param data {any} any data\n * @param ttlMs {number|null} optional milliseconds number for cache lifetime\n * @throws {Error} when the data is null/undefined because these values for data are reserved for internal logic\n */\n put(key, data, ttlMs = null) {\n try {\n if (typeof key !== \"string\" || data == null) {\n throw new Error(`Trying to cache corrupted data: ${key}, ${data}`);\n }\n this._cache.set(key, {\n data: data,\n addedMsTimestamp: Date.now(),\n ttlMs: ttlMs,\n });\n } catch (e) {\n improveAndRethrow(e, \"cache.put\");\n }\n }\n\n putSessionDependentData(key, data, ttlMs = null) {\n this._putEventDependentData(key, data, this._noSessionEvents, ttlMs);\n }\n\n /**\n * Puts data to cache and adds its key to list of keys that should be related by each of given events.\n *\n * @param key {string} key for cache\n * @param data {any} any caching data\n * @param events {string[]} list of events forcing putting data to be removed when triggered\n * @param ttlMs {|null} optional time to live for this cache item\n * @throws {Error} when the data is null/undefined because these values for data are reserved for internal logic\n */\n putEventDependentData(key, data, events, ttlMs = null) {\n this._putEventDependentData(key, data, events, ttlMs);\n }\n\n _putEventDependentData(key, data, events, ttlMs = null) {\n try {\n if (typeof key !== \"string\" || data == null) {\n throw new Error(`Trying to cache corrupted data: ${key}, ${data}`);\n }\n this._cache.set(key, {\n data: data,\n addedMsTimestamp: Date.now(),\n ttlMs: ttlMs,\n });\n for (let event of events) {\n const eventAndKeys = this._eventDependentDataKeys.find(item => item[0] === event);\n if (eventAndKeys) {\n eventAndKeys.push(key);\n } else if (this._eventBus) {\n this._eventDependentDataKeys.push([event, key]);\n this._eventBus.addEventListener(event, () => {\n try {\n const keys = this._eventDependentDataKeys.find(item => item[0] === event);\n (keys ?? [event]).slice(1).forEach(key => this._cache.delete(key));\n } catch (e) {\n Logger.logError(e, \"cache.removing-for-event\", `Event: ${event}`);\n }\n });\n }\n }\n } catch (e) {\n improveAndRethrow(e, \"cache.putEventDependentData\");\n }\n }\n\n // TODO: [feature, low] add clearing of expired data by schedule\n get(key) {\n try {\n const item = this._cache.get(key);\n if (item) {\n if (item.addedMsTimestamp && item.ttlMs !== null && item.addedMsTimestamp + item.ttlMs < Date.now()) {\n this._cache.delete(key);\n return null;\n } else {\n return item.data;\n }\n }\n\n return null;\n } catch (e) {\n improveAndRethrow(e, \"cache.get\");\n }\n }\n\n getLastUpdateTimestamp(key) {\n return this._cache.get(key)?.addedMsTimestamp ?? null;\n }\n\n /**\n * Updates the timestamp of the last update for specified key to the provided value.\n * Can be useful when TTL is controlled outside this class.\n *\n * @param key {string}\n * @param timestamp {number}\n * @return {boolean}\n */\n setLastUpdateTimestamp(key, timestamp) {\n try {\n const item = this._cache.get(key);\n if (item != null && typeof timestamp === \"number\") {\n this._cache.set(key, { ...item, addedTimestampMs: timestamp });\n return true;\n }\n return false;\n } catch (e) {\n improveAndRethrow(\"cache.setLastUpdateTimestamp\");\n }\n }\n\n invalidate(key) {\n try {\n this._cache.delete(key);\n } catch (e) {\n improveAndRethrow(e, \"cache.invalidate\");\n }\n }\n\n invalidateContaining(keyPart) {\n if (typeof keyPart !== \"string\" || keyPart === \"\") {\n throw new Error(\"Trying to invalidate containing wrong key or empty key: \" + keyPart);\n }\n\n try {\n const matchedKeys = Array.from(this._cache.keys()).filter(\n key => typeof key === \"string\" && new RegExp(keyPart).test(key)\n );\n for (let i = 0; i < matchedKeys.length; ++i) {\n this._cache.delete(matchedKeys[i]);\n }\n } catch (e) {\n improveAndRethrow(e, \"invalidateContaining\");\n }\n }\n\n clear() {\n this._cache.clear();\n this._sessionDependentDataKeys = [];\n }\n\n /**\n * Saves given data string to persistent cache.\n * NOTE: we have no TTL here, implement if needed.\n *\n * WARNING: use only when really needed and don't store big data as we use localStorage\n * under the hood and its capacity is restricted.\n *\n * @param uniqueKey {string} the key should be unique\n * @param data {string} only string data allowed\n */\n putClientPersistentData(uniqueKey, data) {\n try {\n if (typeof window !== \"undefined\") {\n localStorage.setItem(uniqueKey, data);\n }\n } catch (e) {\n improveAndRethrow(e, \"cache.putClientPersistentData\");\n }\n }\n\n /**\n * @param uniqueKey {string}\n * @return {string|null}\n */\n getClientPersistentData(uniqueKey) {\n try {\n if (typeof window !== \"undefined\") {\n return localStorage.getItem(uniqueKey);\n }\n return null;\n } catch (e) {\n improveAndRethrow(e, \"cache.getClientPersistentData\");\n }\n }\n\n /**\n * Only makes effect if the TTL is not null.\n *\n * @param key {string}\n * @param ttlMs {number|null}\n */\n markCacheItemAsExpiredButDontRemove(key, ttlMs = null) {\n try {\n const item = this._cache.get(key);\n const ttlFinalMs = ttlMs ?? item?.ttlMs;\n if (item != null && ttlFinalMs) {\n this._cache.set(key, {\n data: item.data,\n addedMsTimestamp: Date.now() - ttlFinalMs - 1,\n ttlMs: ttlFinalMs,\n });\n }\n } catch (e) {\n improveAndRethrow(e, \"cache.markCacheItemAsExpiredButDontRemove\");\n }\n }\n}\n","export function postponeExecution(execution, timeoutMS = 1000) {\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n resolve(await execution());\n } catch (e) {\n reject(e);\n }\n }, timeoutMS);\n });\n}\n","import axios from \"axios\";\n\nexport class AxiosAdapter {\n static async call(method, ...args) {\n return await axios[method](...args);\n }\n\n static async get(...args) {\n return await axios.get(...args);\n }\n\n static async post(...args) {\n return await axios.post(...args);\n }\n\n static async put(...args) {\n return await axios.put(...args);\n }\n\n static async delete(...args) {\n return await axios.delete(...args);\n }\n\n static async patch(...args) {\n return await axios.patch(...args);\n }\n\n static async options(...args) {\n return await axios.options(...args);\n }\n\n static async head(...args) {\n return await axios.head(...args);\n }\n}\n","import axios from \"axios\";\n\nimport { improveAndRethrow } from \"../errorUtils.js\";\n\nexport class EmailsApi {\n static serverEndpointEntity = \"emails\";\n\n static async sendEmail(subject, body) {\n try {\n const url = `${window.location.protocol + \"//\" + window.location.host}/api/v1/${this.serverEndpointEntity}`;\n await axios.post(url, { subject, body });\n } catch (e) {\n improveAndRethrow(e, \"sendEmail\", subject + body);\n }\n }\n}\n","export class ExternalApiProvider {\n /**\n * Creates an instance of external api provider.\n *\n * If you need sub-request then use 'subRequestIndex' to check current request index in functions below.\n * Also use array for 'httpMethod'.\n *\n * If the endpoint of dedicated provider has pagination then you should customize the behavior using\n * \"changeQueryParametersForPageNumber\", \"checkWhetherResponseIsForLastPage\".\n *\n * We perform RPS counting all over the App to avoid blocking our clients due to abuses of the providers.\n *\n * @param endpoint {string} URL to the provider's endpoint. Note: you can customize it using composeQueryString\n * @param [httpMethod] {string|string[]} one of \"get\", \"post\", \"put\", \"patch\", \"delete\" or an array of these values\n * for request having sub-requests\n * @param [timeout] {number} number of milliseconds to wait for the response\n * @param [apiGroup] {ApiGroup} singleton object containing parameters of API group. Helpful when you use the same\n * api for different providers to avoid hardcoding RPS inside each provider what can cause mistakes\n * @param [specificHeaders] {Object} contains specific keys (headers) and values (their content) if needed for this provider\n * @param [maxPageLength] {number} optional number of items per page if the request supports pagination\n */\n constructor(\n endpoint,\n httpMethod,\n timeout,\n apiGroup,\n specificHeaders = {},\n maxPageLength = Number.MAX_SAFE_INTEGER\n ) {\n this.endpoint = endpoint;\n this.httpMethod = httpMethod ?? \"get\";\n // TODO: [refactoring, critical] We have two timeouts for robust data retrieval - here and inside the service method call, need to remain the only\n this.timeout = timeout ?? 10000;\n // TODO: [refactoring, critical] We need single place for all RPSes as we use them as hardcoded constants now inside different services\n this.apiGroup = apiGroup;\n this.maxPageLength = maxPageLength ?? Number.MAX_SAFE_INTEGER;\n this.niceFactor = 1;\n this.specificHeaders = specificHeaders ?? {};\n }\n\n getRps() {\n return this.apiGroup.rps ?? 2;\n }\n\n isRpsExceeded() {\n return this.apiGroup.isRpsExceeded();\n }\n\n actualizeLastCalledTimestamp() {\n this.apiGroup.actualizeLastCalledTimestamp();\n }\n\n getApiGroupId() {\n return this.apiGroup.id;\n }\n\n /**\n * Some endpoint can require several sub requests. Example is one request to get confirmed transactions\n * and another request for unconfirmed transactions. You should override this method to return true for such requests.\n *\n * @return {boolean} true if this provider requires several requests to retrieve the data\n */\n doesRequireSubRequests() {\n return false;\n }\n\n /**\n * Some endpoint support pagination. Override this method if so and implement corresponding methods.\n *\n * @return {boolean} true if this provider requires several requests to retrieve the data\n */\n doesSupportPagination() {\n return false;\n }\n\n /**\n * Composes a query string to be added to the endpoint of this provider.\n *\n * @param params {any[]} params array passed to the RobustExternalAPICallerService\n * @param [subRequestIndex] {number} optional number of the sub-request the call is performed for\n * @returns {string} query string to be concatenated with endpoint\n */\n composeQueryString(params, subRequestIndex = 0) {\n return \"\";\n }\n\n /**\n * Composes a body to be added to the request\n *\n * @param params {any[]} params array passed to the RobustExternalAPICallerService\n * @param [subRequestIndex] {number} optional number of the sub-request the call is performed for\n * @returns {string}\n */\n composeBody(params, subRequestIndex = 0) {\n return \"\";\n }\n\n /**\n * Extracts data from the response and returns it\n *\n * @param response {Object} HTTP response returned by provider\n * @param [params] {any[]} params array passed to the RobustExternalAPICallerService\n * @param [subRequestIndex] {number} optional number of the sub-request the call is performed for\n * @param iterationsData {any[]} array of data retrieved from previous sub-requests\n * @returns {any}\n */\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return [];\n }\n\n /**\n * Function changing the query string according to page number and previous response\n * Only for endpoints supporting pagination\n *\n * @param params {any[]} params array passed to the RobustExternalAPICallerService\n * @param previousResponse {Object} HTTP response returned by provider for previous call (previous page)\n * @param pageNumber {number} new page number. We count from 0. You need to manually increment with 1 if your\n * provider counts pages starting with 1\n * @param [subRequestIndex] {number} optional number of the sub-request the call is performed for\n * @returns {any[]}\n */\n changeQueryParametersForPageNumber(params, previousResponse, pageNumber, subRequestIndex = 0) {\n return params;\n }\n\n /**\n * Function checking whether the response is for the last page to stop requesting for a next page.\n * Only for endpoints supporting pagination.\n *\n * @param previousResponse {Object} HTTP response returned by provider for previous call (previous page)\n * @param currentResponse {Object} HTTP response returned by provider for current call (current page, next after the previous)\n * @param currentPageNumber {number} current page number (for current response)\n * @param [subRequestIndex] {number} optional number of the sub-request the call is performed for\n * @returns {boolean}\n */\n checkWhetherResponseIsForLastPage(previousResponse, currentResponse, currentPageNumber, subRequestIndex = 0) {\n return true;\n }\n\n /**\n * Resets the nice factor to default value\n */\n resetNiceFactor() {\n this.niceFactor = 1;\n }\n\n /**\n * Internal method used for requests requiring sub-requests.\n *\n * @param iterationsData {any[]} iterations data retrieved from getDataByResponse called per sub-request.\n * @return {any} by default flatten the passed iterations data array. Should be redefined if you need another logic.\n */\n incorporateIterationsData(iterationsData) {\n return iterationsData.flat();\n }\n}\n","/**\n * Models a group of APIs provided by the same owner and used for different services in our app.\n * It means we need to mention RPS several times for each usage and also have some holder of last call timestamp per\n * api group. So this concept allows to use it for exact ExternalApiProvider and make sure that you use the same\n * RPS value and make decisions on base of the same timestamp of last call to the API group owner.\n */\nexport class ApiGroup {\n constructor(id, rps, backendProxyIdGenerator = null) {\n this.id = id;\n this.rps = rps;\n this.lastCalledTimestamp = null;\n this.backendProxyIdGenerator = backendProxyIdGenerator;\n }\n\n isRpsExceeded() {\n return (this.lastCalledTimestamp ?? 0) + Math.floor(1000 / this.rps) > Date.now();\n }\n\n actualizeLastCalledTimestamp() {\n this.lastCalledTimestamp = Date.now();\n }\n}\n\nexport const ApiGroups = {\n /**\n * Currently we use free version of etherscan provider with 0.2 RPS. But we have API key with 100k requests free\n * per month. So we can add it if not enough current RPS.\n */\n ETHERSCAN: new ApiGroup(\"etherscan\", 0.17), // Actually 0.2 but fails sometime, so we use smaller\n ALCHEMY: new ApiGroup(\"alchemy\", 0.3, networkKey => `alchemy-${networkKey}`),\n BLOCKSTREAM: new ApiGroup(\"blockstream\", 0.2),\n BLOCKCHAIN_INFO: new ApiGroup(\"blockchain.info\", 1),\n BLOCKNATIVE: new ApiGroup(\"blocknative\", 0.5),\n ETHGASSTATION: new ApiGroup(\"ethgasstation\", 0.5),\n TRONGRID: new ApiGroup(\"trongrid\", 0.3, networkKey => `trongrid-${networkKey}`),\n TRONSCAN: new ApiGroup(\"tronscan\", 0.3),\n GETBLOCK: new ApiGroup(\"getblock\", 0.3),\n COINCAP: new ApiGroup(\"coincap\", 0.5), // 200 per minute without API key\n COINGECKO: new ApiGroup(\"coingecko\", 0.9), // actually 0.13-0.5 according to the docs but we use smaller due to expirienced frequent abuses\n MESSARI: new ApiGroup(\"messari\", 0.2),\n BTCCOM: new ApiGroup(\"btccom\", 0.2),\n BITAPS: new ApiGroup(\"bitaps\", 0.25), // Docs say that RPS is 3 but using it causes frequent 429 HTTP errors\n CEX: new ApiGroup(\"cex\", 0.5), // Just assumption for RPS\n BIGDATACLOUD: new ApiGroup(\"bigdatacloud\", 1), // Just assumption for RPS\n TRACKIP: new ApiGroup(\"trackip\", 1), // Just assumption for RPS\n IPIFY: new ApiGroup(\"ipify\", 1), // Just assumption for RPS\n WHATISMYIPADDRESS: new ApiGroup(\"whatismyipaddress\", 1), // Just assumption for RPS\n EXCHANGERATE: new ApiGroup(\"exchangerate\", 1), // Just assumption for RPS\n FRANKFURTER: new ApiGroup(\"frankfurter\", 1), // Just assumption for RPS\n BITGO: new ApiGroup(\"bitgo\", 1), // Just assumption for RPS\n BITCOINER: new ApiGroup(\"bitcoiner\", 1), // Just assumption for RPS\n BITCORE: new ApiGroup(\"bitcore\", 1), // Just assumption for RPS\n // BLOCKCHAIR: new ApiGroup(\"blockchair\", 0.04), // this provider require API key for commercial use (10usd 10000 reqs), we will add it later\n MEMPOOL: new ApiGroup(\"mempool\", 0.2), // Just assumption for RPS\n};\n","import { v4 } from \"uuid\";\n\nimport { Logger } from \"../common/utils/logging/logger.js\";\n\n// TODO: [refactoring, low] Consider removing this logic task_id=c360f2af75764bde8badd9ff1cc00d48\nexport class ConcurrentCalculationsMetadataHolder {\n constructor() {\n this._calculations = {};\n }\n\n startCalculation(domain, calculationsHistoryMaxLength = 100) {\n if (!this._calculations[domain]) {\n this._calculations[domain] = [];\n }\n\n if (this._calculations[domain].length > calculationsHistoryMaxLength) {\n this._calculations[domain] = this._calculations[domain].slice(\n Math.round(calculationsHistoryMaxLength * 0.2)\n );\n }\n\n const newCalculation = {\n startTimestamp: Date.now(),\n endTimestamp: null,\n uuid: v4(),\n };\n\n this._calculations[domain].push(newCalculation);\n\n return newCalculation.uuid;\n }\n\n endCalculation(domain, uuid, isFailed = false) {\n try {\n const calculation = this._calculations[domain].find(calculation => calculation?.uuid === uuid);\n if (calculation) {\n calculation.endTimestamp = Date.now();\n calculation.isFiled = isFailed;\n }\n\n const elapsed = (((calculation?.endTimestamp ?? 0) - (calculation?.startTimestamp ?? 0)) / 1000).toFixed(1);\n Logger.log(\"endCalculation\", `${elapsed} ms: ${domain}.${(calculation?.uuid ?? \"\").slice(0, 7)}`);\n\n return calculation;\n } catch (e) {\n Logger.logError(e, \"endCalculation\");\n }\n }\n\n isCalculationLate(domain, uuid) {\n const queue = this._calculations[domain];\n const analysingCalculation = queue.find(item => item.uuid === uuid);\n return (\n analysingCalculation &&\n !!queue.find(\n calculation =>\n calculation.endTimestamp != null && calculation.startTimestamp > analysingCalculation.startTimestamp\n )\n );\n }\n\n printCalculationsWaitingMoreThanSpecifiedSeconds(waitingLastsMs = 2000) {\n const calculations = Object.keys(this._calculations)\n .map(domain => this._calculations[domain].map(c => ({ ...c, domain })))\n .flat()\n .filter(c => c.endTimestamp === null && Date.now() - c.startTimestamp > waitingLastsMs);\n Logger.log(\n \"printCalculationsWaitingMoreThanSpecifiedSeconds\",\n `Calculations waiting more than ${(waitingLastsMs / 1000).toFixed(1)}s:\\n` +\n calculations.map(c => `${c.domain}.${c.uuid.slice(0, 8)}: ${Date.now() - c.startTimestamp}\\n`)\n );\n }\n}\n\nexport const concurrentCalculationsMetadataHolder = new ConcurrentCalculationsMetadataHolder();\n","import { improveAndRethrow } from \"../common/errorUtils.js\";\nimport { Logger } from \"../common/utils/logging/logger.js\";\n\nexport class ExternalServicesStatsCollector {\n constructor() {\n this.stats = new Map();\n }\n\n externalServiceFailed(serviceUrl, message) {\n try {\n const processMessage = (stat, errorMessage) => {\n const errors = stat.errors ?? {};\n errorMessage = errorMessage ?? \"\";\n if (errorMessage.match(/.*network.+error.*/i)) {\n errors[\"networkError\"] = (errors[\"networkError\"] || 0) + 1;\n } else if (errorMessage.match(/.*timeout.+exceeded.*/i)) {\n errors[\"timeoutExceeded\"] = (errors[\"timeoutExceeded\"] || 0) + 1;\n } else if (errors[\"other\"]) {\n errors[\"other\"].push(message);\n } else {\n errors[\"other\"] = [message];\n }\n\n stat.errors = errors;\n };\n\n if (this.stats.has(serviceUrl)) {\n const stat = this.stats.get(serviceUrl);\n stat.callsCount += 1;\n stat.failsCount += 1;\n processMessage(stat, message);\n } else {\n this.stats.set(serviceUrl, { callsCount: 1, failsCount: 1 });\n processMessage(this.stats.get(serviceUrl), message);\n }\n } catch (e) {\n improveAndRethrow(e, \"externalServiceFailed\");\n }\n }\n\n externalServiceCalledWithoutError(serviceUrl) {\n try {\n if (this.stats.has(serviceUrl)) {\n const stat = this.stats.get(serviceUrl);\n stat.callsCount += 1;\n } else {\n this.stats.set(serviceUrl, { callsCount: 1, failsCount: 0 });\n }\n } catch (e) {\n improveAndRethrow(e, \"externalServiceCalledWithoutError\");\n }\n }\n\n /**\n * Returns statistics about external services failures.\n * Provides how many calls were performed and what the percent of failed calls. Also returns errors stat.\n *\n * @return {Array<object>} Array of objects of type { failsPerCent: number, calls: number }\n * sorted by the highest fails percent desc\n */\n getStats() {\n try {\n return Array.from(this.stats.keys())\n .map(key => {\n const stat = this.stats.get(key);\n return {\n url: key,\n failsPerCent: ((stat.failsCount / stat.callsCount) * 100).toFixed(2),\n calls: stat.callsCount,\n errors: stat.errors ?? [],\n };\n })\n .sort((s1, s2) => s1.failsPerCent - s2.failsPerCent);\n } catch (e) {\n Logger.logError(e, \"getStats\");\n }\n }\n}\n","import { improveAndRethrow } from \"../common/errorUtils.js\";\nimport { safeStringify } from \"../common/utils/safeStringify.js\";\nimport { Logger } from \"../common/utils/logging/logger.js\";\nimport { postponeExecution } from \"../common/utils/postponeExecution.js\";\nimport { AxiosAdapter } from \"../common/adapters/axiosAdapter.js\";\n\nimport { concurrentCalculationsMetadataHolder } from \"./concurrentCalculationsMetadataHolder.js\";\nimport { ExternalServicesStatsCollector } from \"./externalServicesStatsCollector.js\";\n\n/**\n * TODO: [refactoring, critical] update backend copy of this service. Also there is a task to extract this\n * service and other related to it stuff to dedicated npm package task_id=b008ee5e4a3f42c08c73831c4bb3db4e\n *\n * Template service needed to avoid duplication of the same logic when we need to call\n * external APIs to retrieve some data. The idea is to use several API providers to retrieve the same data. It helps to\n * improve the reliability of a data retrieval.\n */\nexport class RobustExternalAPICallerService {\n static statsCollector = new ExternalServicesStatsCollector();\n\n static getStats() {\n return this.statsCollector.getStats();\n }\n\n /**\n * @param bio {string} service name for logging\n * @param providersData {ExternalApiProvider[]} array of providers\n * @param [logger] {function} function to be used for logging\n */\n constructor(bio, providersData, logger = Logger.logError) {\n providersData.forEach(provider => {\n if ((!provider.endpoint && provider.endpoint !== \"\") || !provider.httpMethod) {\n throw new Error(`Wrong format of providers data for: ${JSON.stringify(provider)}`);\n }\n });\n\n // We add niceFactor - just number to order the providers array by. It is helpful to call\n // less robust APIs only if more robust fails\n this.providers = providersData;\n providersData.forEach(provider => provider.resetNiceFactor());\n this.bio = bio;\n this._logger = (...args) => {\n Logger.logError(...args);\n };\n }\n\n static defaultRPSFactor = 1;\n static rpsMultiplier = 1.05;\n\n /**\n * Performs data retrieval from external APIs. Tries providers till the data is retrieved.\n *\n * @param parametersValues {array} array of values of the parameters for URL query string [and/or body]\n * @param timeoutMS {number} http timeout to wait for response. If provider has its specific timeout value then it is used\n * @param [cancelToken] {object|undefined} axios token to force-cancel requests from high-level code\n * @param [attemptsCount] {number|undefined} number of attempts to be performed\n * @param [doNotFailForNowData] {boolean|undefined} pass true if you do not want us to throw an error if we retrieved null data from all the providers\n * @return {Promise<any>} resolving to retrieved data (or array of results if specific provider requires\n * several requests. NOTE: we flatten nested arrays - results of each separate request done for the specific provider)\n * @throws Error if requests to all providers are failed\n */\n async callExternalAPI(\n parametersValues = [],\n timeoutMS = 3500,\n cancelToken = null,\n attemptsCount = 1,\n doNotFailForNowData = false\n ) {\n let result;\n const calculationUuid = concurrentCalculationsMetadataHolder.startCalculation(this.bio);\n\n try {\n for (let i = 0; (i < attemptsCount || result?.shouldBeForceRetried) && result?.data == null; ++i) {\n /**\n * We use rpsFactor to improve re-attempting to call the providers if the last attempt resulted with\n * the fail due to abused RPSes of some (most part of) providers.\n * The _performCallAttempt in such a case will return increased rpsFactor inside the result object.\n */\n const rpsFactor = result ? result.rpsFactor : RobustExternalAPICallerService.defaultRPSFactor;\n\n result = null;\n\n try {\n if (i === 0 && !result?.shouldBeForceRetried) {\n result = await this._performCallAttempt(\n parametersValues,\n timeoutMS,\n cancelToken,\n rpsFactor,\n doNotFailForNowData\n );\n } else {\n const maxRps = Math.max(...this.providers.map(provider => provider.getRps() ?? 0));\n const waitingTimeMs = maxRps ? 1000 / (maxRps / rpsFactor) : 0;\n\n result = await new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n resolve(\n await this._performCallAttempt(\n parametersValues,\n timeoutMS,\n cancelToken,\n rpsFactor,\n doNotFailForNowData\n )\n );\n } catch (e) {\n reject(e);\n }\n }, waitingTimeMs);\n });\n }\n if (result.errors?.length) {\n const errors = result.errors;\n this._logger(\n new Error(\n `Failed at attempt ${i}. ${errors.length} errors. Messages: ${safeStringify(\n errors.map(error => error.message)\n )}: ${safeStringify(errors)}.`\n ),\n `${this.bio}.callExternalAPI`,\n \"\",\n true\n );\n }\n } catch (e) {\n this._logger(e, `${this.bio}.callExternalAPI`, \"Failed to perform external providers calling\");\n }\n }\n\n if (result?.data == null) {\n // TODO: [feature, moderate] looks like we should not fail for null data as it is strange - the provider will fail when processing data internally\n const error = new Error(\n `Failed to retrieve data. It means all attempts have been failed. DEV: add more attempts to this data retrieval`\n );\n if (!doNotFailForNowData) {\n throw error;\n } else {\n this._logger(error, `${this.bio}.callExternalAPI`);\n }\n }\n\n return result?.data;\n } catch (e) {\n improveAndRethrow(e, `${this.bio}.callExternalAPI`);\n } finally {\n concurrentCalculationsMetadataHolder.endCalculation(this.bio, calculationUuid);\n }\n }\n\n async _performCallAttempt(parametersValues, timeoutMS, cancelToken, rpsFactor, doNotFailForNowData) {\n const providers = this._reorderProvidersByNiceFactor();\n let data = undefined,\n providerIndex = 0,\n countOfRequestsDeclinedByRps = 0,\n errors = [];\n while (!data && providerIndex < providers.length) {\n let provider = providers[providerIndex];\n if (provider.isRpsExceeded()) {\n /**\n * Current provider's RPS is exceeded, so we try next provider. Also, we count such cases to make\n * a decision about the force-retry need.\n */\n ++providerIndex;\n ++countOfRequestsDeclinedByRps;\n continue;\n }\n\n try {\n const axiosConfig = {\n ...(cancelToken ? { cancelToken } : {}),\n timeout: provider.timeout || timeoutMS,\n headers: provider.specificHeaders ?? {},\n };\n const httpMethods = Array.isArray(provider.httpMethod) ? provider.httpMethod : [provider.httpMethod];\n const iterationsData = [];\n for (let subRequestIndex = 0; subRequestIndex < httpMethods.length; ++subRequestIndex) {\n const query = provider.composeQueryString(parametersValues, subRequestIndex);\n const endpoint = `${provider.endpoint}${query}`;\n const axiosParams = [endpoint, axiosConfig];\n if ([\"post\", \"put\", \"patch\"].find(method => method === httpMethods[subRequestIndex])) {\n const body = provider.composeBody(parametersValues, subRequestIndex) ?? null;\n axiosParams.splice(1, 0, body);\n }\n\n let pageNumber = 0;\n const responsesForPages = [];\n let hasNextPage = provider.doesSupportPagination();\n do {\n if (subRequestIndex === 0 && pageNumber === 0) {\n provider.actualizeLastCalledTimestamp();\n responsesForPages[pageNumber] = await AxiosAdapter.call(\n httpMethods[subRequestIndex],\n ...axiosParams\n );\n RobustExternalAPICallerService.statsCollector.externalServiceCalledWithoutError(\n provider.getApiGroupId()\n );\n } else {\n if (pageNumber > 0) {\n const actualizedParams = provider.changeQueryParametersForPageNumber(\n parametersValues,\n responsesForPages[pageNumber - 1],\n pageNumber,\n subRequestIndex\n );\n const query = provider.composeQueryString(actualizedParams, subRequestIndex);\n axiosParams[0] = `${provider.endpoint}${query}`;\n }\n /**\n * For second and more request we postpone each request to not exceed RPS\n * of current provider. We use rpsFactor to dynamically increase the rps to avoid\n * too frequent calls if we continue failing to retrieve the data due to RPS exceeding.\n * TODO: [dev] test RPS factor logic (units or integration)\n */\n\n const waitingTimeMS = provider.getRps() ? 1000 / (provider.getRps() / rpsFactor) : 0;\n\n const postponeUntilRpsExceeded = async (recursionLevel = 0) => {\n return await postponeExecution(async () => {\n const maxCountOfPostponingAttempts = 2;\n if (provider.isRpsExceeded() && recursionLevel < maxCountOfPostponingAttempts) {\n return await postponeUntilRpsExceeded(recursionLevel + 1);\n }\n provider.actualizeLastCalledTimestamp();\n return await AxiosAdapter.call(httpMethods[subRequestIndex], ...axiosParams);\n }, waitingTimeMS);\n };\n\n responsesForPages[pageNumber] = await postponeUntilRpsExceeded();\n }\n\n if (hasNextPage) {\n hasNextPage = !provider.checkWhetherResponseIsForLastPage(\n responsesForPages[pageNumber - 1],\n responsesForPages[pageNumber],\n pageNumber,\n subRequestIndex\n );\n }\n pageNumber++;\n } while (hasNextPage);\n\n const responsesDataForPages = responsesForPages.map(response =>\n provider.getDataByResponse(response, parametersValues, subRequestIndex, iterationsData)\n );\n\n let allData = responsesDataForPages;\n if (Array.isArray(responsesDataForPages[0])) {\n allData = responsesDataForPages.flat();\n } else if (responsesDataForPages.length === 1) {\n allData = responsesDataForPages[0];\n }\n\n iterationsData.push(allData);\n }\n if (iterationsData.length) {\n if (httpMethods.length > 1) {\n data = provider.incorporateIterationsData(iterationsData);\n } else {\n data = iterationsData[0];\n }\n } else if (!doNotFailForNowData) {\n RobustExternalAPICallerService.statsCollector.externalServiceFailed(\n provider.getApiGroupId(),\n \"Response data was null for some reason\"\n );\n punishProvider(provider);\n }\n } catch (e) {\n punishProvider(provider);\n RobustExternalAPICallerService.statsCollector.externalServiceFailed(\n provider.getApiGroupId(),\n e?.message\n );\n errors.push(e);\n } finally {\n providerIndex++;\n }\n }\n\n // If we are declining more than 50% of providers (by exceeding RPS) then we note that it better to retry the whole process of providers requesting\n const shouldBeForceRetried = data == null && countOfRequestsDeclinedByRps > Math.floor(providers.length * 0.5);\n const rpsMultiplier = shouldBeForceRetried ? RobustExternalAPICallerService.rpsMultiplier : 1;\n\n return {\n data: data ?? null,\n shouldBeForceRetried,\n rpsFactor: rpsFactor * rpsMultiplier,\n errors,\n };\n }\n\n _reorderProvidersByNiceFactor() {\n const providersCopy = [...this.providers];\n\n return providersCopy.sort((p1, p2) => p2.niceFactor - p1.niceFactor);\n }\n}\n\nfunction punishProvider(provider) {\n provider.niceFactor = provider.niceFactor - 1;\n}\n","import { v4 } from \"uuid\";\n\nimport { improveAndRethrow } from \"../common/errorUtils.js\";\nimport { Logger } from \"../common/utils/logging/logger.js\";\n\n/**\n * This util helps to avoid duplicated calls to a shared resource.\n * It tracks is there currently active calculation for the specific cache id and make all other requests\n * with the same cache id waiting for this active calculation to be finished. When the calculation ends\n * the resolver allows all the waiting requesters to get the data from cache and start their own calculations.\n *\n * This class should be instantiated inside some other service where you need to request some resource concurrently.\n * Rules:\n * 1. When you need to make a request inside your main service call 'getCachedOrWaitForCachedOrAcquireLock'\n * on the instance of this class and await for the result. If the flag allowing to start calculation is true\n * then you can request data inside your main service. Otherwise you should use the cached data as an another\n * requester just finished the most resent requesting and there is actual data in the cache that\n * is returned to you here.\n * 1.1 Also you can acquire a lock directly if you don't want to get cached data. Use the corresponding method 'acquireLock'.\n *\n * 2. If you start requesting (when you successfully acquired the lock) then after receiving the result of your\n * requesting you should call the 'saveCachedData' so the retrieved data will appear in the cache.\n *\n * 3. If you successfully acquired the lock then you should after calling the 'saveCachedData' call\n * the 'releaseLock' - this is mandatory to release the lock and allow other requesters to perform their requests.\n * WARNING: If for any reason you forget to call this method then this class instance will wait perpetually for\n * the lock releasing and all your attempts to request the data will constantly fail. So usually call it\n * inside the 'finally' block.\n *\n * TODO: [tests, critical++] add unit tests - massively used logic and can produce sophisticated concurrency bugs\n */\nexport class CacheAndConcurrentRequestsResolver {\n /**\n * @param bio {string} unique identifier for the exact service\n * @param cache {Cache} cache\n * @param cacheTtl {number|null} time to live for cache ms. 0 or null means the cache cannot expire\n * @param [maxCallAttemptsToWaitForAlreadyRunningRequest=100] {number} number of request allowed to do waiting for\n * result before we fail the original request. Use custom value only if you need to make the attempts count\n * and polling interval changes.\n * @param [timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished=1000] {number}\n * timeout ms for polling for a result. if you change maxCallAttemptsToWaitForAlreadyRunningRequest\n * then this parameter maybe also require the custom value.\n * @param [removeExpiredCacheAutomatically=true] {boolean}\n */\n constructor(\n bio,\n cache,\n cacheTtl,\n removeExpiredCacheAutomatically = true,\n maxCallAttemptsToWaitForAlreadyRunningRequest = 100,\n timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished = 1000\n ) {\n if (cacheTtl != null && cacheTtl < timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished * 2) {\n /*\n * During the lifetime of this service e.g. if the data is being retrieved slowly we can get\n * RACE CONDITION when we constantly retrieve data and during retrieval it is expired, so we are trying\n * to retrieve it again and again.\n * We have a protection mechanism that we will wait no more than\n * maxCallAttemptsToWaitForAlreadyRunningRequest * timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished\n * but this additional check is aimed to reduce potential loading time for some requests.\n */\n throw new Error(\n `DEV: Wrong parameters passed to construct ${bio} - TTL ${cacheTtl} should be 2 times greater than ${timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished}`\n );\n }\n this._bio = bio;\n this._cache = cache;\n this._cacheTtlMs = cacheTtl != null ? cacheTtl : null;\n this._maxExecutionTimeMs =\n maxCallAttemptsToWaitForAlreadyRunningRequest *\n timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished;\n this._removeExpiredCacheAutomatically = removeExpiredCacheAutomatically;\n this._requestsManager = new ManagerOfRequestsToTheSameResource(\n bio,\n maxCallAttemptsToWaitForAlreadyRunningRequest,\n timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished\n );\n }\n\n /**\n * When using this service this is the major method you should call to get data by cache id.\n * This method checks is there cached data and ether\n * - returns you flag that you can start requesting data from the shared resource\n * - or if there is already started calculation waits until it is finished (removed from this service)\n * and returns you the retrieved data\n * - or just returns you the cached data\n *\n * 'canStartDataRetrieval' equal true means that the lock was acquired, and you should manually call 'saveCachedData'\n * if needed and then 'releaseLock' to mark this calculation as finished so other\n * requesters can take their share of the resource.\n *\n * @param cacheId {string}\n * @return {Promise<({\n * canStartDataRetrieval: true,\n * cachedData: any,\n * lockId: string\n * }|{\n * canStartDataRetrieval: false,\n * cachedData: any\n * })>}\n */\n async getCachedOrWaitForCachedOrAcquireLock(cacheId) {\n try {\n const startedAtTimestamp = Date.now();\n let cached = this._cache.get(cacheId);\n let cachedDataBackupIsPresentButExpired = null;\n if (cached != null && !this._removeExpiredCacheAutomatically) {\n const lastUpdateTimestamp = this._cache.getLastUpdateTimestamp(cacheId);\n if ((lastUpdateTimestamp ?? 0) + this._cacheTtlMs < Date.now()) {\n /*\n * Here we are manually clearing 'cached' value retrieved from cache to force the data loading.\n * But we save its value first to the backup variable to be able to return this value if ongoing\n * requesting fails.\n */\n cachedDataBackupIsPresentButExpired = cached;\n cached = null;\n }\n }\n let calculationId = null;\n let isRetrievedCacheExpired = true;\n let isWaitingForActiveCalculationSucceeded;\n let weStillHaveSomeTimeToProceedExecution = true;\n while (\n calculationId == null &&\n cached == null &&\n isRetrievedCacheExpired &&\n weStillHaveSomeTimeToProceedExecution\n ) {\n const result = await this._requestsManager.startCalculationOrWaitForActiveToFinish(cacheId);\n calculationId = typeof result === \"string\" ? result : null;\n isWaitingForActiveCalculationSucceeded = typeof result === \"boolean\" ? result : null;\n cached = this._cache.get(cacheId);\n isRetrievedCacheExpired = isWaitingForActiveCalculationSucceeded && cached == null;\n weStillHaveSomeTimeToProceedExecution = Date.now() - startedAtTimestamp < this._maxExecutionTimeMs;\n }\n if (calculationId) {\n return {\n canStartDataRetrieval: true,\n cachedData: cached ?? cachedDataBackupIsPresentButExpired,\n lockId: calculationId,\n };\n }\n\n return {\n canStartDataRetrieval: false,\n cachedData: cached ?? cachedDataBackupIsPresentButExpired,\n };\n } catch (e) {\n improveAndRethrow(e, `${this._bio}.getCachedOrWaitForCachedOrAcquireLock`);\n }\n }\n\n /**\n * Returns just the current cache value for the given id.\n * Doesn't wait for the active calculation, doesn't acquire lock, just retrieves the current cache as it is.\n *\n * @param cacheId {string}\n * @return {any}\n */\n getCached(cacheId) {\n try {\n return this._cache.get(cacheId);\n } catch (e) {\n improveAndRethrow(e, \"getCached\");\n }\n }\n\n _getTtl() {\n return this._removeExpiredCacheAutomatically ? this._cacheTtlMs : null;\n }\n\n /**\n * Directly acquires the lock despite on cached data availability.\n * So if this method returns result === true you can start the data retrieval.\n *\n * @param cacheId {string}\n * @return {Promise<{ result: true, lockId: string }|{ result: false }>}\n */\n async acquireLock(cacheId) {\n try {\n return await this._requestsManager.acquireLock(cacheId);\n } catch (e) {\n improveAndRethrow(e, \"acquireLock\");\n }\n }\n\n /**\n * This method should be called only if you acquired a lock successfully.\n *\n * If the current lock id is not equal to the passed one the passed data will be ignored.\n * Or you can do the synchronous data merging on your side and pass the\n * wasDataMergedSynchronouslyWithMostRecentCacheState=true so your data will be stored\n * despite on the lockId.\n * WARNING: you should do this only if you are sure you perform the synchronous update.\n *\n * @param cacheId {string}\n * @param lockId {string}\n * @param data {any}\n * @param [sessionDependentData=true] {boolean}\n * @param [wasDataMergedSynchronouslyWithMostRecentCacheState=false]\n */\n saveCachedData(\n cacheId,\n lockId,\n data,\n sessionDependentData = true,\n wasDataMergedSynchronouslyWithMostRecentCacheState = false\n ) {\n try {\n if (\n wasDataMergedSynchronouslyWithMostRecentCacheState ||\n this._requestsManager.isTheLockActiveOne(cacheId, lockId)\n ) {\n /* We save passed data only if the <caller> has the currently acquired lockId.\n * If the passed lockId is not the active one it means that other code cleared/stopped the lock\n * acquired by the <caller> recently due to some urgent/more prior changes.\n *\n * But we allow user to pass the 'wasDataMergedSynchronouslyWithMostRecentCacheState' flag\n * that tells us that the user had taken the most recent cache value and merged his new data\n * with that cached value (AFTER possibly performing async data retrieval). This means that we\n * can ignore the fact that his lockId is no more relevant and save the passed data\n * as it is synchronously merged with the most recent cached data. (Synchronously merged means that\n * the lost update cannot occur during the merge time as JS execute the synchronous functions\\\n * till the end).\n */\n if (sessionDependentData) {\n this._cache.putSessionDependentData(cacheId, data, this._getTtl());\n } else {\n this._cache.put(cacheId, data, this._getTtl());\n }\n }\n } catch (e) {\n improveAndRethrow(e, `${this._bio}.saveCachedData`);\n }\n }\n\n /**\n * Should be called then and only then if you successfully acquired a lock with the lock id.\n *\n * @param cacheId {string}\n * @param lockId {string}\n */\n releaseLock(cacheId, lockId) {\n try {\n if (this._requestsManager.isTheLockActiveOne(cacheId, lockId)) {\n this._requestsManager.finishActiveCalculation(cacheId);\n }\n } catch (e) {\n improveAndRethrow(e, `${this._bio}.releaseLock`);\n }\n }\n\n /**\n * Actualized currently present cached data by key. Applies the provided function to the cached data.\n *\n * @param cacheId {string} id of cache entry\n * @param synchronousCurrentCacheProcessor (function|null} synchronous function accepting cache entry. Should return\n * an object in following format:\n * {\n * isModified: boolean,\n * data: any\n * }\n * the flag signals whether data was changed during the processing or not\n * @param [sessionDependent=true] {boolean} whether to mark the cache entry as session-dependent\n */\n actualizeCachedData(cacheId, synchronousCurrentCacheProcessor, sessionDependent = true) {\n try {\n const cached = this._cache.get(cacheId);\n const result = synchronousCurrentCacheProcessor(cached);\n if (result?.isModified && result?.data != null) {\n if (sessionDependent) {\n this._cache.putSessionDependentData(cacheId, result?.data, this._getTtl());\n } else {\n this._cache.put(cacheId, result?.data, this._getTtl());\n }\n\n /* Here we call the lock releasing to ensure the currently active calculation will be ignored.\n * This is needed to ensure no 'lost update'.\n * Lost update can occur if we change data in this method and after that some calculation finishes\n * having the earlier data as its base to calculate its data set result. And the earlier data\n * has no changes applied inside this method, so we will lose them.\n *\n * This is not so good solution: ideally, we should acquire lock before performing any data updating.\n * But the goal of this method is to provide an instant ability to update the cached data.\n * And if we start acquiring the lock here the data update can be postponed significantly.\n * And this kills the desired nature of this method.\n * So we better lose some data retrieval (means abusing the resource a bit) than lose\n * the instant update expected after this method execution.\n */\n this._requestsManager.finishActiveCalculation(cacheId);\n }\n } catch (e) {\n improveAndRethrow(e, `${this._bio}.actualizeCachedData`);\n }\n }\n\n invalidate(key) {\n this._cache.invalidate(key);\n this._requestsManager.finishActiveCalculation(key);\n }\n\n invalidateContaining(keyPart) {\n this._cache.invalidateContaining(keyPart);\n this._requestsManager.finishAllActiveCalculations(keyPart);\n }\n\n markAsExpiredButDontRemove(key) {\n if (this._removeExpiredCacheAutomatically) {\n this._cache.markCacheItemAsExpiredButDontRemove(key, this._cacheTtlMs);\n } else {\n this._cache.setLastUpdateTimestamp(key, Date.now() - this._cacheTtlMs - 1);\n }\n this._requestsManager.finishAllActiveCalculations(key);\n }\n}\n\n/**\n * Util class to control access to a resource when it can be called in parallel for the same result.\n * (E.g. getting today coins-fiat rates from some API).\n */\nclass ManagerOfRequestsToTheSameResource {\n /**\n * @param bio {string} resource-related identifier for logging\n * @param [maxPollsCount=100] {number} max number of attempts to wait when waiting for a lock acquisition\n * @param [timeoutDuration=1000] {number} timeout between the polls for a lock acquisition\n */\n constructor(bio, maxPollsCount = 100, timeoutDuration = 1000) {\n this.bio = bio;\n this.maxPollsCount = maxPollsCount;\n this.timeoutDuration = timeoutDuration;\n this._activeCalculationsIds = new Map();\n this._nextCalculationIds = new Map();\n }\n\n /**\n * If there is no active calculation just creates uuid and returns it.\n * If there is active calculation waits until it removed from the active calculation uuid variable.\n *\n * @param requestHash {string}\n * @return {Promise<string|boolean>} returns uuid of new active calculation or true if waiting for active\n * calculation succeed or false if max attempts count exceeded\n */\n async startCalculationOrWaitForActiveToFinish(requestHash) {\n try {\n const activeCalculationIdForHash = this._activeCalculationsIds.get(requestHash);\n if (activeCalculationIdForHash == null) {\n const id = v4();\n this._activeCalculationsIds.set(requestHash, id);\n return id;\n }\n\n return await this._waitForCalculationIdToFinish(requestHash, activeCalculationIdForHash, 0);\n } catch (e) {\n Logger.logError(e, `startCalculationOrWaitForActiveToFinish_${this.bio}`);\n }\n\n return null;\n }\n\n /**\n * Acquires lock to the resource by the provided hash.\n *\n * @param requestHash {string}\n * @return {Promise<{ result: true, lockId: string }|{ result: false }>} result is true if the lock is successfully\n * acquired, false if the max allowed time to wait for acquisition expired or any unexpected error occurs\n * during the waiting.\n */\n async acquireLock(requestHash) {\n try {\n const activeId = this._activeCalculationsIds.get(requestHash);\n const nextId = v4();\n if (activeId == null) {\n this._activeCalculationsIds.set(requestHash, nextId);\n return { result: true, lockId: nextId };\n }\n\n const currentNext = this._nextCalculationIds.get(requestHash) ?? [];\n currentNext.push(nextId);\n this._nextCalculationIds.set(requestHash, currentNext);\n\n const waitingResult = await this._waitForCalculationIdToFinish(requestHash, activeId, 0, nextId);\n return {\n result: waitingResult,\n lockId: waitingResult ? nextId : undefined,\n };\n } catch (e) {\n improveAndRethrow(e, \"acquireLock\");\n }\n }\n\n /**\n * Clears active calculation id.\n * WARNING: if you forget to call this method the start* one will perform maxPollsCount attempts before finishing\n * @param requestHash {string} hash of request. Helps to distinct the request for the same resource but\n * having different request parameters and hold a dedicated calculation id per this hash\n */\n finishActiveCalculation(requestHash = \"default\") {\n try {\n this._activeCalculationsIds.delete(requestHash);\n const next = this._nextCalculationIds.get(requestHash) ?? [];\n if (next.length) {\n this._activeCalculationsIds.set(requestHash, next[0]);\n this._nextCalculationIds.set(requestHash, next.slice(1));\n }\n } catch (e) {\n improveAndRethrow(e, \"finishActiveCalculation\");\n }\n }\n\n finishAllActiveCalculations(keyPart = \"\") {\n try {\n Array.from(this._activeCalculationsIds.keys()).forEach(hash => {\n if (typeof hash === \"string\" && new RegExp(keyPart).test(hash)) {\n this.finishActiveCalculation(hash);\n }\n });\n } catch (e) {\n improveAndRethrow(e, \"finishAllActiveCalculations\");\n }\n }\n\n /**\n * @param requestHash {string}\n * @param lockId {string}\n * @return {boolean}\n */\n isTheLockActiveOne(requestHash, lockId) {\n try {\n return this._activeCalculationsIds.get(requestHash) === lockId;\n } catch (e) {\n improveAndRethrow(e, \"isTheLockActiveOne\");\n }\n }\n\n /**\n * @param requestHash {string}\n * @param activeCalculationId {string|null}\n * @param [attemptIndex=0] {number}\n * @param waitForCalculationId {string|null} if you want to wait for an exact id to appear as active then pass this parameter\n * @return {Promise<boolean>} true\n * - if the given calculation id is no more an active one\n * - or it is equal to waitForCalculationId\n * false\n * - if waiting period exceeds the max allowed waiting time or unexpected error occurs\n * @private\n */\n async _waitForCalculationIdToFinish(\n requestHash,\n activeCalculationId,\n attemptIndex = 0,\n waitForCalculationId = null\n ) {\n try {\n if (attemptIndex + 1 > this.maxPollsCount) {\n // Max number of polls for active calculation id change is achieved. So we return false.\n return false;\n }\n\n const currentId = this._activeCalculationsIds.get(requestHash);\n if (waitForCalculationId == null ? currentId !== activeCalculationId : currentId === waitForCalculationId) {\n /* We return true depending on the usage of this function:\n * 1. if there is calculation id that we should wait for to become an active then we return true only\n * if this id becomes the active one.\n *\n * Theoretically we can fail to wait for the desired calculation id. This can be caused by wrong use of\n * this service or by any other mistakes/errors. But this waiting function will return false anyway if\n * the number of polls done exceeds the max allowed.\n *\n * 2. if we just wait for the currently active calculation id to be finished then we return true\n * when we notice that the current active id differs from the original passed into this function.\n */\n return true;\n } else {\n /* The original calculation id is still the active one, so we are scheduling a new attempt to check\n * whether the active calculation id changed or not in timeoutDuration milliseconds.\n */\n const it = this;\n return new Promise((resolve, reject) => {\n setTimeout(function () {\n try {\n resolve(\n it._waitForCalculationIdToFinish(requestHash, activeCalculationId, attemptIndex + 1)\n );\n } catch (e) {\n reject(e);\n }\n }, this.timeoutDuration);\n });\n }\n } catch (e) {\n Logger.logError(e, \"_waitForCalculationIdToFinish\", \"Failed to wait for active calculation id change.\");\n return false;\n }\n }\n}\n","import Hashes from \"jshashes\";\n\nimport { improveAndRethrow } from \"../common/errorUtils.js\";\nimport { safeStringify } from \"../common/utils/safeStringify.js\";\nimport { Logger } from \"../common/utils/logging/logger.js\";\n\nimport { RobustExternalAPICallerService } from \"./robustExternalAPICallerService.js\";\nimport { CacheAndConcurrentRequestsResolver } from \"./cacheAndConcurrentRequestsResolver.js\";\n\n/**\n * Extended edit of RobustExternalApiCallerService supporting cache and management of concurrent requests\n * to the same resource.\n * TODO: [tests, critical] Massively used logic\n */\nexport class CachedRobustExternalApiCallerService {\n /**\n * @param bio {string} unique service identifier\n * @param cache {Cache} cache instance\n * @param providersData {ExternalApiProvider[]} array of providers\n * @param [cacheTtlMs=10000] {number} time to live for cache ms\n * @param [maxCallAttemptsToWaitForAlreadyRunningRequest=50] {number} see details in CacheAndConcurrentRequestsResolver\n * @param [timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished=3000] {number} see details in CacheAndConcurrentRequestsResolver\n * @param [removeExpiredCacheAutomatically=true] {boolean} whether to remove cached data automatically when ttl exceeds\n * @param [mergeCachedAndNewlyRetrievedData=null] {function} function accepting cached data, newly retrieved data and id field name for list items\n * and merging them. use if needed\n */\n constructor(\n bio,\n cache,\n providersData,\n cacheTtlMs = 10000,\n removeExpiredCacheAutomatically = true,\n mergeCachedAndNewlyRetrievedData = null,\n maxCallAttemptsToWaitForAlreadyRunningRequest = 100,\n timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished = 1000\n ) {\n this._provider = new RobustExternalAPICallerService(`cached_${bio}`, providersData, Logger.logError);\n this._cacheTtlMs = cacheTtlMs;\n this._cahceAndRequestsResolver = new CacheAndConcurrentRequestsResolver(\n bio,\n cache,\n cacheTtlMs,\n removeExpiredCacheAutomatically,\n maxCallAttemptsToWaitForAlreadyRunningRequest,\n timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished\n );\n this._cahceIds = [];\n this._mergeCachedAndNewlyRetrievedData = mergeCachedAndNewlyRetrievedData;\n }\n\n /**\n * Calls the external API or returns data from cache. Just waits if the same data already requested.\n *\n * @param parametersValues {array} array of values of the parameters for URL query string [and/or body]\n * @param timeoutMS {number} http timeout to wait for response. If provider has its specific timeout value then it is used\n * @param [cancelToken] {object|undefined} axios token to force-cancel requests from high-level code\n * @param [attemptsCount] {number|undefined} number of attempts to be performed\n * @param [customHashFunctionForParams] {function|undefined} function without params calculating the hash to be\n * added to bio of the service to compose a unique parameters-specific cache id\n * @param [doNotFailForNowData] {boolean|undefined} pass true if you do not want us to throw an error if we retrieved null data from all the providers\n * @return {Promise<any>} resolving to retrieved data (or array of results if specific provider requires\n * several requests. NOTE: we flatten nested arrays - results of each separate request done for the specific provider)\n * @throws Error if requests to all providers are failed\n */\n async callExternalAPICached(\n parametersValues = [],\n timeoutMS = 3500,\n cancelToken = null,\n attemptsCount = 1,\n customHashFunctionForParams = null,\n doNotFailForNowData = false\n ) {\n const loggerSource = `${this._provider.bio}.callExternalAPICached`;\n let cacheId;\n let result;\n try {\n cacheId = this._calculateCacheId(parametersValues, customHashFunctionForParams);\n result = await this._cahceAndRequestsResolver.getCachedOrWaitForCachedOrAcquireLock(cacheId);\n if (!result?.canStartDataRetrieval) {\n return result?.cachedData;\n }\n\n let data = await this._provider.callExternalAPI(\n parametersValues,\n timeoutMS,\n cancelToken,\n attemptsCount,\n doNotFailForNowData\n );\n\n const canPerformMerge = typeof this._mergeCachedAndNewlyRetrievedData === \"function\";\n if (canPerformMerge) {\n const mostRecentCached = this._cahceAndRequestsResolver.getCached(cacheId);\n data = this._mergeCachedAndNewlyRetrievedData(mostRecentCached, data, parametersValues);\n }\n if (data != null) {\n this._cahceAndRequestsResolver.saveCachedData(cacheId, result?.lockId, data, true, canPerformMerge);\n this._cahceIds.indexOf(cacheId) < 0 && this._cahceIds.push(cacheId);\n }\n\n return data;\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n } finally {\n this._cahceAndRequestsResolver.releaseLock(cacheId, result?.lockId);\n }\n }\n\n invalidateCaches() {\n this._cahceIds.forEach(key => this._cahceAndRequestsResolver.invalidate(key));\n }\n\n actualizeCachedData(\n params,\n synchronousCurrentCacheProcessor,\n customHashFunctionForParams = null,\n sessionDependent = true,\n actualizedAtTimestamp\n ) {\n const cacheId = this._calculateCacheId(params, customHashFunctionForParams);\n this._cahceAndRequestsResolver.actualizeCachedData(cacheId, synchronousCurrentCacheProcessor, sessionDependent);\n }\n\n markCacheAsExpiredButDontRemove(parametersValues, customHashFunctionForParams) {\n try {\n this._cahceAndRequestsResolver.markAsExpiredButDontRemove(\n this._calculateCacheId(parametersValues, customHashFunctionForParams)\n );\n } catch (e) {\n improveAndRethrow(e, \"markCacheAsExpiredButDontRemove\");\n }\n }\n\n _calculateCacheId(parametersValues, customHashFunctionForParams = null) {\n try {\n const hash =\n typeof customHashFunctionForParams === \"function\"\n ? customHashFunctionForParams(parametersValues)\n : !parametersValues\n ? \"\"\n : new Hashes.SHA512().hex(safeStringify(parametersValues));\n return `${this._provider.bio}-${hash}`;\n } catch (e) {\n improveAndRethrow(e, this._provider.bio + \"_calculateCacheId\");\n }\n }\n}\n","import EventBusInstance from \"eventbusjs\";\nimport { ExternalApiProvider } from \"../../robustExteranlApiCallerService/externalApiProvider.js\";\nimport { ApiGroups } from \"./apiGroups.js\";\nimport { CachedRobustExternalApiCallerService } from \"../../robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js\";\nimport { Cache } from \"../utils/cache.js\";\nimport { improveAndRethrow } from \"../errorUtils.js\";\n\nclass BigdatacloudIpAddressProvider extends ExternalApiProvider {\n constructor() {\n super(\"https://api.bigdatacloud.net/data/client-ip\", \"get\", 15000, ApiGroups.BIGDATACLOUD);\n }\n\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return response?.data && response.data?.ipString;\n }\n}\n\nclass TrackipIpAddressProvider extends ExternalApiProvider {\n constructor() {\n super(\"https://www.trackip.net/ip\", \"get\", 15000, ApiGroups.TRACKIP);\n }\n\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return response?.data;\n }\n}\n\nclass IpifyV6IpAddressProvider extends ExternalApiProvider {\n constructor() {\n super(\"https://api6.ipify.org/?format=json\", \"get\", 15000, ApiGroups.IPIFY);\n }\n\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return response?.data && response.data?.ip;\n }\n}\n\nclass IpifyIpAddressProvider extends ExternalApiProvider {\n constructor() {\n super(\"https://api.ipify.org/?format=json\", \"get\", 15000, ApiGroups.IPIFY);\n }\n\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return response?.data && response.data?.ip;\n }\n}\n\nclass WhatismyipaddressIpAddressProvider extends ExternalApiProvider {\n constructor() {\n super(\"http://bot.whatismyipaddress.com/\", \"get\", 15000, ApiGroups.WHATISMYIPADDRESS);\n }\n\n getDataByResponse(response, params = [], subRequestIndex = 0, iterationsData = []) {\n return response?.data;\n }\n}\n\nexport class IpAddressProvider {\n static externalIPAddressAPICaller = new CachedRobustExternalApiCallerService(\n \"externalIPAddressAPICaller\",\n new Cache(EventBusInstance),\n [\n new BigdatacloudIpAddressProvider(),\n new TrackipIpAddressProvider(),\n new IpifyV6IpAddressProvider(),\n new IpifyIpAddressProvider(),\n new WhatismyipaddressIpAddressProvider(),\n ],\n 300_000\n );\n\n /**\n * Returns current public IP address identified by one of external services.\n *\n * It is easier than manual identification and also (as ip needed for server side to check it) it saves us from\n * issues related to changes of infrastructure configurations (like adding proxies etc.) so we should not configure\n * anything on server side to get correct client's IP.\n *\n * @returns {Promise<String>} IP address\n * @throws {Error} if fails to retrieve IP address from all the services\n */\n static async getClientIpAddress() {\n try {\n return await this.externalIPAddressAPICaller.callExternalAPICached([], 7000);\n } catch (e) {\n improveAndRethrow(e, \"getClientIpAddress\");\n }\n }\n}\n","import axios from \"axios\";\n\n/**\n * Utils class needed to perform cancelling of axios request inside some process.\n * Provides cancel state and axios token for HTTP requests\n */\nexport class CancelProcessing {\n constructor() {\n this._cancelToken = axios.CancelToken.source();\n this._isCanceled = false;\n }\n\n cancel() {\n this._isCanceled = true;\n this._cancelToken.cancel();\n }\n\n isCanceled() {\n return this._isCanceled;\n }\n\n getToken() {\n return this._cancelToken.token;\n }\n\n static instance() {\n return new CancelProcessing();\n }\n}\n","export class ExistingSwap {\n /**\n * @param swapId {string}\n * @param status {SwapProvider.SWAP_STATUSES}\n * @param createdAt {number}\n * @param expiresAt {number}\n * @param confirmations {number}\n * @param rate {string}\n * @param fixed {boolean}\n * @param refundAddress {string}\n * @param payToAddress {string}\n * @param fromCoin {Coin}\n * @param fromAmount {string}\n * @param fromTransactionId {string}\n * @param fromTransactionLink {string}\n * @param toCoin {Coin}\n * @param toAmount {string}\n * @param toTransactionId {string|null}\n * @param toTransactionLink {string}\n * @param toAddress {string}\n * @param partner {string}\n * @param fromExtraId {string}\n * @param toExtraId {string}\n * @param refundExtraId {string}\n */\n constructor(\n swapId,\n status,\n createdAt,\n expiresAt,\n confirmations,\n rate,\n fixed,\n refundAddress,\n payToAddress,\n fromCoin,\n fromAmount,\n fromTransactionId,\n fromTransactionLink,\n toCoin,\n toAmount,\n toTransactionId,\n toTransactionLink,\n toAddress, // TODO: [refactoring, moderate] toAddress is not quite clear. How about recipientAddress? task_id=0815a111c99543b78d374217eadbde4f\n partner,\n fromExtraId,\n toExtraId,\n refundExtraId\n ) {\n this.swapId = swapId;\n this.status = status;\n this.createdAt = createdAt;\n this.expiresAt = expiresAt;\n this.confirmations = confirmations;\n this.rate = rate;\n this.fixed = fixed;\n this.refundAddress = refundAddress;\n this.payToAddress = payToAddress;\n this.fromCoin = fromCoin;\n this.fromTransactionId = fromTransactionId;\n this.fromAmount = fromAmount;\n this.fromTransactionLink = fromTransactionLink;\n this.toCoin = toCoin;\n this.toTransactionId = toTransactionId;\n this.toTransactionLink = toTransactionLink;\n this.toAmount = toAmount;\n this.toAddress = toAddress;\n this.partner = partner;\n this.fromExtraId = fromExtraId;\n this.toExtraId = toExtraId;\n this.refundExtraId = refundExtraId;\n }\n}\n","import { ExistingSwap } from \"./existingSwap.js\";\n\nexport class ExistingSwapWithFiatData extends ExistingSwap {\n /**\n * @param swapId {string}\n * @param status {SwapProvider.SWAP_STATUSES}\n * @param createdAt {number}\n * @param expiresAt {number}\n * @param confirmations {number}\n * @param rate {string}\n * @param fixed {boolean}\n * @param refundAddress {string}\n * @param payToAddress {string}\n * @param fromCoin {Coin}\n * @param fromAmount {string}\n * @param fromTransactionId {string}\n * @param fromTransactionLink {string}\n * @param toCoin {Coin}\n * @param toAmount {string}\n * @param toTransactionId {string|null}\n * @param toTransactionLink\n * @param toAddress {string}\n * @param partner {string}\n * @param fromExtraId {string}\n * @param toExtraId {string}\n * @param refundExtraId {string}\n * @param fromAmountFiat {number}\n * @param toAmountFiat {number}\n * @param fiatCurrencyCode {string}\n * @param fiatCurrencyDecimals {number}\n */\n constructor(\n swapId,\n status,\n createdAt,\n expiresAt,\n confirmations,\n rate,\n fixed,\n refundAddress,\n payToAddress,\n fromCoin,\n fromAmount,\n fromTransactionId,\n fromTransactionLink,\n toCoin,\n toAmount,\n toTransactionId,\n toTransactionLink,\n toAddress,\n partner,\n fromExtraId,\n toExtraId,\n refundExtraId,\n fromAmountFiat,\n toAmountFiat,\n fiatCurrencyCode,\n fiatCurrencyDecimals\n ) {\n super(\n swapId,\n status,\n createdAt,\n expiresAt,\n confirmations,\n rate,\n fixed,\n refundAddress,\n payToAddress,\n fromCoin,\n fromAmount,\n fromTransactionId,\n fromTransactionLink,\n toCoin,\n toAmount,\n toTransactionId,\n toTransactionLink,\n toAddress,\n partner,\n fromExtraId,\n toExtraId,\n refundExtraId\n );\n this.fromAmountFiat = fromAmountFiat;\n this.toAmountFiat = toAmountFiat;\n this.fiatCurrencyCode = fiatCurrencyCode;\n this.fiatCurrencyDecimals = fiatCurrencyDecimals;\n }\n\n /**\n * @param existingSwap {ExistingSwap}\n * @param fromAmountFiat {number}\n * @param toAmountFiat {number}\n * @param fiatCurrencyCode {string}\n * @param fiatCurrencyDecimals {number}\n * @return {ExistingSwapWithFiatData}\n */\n static fromExistingSwap(existingSwap, fromAmountFiat, toAmountFiat, fiatCurrencyCode, fiatCurrencyDecimals) {\n return new ExistingSwapWithFiatData(\n existingSwap.swapId,\n existingSwap.status,\n existingSwap.createdAt,\n existingSwap.expiresAt,\n existingSwap.confirmations,\n existingSwap.rate,\n existingSwap.fixed,\n existingSwap.refundAddress,\n existingSwap.payToAddress,\n existingSwap.fromCoin,\n existingSwap.fromAmount,\n existingSwap.fromTransactionId,\n existingSwap.fromTransactionLink,\n existingSwap.toCoin,\n existingSwap.toAmount,\n existingSwap.toTransactionId,\n existingSwap.toTransactionLink,\n existingSwap.toAddress,\n existingSwap.partner,\n existingSwap.fromExtraId,\n existingSwap.toExtraId,\n existingSwap.refundExtraId,\n fromAmountFiat,\n toAmountFiat,\n fiatCurrencyCode,\n fiatCurrencyDecimals\n );\n }\n}\n","export class BaseSwapCreationInfo {\n /**\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @param fromAmountCoins {string}\n * @param toAmountCoins {string}\n * @param rate {string}\n * @param rawSwapData {Object}\n * @param min {string}\n * @param fiatMin {number}\n * @param max {string}\n * @param fiatMax {number}\n * @param durationMinutesRange {string}\n * @param fixed {boolean}\n */\n constructor(\n fromCoin,\n toCoin,\n fromAmountCoins,\n toAmountCoins,\n rate,\n rawSwapData,\n min,\n fiatMin,\n max,\n fiatMax,\n durationMinutesRange,\n fixed\n ) {\n this.fromCoin = fromCoin;\n this.toCoin = toCoin;\n this.fromAmountCoins = fromAmountCoins;\n this.toAmountCoins = toAmountCoins;\n this.rate = rate;\n this.rawSwapData = rawSwapData;\n this.min = min;\n this.fiatMin = fiatMin;\n this.max = max;\n this.fiatMax = fiatMax;\n this.durationMinutesRange = durationMinutesRange;\n this.fixed = fixed;\n }\n}\n","export class SwapProvider {\n static COMMON_ERRORS = {\n REQUESTS_LIMIT_EXCEEDED: \"requestsLimitExceeded\",\n };\n\n static NO_SWAPS_REASONS = {\n TOO_LOW: \"tooLow\",\n TOO_HIGH: \"tooHigh\",\n NOT_SUPPORTED: \"notSupported\",\n NO_FIXED_BUT_HAVE_FLOATING: \"noFixedButHaveFloating\",\n NO_FLOATING_BUT_HAVE_FIXED: \"noFloatingButHaveFixed\",\n };\n\n static CREATION_FAIL_REASONS = {\n RETRIABLE_FAIL: \"retriableFail\",\n };\n\n static SWAP_STATUSES = {\n WAITING_FOR_PAYMENT: \"waiting_for_payment\", // public +\n CONFIRMING: \"confirming\",\n PAYMENT_RECEIVED: \"payment_received\", // public +\n EXCHANGING: \"exchanging\", // session full // public +\n COMPLETED: \"completed\", // session full // public +\n REFUNDED: \"refunded\", // session full // public +\n EXPIRED: \"expired\", // public +\n FAILED: \"failed\", // public +\n };\n\n /**\n * @return {Promise<void>}\n */\n async initialize() {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * @return {number} milliseconds TTL\n */\n getSwapCreationInfoTtlMs() {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves all currencies supported by this swap provider.\n * Returns one of SwapProvider.COMMON_ERRORS in case of processable fail.\n *\n * @return {Promise<({ result: true, coins: Coin[] }|{ result: false, reason: string })>}\n */\n async getAllSupportedCurrencies() {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves all deposit currencies supported by this swap provider.\n * Returns one of SwapProvider.COMMON_ERRORS in case of processable fail.\n *\n * @return {Promise<({ result: true, coins: Coin[] }|{ result: false, reason: string })>}\n */\n async getDepositCurrencies() {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves all withdrawable currencies supported by this swap provider.\n * Returns one of SwapProvider.COMMON_ERRORS in case of processable fail.\n *\n * @param [exceptCurrency=null] {Coin|null}\n * @return {Promise<({ result: true, coins: Coin[] }|{ result: false, reason: string })>}\n */\n async getWithdrawalCurrencies(exceptCurrency = null) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves URL for coin icon or fallback if not found.\n *\n * @param coin {Coin|string} coin or rabbit-format of coin ticker\n * @return {string}\n */\n getIconUrl(coin) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves coin to USDT rate.\n *\n * @param coin {Coin}\n * @return {{result: true, rate: string}|{result: false}}\n */\n async getCoinToUSDTRate(coin) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves estimation for swapping giving coins amount.\n * null min or max signals there is no corresponding limitation. undefined means that the limits were not retrieved.\n * For fail result on of SwapProvider.NO_SWAPS_REASONS or SwapProvider.COMMON_ERRORS reasons will be returned.\n *\n * WARNING: MUST return NOT_SUPPORTED error code for any case when pair is not available/supported (Should not throw random errors for this case)\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @param amountCoins {string}\n * @param [fixed=false] {boolean|null} null means fixed or float doesn't matter\n * @param [fromCoinToUsdRate=null] pass if you want to increase the min amount returned\n * by provider with some fixed \"insurance\" amount to cover min amount fluctuations.\n * @return {Promise<({\n * result: false,\n * reason: string,\n * smallestMin: (string|null|undefined),\n * greatestMax: (string|null|undefined),\n * }|{\n * result: true,\n * min: (string|null),\n * max: (string|null),\n * smallestMin: (string|null),\n * greatestMax: (string|null),\n * rate: (string|null),\n * durationMinutesRange: string,\n * fixed: boolean,\n * [rawSwapData]: Object\n * })>}\n */\n async getSwapInfo(fromCoin, toCoin, amountCoins, fixed = false, fromCoinToUsdRate = null) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * For fail result we return one of SwapProvider.CREATION_FAIL_REASONS or SwapProvider.COMMON_ERRORS.*\n *\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @param amount {string}\n * @param toAddress {string}\n * @param refundAddress {string}\n * @param rawSwapData {Object|null}\n * @param clientIpAddress {string}\n * @param fixed {boolean}\n * @param [toCurrencyExtraId=\"\"] {string} optional extra ID\n * @param [refundExtraId=\"\"] {string} optional extra ID for refund address\n * @return {Promise<({\n * result: true,\n * swapId: string,\n * fromCoin: Coin,\n * fromAmount: string,\n * fromAddress: string,\n * toCoin: Coin,\n * toAmount: string,\n * toAddress: string,\n * rate: string,\n * fromCurrencyExtraId: string|undefined,\n * fixed: boolean\n * }|{\n * result: false,\n * reason: string,\n * partner: string\n * })>}\n */\n async createSwap(\n fromCoin,\n toCoin,\n amount,\n toAddress,\n refundAddress,\n rawSwapData,\n clientIpAddress,\n fixed,\n toCurrencyExtraId = \"\",\n refundExtraId = \"\"\n ) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * Retrieves details and status for swaps by given ids.\n * If some swap is not found by id then there is no item in return list.\n *\n * @param swapIds {string[]}\n * @return {Promise<{result: false, reason: string}|{result:true, swaps: ExistingSwap[]}>}\n */\n async getExistingSwapsDetailsAndStatus(swapIds) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * @param ticker {string}\n * @return {Coin|null}\n */\n getCoinByTickerIfPresent(ticker) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * @param asset {Coin}\n * @param address {string}\n * @return {boolean}\n */\n isAddressValidForAsset(asset, address) {\n throw new Error(\"Not implemented in base\");\n }\n\n /**\n * @param asset {Coin}\n * @return {string|null}\n */\n getExtraIdNameIfPresent(asset) {\n throw new Error(\"Not implemented in base\");\n }\n}\n","import axios from \"axios\";\nimport { BigNumber } from \"bignumber.js\";\n\nimport { AmountUtils } from \"../../common/amountUtils.js\";\nimport { improveAndRethrow } from \"../../common/errorUtils.js\";\nimport { SwapProvider } from \"./swapProvider.js\";\nimport { ExistingSwap } from \"../models/existingSwap.js\";\nimport { Coin } from \"../../common/models/coin.js\";\nimport { Protocol } from \"../../common/models/protocol.js\";\nimport { safeStringify } from \"../../common/utils/safeStringify.js\";\nimport { Logger } from \"../../common/utils/logging/logger.js\";\nimport { FALLBACK_ASSET_ICON_URL } from \"../../constants/globalConstants.jsx\";\n\nexport const BANNED_PARTNERS = [\"stealthex\", \"changee\", \"coincraddle\"];\n\nexport class SwapspaceSwapProvider extends SwapProvider {\n constructor(apiKeysProxyUrl, cache, customCoinBuilder = (coin, network) => null, useRestrictedCoinsSet = true) {\n super();\n this._supportedCoins = [];\n this._URL = `${apiKeysProxyUrl}`;\n this._maxRateDigits = 20;\n this.useRestrictedCoinsSet = useRestrictedCoinsSet;\n this._customCoinBuilder = customCoinBuilder;\n this._cache = cache;\n }\n\n getSwapCreationInfoTtlMs() {\n /* Actually 2 minutes and only relevant for some partners, but we use it\n * (and even a bit smaller value) for better consistency */\n return 110000;\n }\n\n async getDepositCurrencies() {\n const loggerSource = \"getDepositCurrencies\";\n try {\n await this._fetchSupportedCurrenciesIfNeeded();\n Logger.log(`We have ${this._supportedCoins?.length} supported coins, getting depositable`, loggerSource);\n return {\n result: true,\n coins: this._supportedCoins.filter(item => item.deposit).map(item => item.coin),\n };\n } catch (e) {\n if (e?.response?.status === 429) {\n return {\n result: false,\n reason: SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n improveAndRethrow(e, loggerSource);\n }\n }\n\n async getAllSupportedCurrencies() {\n const loggerSource = \"getAllSupportedCurrencies\";\n try {\n await this._fetchSupportedCurrenciesIfNeeded();\n Logger.log(`We have ${this._supportedCoins?.length} supported coins returning`, loggerSource);\n return {\n result: true,\n coins: this._supportedCoins.map(item => item.coin),\n };\n } catch (e) {\n if (e?.response?.status === 429) {\n return {\n result: false,\n reason: SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n improveAndRethrow(e, loggerSource);\n }\n }\n\n async getWithdrawalCurrencies(exceptCurrency = null) {\n const loggerSource = \"getWithdrawalCurrencies\";\n try {\n await this._fetchSupportedCurrenciesIfNeeded();\n Logger.log(`We have ${this._supportedCoins?.length} supported coins, getting withdrawable`, loggerSource);\n return {\n result: true,\n coins: this._supportedCoins\n .filter(\n item => item.withdrawal && (!exceptCurrency || item.coin?.ticker !== exceptCurrency?.ticker)\n )\n .map(item => item.coin),\n };\n } catch (e) {\n if (e?.response?.status === 429) {\n return {\n result: false,\n reason: SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n improveAndRethrow(e, loggerSource);\n }\n }\n\n async initialize() {\n await this._fetchSupportedCurrenciesIfNeeded();\n }\n\n getIconUrl(coinOrTicker) {\n const loggerSource = \"getIconUrl\";\n try {\n let coin = coinOrTicker;\n if (!(coinOrTicker instanceof Coin)) {\n coin = this._supportedCoins.find(i => i.coin.ticker === coinOrTicker)?.coin;\n }\n return (\n this._supportedCoins.find(item => item.coin?.ticker === coin?.ticker)?.iconURL ??\n FALLBACK_ASSET_ICON_URL\n );\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n async _fetchSupportedCurrenciesIfNeeded() {\n const loggerSource = \"_fetchSupportedCurrenciesIfNeeded\";\n try {\n if (!this._supportedCoins?.length) {\n const rawResponse = await axios.get(`${this._URL}/api/v2/currencies`);\n Logger.log(`Retrieved ${rawResponse?.data?.length}`, loggerSource);\n let allowedCoins = rawResponse?.data ?? [];\n Logger.log(`Allowed cnt ${allowedCoins.length}`, loggerSource);\n\n this._supportedCoins = allowedCoins\n .map(item => {\n let coin = this._customCoinBuilder(item.code, item.network);\n if (!coin && !this.useRestrictedCoinsSet) {\n /** Building coin object for coin that isn't supported OOB in Rabbit.\n * We are doing this way to be able to use extended coins set for swaps.\n * These temporary built coins are only for in-swap use, and we omit some usual\n * coin details here.\n * Ideally we should add some new abstractions e.g. BaseCoin:\n * Coin will extend BaseCoin, SwapCoin will extend BaseCoin etc.\n * But for now it is reasonable to use this simpler approach.\n */\n const code = item.code.toUpperCase();\n const network = item.network.toUpperCase();\n /** Removing ticker and protocol name from coin name as we usually use them explicitly\n * from coin object rather than counting on having it in the coin name itself.\n * This processing is needed due to poor quality of swapspace coins names. */\n let name = (item.name ?? \"\")\n .replaceAll(`(${code})`, \"\")\n .replaceAll(`(${network})`, \"\")\n .replaceAll(/ +/g, \" \")\n .trim();\n if (name === \"\") {\n // Rolling back to original name if our processing leads in empty name\n name = item.name;\n }\n const ticker = `${code}${code === network ? \"\" : network}`;\n const defaultDecimalPlacesForCoinNotSupportedOOB = 8;\n const defaultMinConfirmationsForCoinNotSupportedOOB = 1;\n coin = new Coin(\n name,\n ticker,\n code,\n defaultDecimalPlacesForCoinNotSupportedOOB,\n null,\n \"\",\n null,\n null,\n defaultMinConfirmationsForCoinNotSupportedOOB,\n null,\n [],\n 60000,\n null, // We cannot recognize blockchain from swapspace data\n code !== network ? new Protocol(network) : null,\n item.contractAddress || null,\n false\n );\n }\n if (coin) {\n return {\n coin: coin,\n code: item.code,\n network: item.network,\n hasExtraId: item.hasExtraId,\n extraIdName: item.extraIdName,\n isPopular: !!item.popular,\n iconURL: item.icon\n ? `https://storage.swapspace.co${item.icon}`\n : FALLBACK_ASSET_ICON_URL,\n deposit: item.deposit ?? false,\n withdrawal: item.withdrawal ?? false,\n validationRegexp: item.validationRegexp ?? null,\n };\n }\n\n return [];\n })\n .flat();\n this._putPopularCoinsFirst();\n }\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n /**\n * This method sort internal list putting popular (as swapspace thinks) coins to the top.\n * This is just for users of this API if they don't care about the sorting - we just improve a list a bit this way.\n * @private\n */\n _putPopularCoinsFirst() {\n this._supportedCoins.sort((i1, i2) => {\n if (i1.isPopular && !i2.isPopular) return -1;\n if (i2.isPopular && !i1.isPopular) return 1;\n return i1.coin.ticker > i2.coin.ticker ? 1 : i1.coin.ticker < i2.coin.ticker ? -1 : 0;\n });\n }\n\n async getCoinToUSDTRate(coin) {\n const loggerSource = \"getCoinToUSDTRate\";\n try {\n if (!coin) return null;\n\n await this._fetchSupportedCurrenciesIfNeeded();\n\n // Using USDT TRC20 as usually fee in this network is smaller than ERC20 and this network is widely used for USDT\n const usdtTrc20 = this._supportedCoins.find(i => i.coin.ticker === \"USDTTRC20\")?.coin;\n if (!usdtTrc20) {\n return { result: false };\n }\n const cached = this._cache.get(\"swapspace_usdt_rate_\" + coin.ticker);\n if (cached != null) {\n return {\n result: true,\n rate: cached,\n };\n }\n\n Logger.log(\"Loading USDT->coin rate as not found in cache:\", coin?.ticker);\n const result = await this.getSwapInfo(usdtTrc20, coin, \"5000\", false);\n if (!result.result) {\n return { result: false };\n }\n\n // This calculation is not precise as we cannot recognize the actual fee and network fee. Just approximate.\n const standardSwapspaceFeeMultiplier = 1.004; // fee is usually 0.4%\n const rate = BigNumber(1).div(BigNumber(result.rate).times(standardSwapspaceFeeMultiplier)).toString();\n this._cache.put(\n \"swapspace_usdt_rate_\" + coin.ticker,\n rate,\n 15 * 60000 // 15 minutes\n );\n return {\n result: true,\n rate: rate,\n };\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n getCoinByTickerIfPresent(ticker) {\n try {\n const item = this._supportedCoins.find(i => i.coin.ticker === ticker);\n return item?.coin ?? null;\n } catch (e) {\n improveAndRethrow(e, \"getCoinByTickerIfPresent\");\n }\n }\n\n async getSwapInfo(fromCoin, toCoin, amountCoins, fixed = false, fromCoinToUsdRate = null) {\n const loggerSource = \"getSwapInfo\";\n try {\n if (\n !(fromCoin instanceof Coin) ||\n !(toCoin instanceof Coin) ||\n typeof amountCoins !== \"string\" ||\n BigNumber(amountCoins).lt(\"0\") ||\n (fixed !== null && typeof fixed !== \"boolean\")\n ) {\n throw new Error(\n `Wrong input params: ${amountCoins} ${fromCoin.ticker} -> ${toCoin.ticker}, ${\n fromCoin instanceof Coin\n }, ${toCoin instanceof Coin}, ${typeof fixed} ${fixed}`\n );\n }\n const fromCoinSwapspaceDetails = this._supportedCoins.find(i => i.coin?.ticker === fromCoin?.ticker);\n const toCoinSwapspaceDetails = this._supportedCoins.find(i => i.coin?.ticker === toCoin?.ticker);\n if (!fromCoinSwapspaceDetails || !toCoinSwapspaceDetails) {\n throw new Error(\n \"Failed to find swapspace coin details for: \" + fromCoin.ticker + \" -> \" + toCoin.ticker\n );\n }\n if (!fromCoinSwapspaceDetails.deposit || !toCoinSwapspaceDetails.withdrawal) {\n return {\n result: false,\n reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,\n };\n }\n /* Here we use not documented parameter 'estimated=false'. This parameter controls whether we want to use\n * cached rate values stored in swapspace cache. Their support says they store at most for 30 sec.\n * But we are better off using the most actual rates.\n */\n const response = await axios.get(\n `${this._URL}/api/v2/amounts?fromCurrency=${fromCoinSwapspaceDetails.code}&fromNetwork=${fromCoinSwapspaceDetails.network}&toNetwork=${toCoinSwapspaceDetails.network}&toCurrency=${toCoinSwapspaceDetails.code}&amount=${amountCoins}&estimated=false`\n );\n Logger.log(`Retrieved ${response?.data?.length} options`, loggerSource);\n const options = Array.isArray(response.data) ? response.data : [];\n // TODO: [feature, high] remove if possible over-engineering about toAmount = 0 options treating as supported but not available. task_id=404ae30d9a7743238af3cc0d3bae9239\n let exchangesSupportingThePairDespiteFixedOrFloating = options.filter(\n exchange =>\n exchange?.exists &&\n !BANNED_PARTNERS.find(bannedPartner => bannedPartner === exchange?.partner) &&\n (exchange?.fixed === false || exchange?.fixed === true) &&\n typeof exchange.toAmount === \"number\" &&\n ((typeof exchange.min === \"number\" && typeof exchange.max === \"number\") || exchange.toAmount > 0) &&\n (exchange.min === 0 || exchange.max === 0 || exchange.max > exchange.min)\n );\n let exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating;\n if (fixed != null) {\n exchangesSupportingThePair = exchangesSupportingThePairDespiteFixedOrFloating.filter(\n option => option.fixed === fixed\n );\n }\n Logger.log(`${exchangesSupportingThePair?.length} of them have exist=true`, loggerSource);\n if (exchangesSupportingThePair.length === 0) {\n if (exchangesSupportingThePairDespiteFixedOrFloating.length > 0 && fixed !== null) {\n return {\n result: false,\n reason: fixed\n ? SwapProvider.NO_SWAPS_REASONS.NO_FIXED_BUT_HAVE_FLOATING\n : SwapProvider.NO_SWAPS_REASONS.NO_FLOATING_BUT_HAVE_FIXED,\n };\n }\n return {\n result: false,\n reason: SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,\n };\n }\n const availableExchanges = exchangesSupportingThePair.filter(\n exchange => typeof exchange?.toAmount === \"number\" && exchange.toAmount > 0\n );\n Logger.log(`Available (having amountTo): ${safeStringify(availableExchanges)}`, loggerSource);\n // min=0 or max=0 means there is no limit for the partner\n let smallestMin = null;\n if (exchangesSupportingThePair.find(ex => BigNumber(ex.min).isZero()) == null) {\n smallestMin = exchangesSupportingThePair.reduce((prev, cur) => {\n if (typeof cur.min === \"number\" && (prev === null || BigNumber(cur.min).lt(prev)))\n return BigNumber(cur.min);\n return prev;\n }, null);\n }\n let greatestMax = null;\n if (exchangesSupportingThePair.find(ex => BigNumber(ex.max).isZero()) == null) {\n greatestMax = exchangesSupportingThePair.reduce((prev, cur) => {\n if (typeof cur.max === \"number\" && (prev === null || BigNumber(cur.max).gt(prev)))\n return BigNumber(cur.max);\n return prev;\n }, null);\n }\n let extraCoinsToFitMinMax = \"0\";\n if (typeof fromCoinToUsdRate === \"string\" && BigNumber(fromCoinToUsdRate).gt(\"0\")) {\n const extraUsdToFitMinMax = BigNumber(\"1\"); // We correct the limits as the exact limit can fluctuate and cause failed swap creation\n extraCoinsToFitMinMax = AmountUtils.trim(extraUsdToFitMinMax.div(fromCoinToUsdRate), fromCoin.digits);\n }\n if (smallestMin instanceof BigNumber) {\n smallestMin = AmountUtils.trim(smallestMin.plus(extraCoinsToFitMinMax), fromCoin.digits);\n }\n if (greatestMax instanceof BigNumber) {\n if (greatestMax > extraCoinsToFitMinMax) {\n greatestMax = AmountUtils.trim(greatestMax.minus(extraCoinsToFitMinMax), fromCoin.digits);\n } else {\n greatestMax = \"0\";\n }\n }\n\n if (availableExchanges.length) {\n const sorted = availableExchanges.sort((op1, op2) => op2.toAmount - op1.toAmount);\n const bestOpt = sorted[0];\n Logger.log(`Returning first option after sorting: ${safeStringify(bestOpt)}`, loggerSource);\n let max = null;\n let min = null;\n if (extraCoinsToFitMinMax != null) {\n if (typeof bestOpt.max === \"number\" && bestOpt.max !== 0) {\n max = BigNumber(bestOpt.max).minus(extraCoinsToFitMinMax);\n max = AmountUtils.trim(max.lt(0) ? \"0\" : max, fromCoin.digits);\n }\n if (typeof bestOpt.min === \"number\" && bestOpt.min !== 0) {\n min = AmountUtils.trim(BigNumber(bestOpt.min).plus(extraCoinsToFitMinMax), fromCoin.digits);\n }\n }\n\n const rate =\n bestOpt.toAmount && bestOpt.fromAmount ? BigNumber(bestOpt.toAmount).div(bestOpt.fromAmount) : null;\n return {\n result: true,\n min: min,\n max: max,\n smallestMin: smallestMin,\n greatestMax: greatestMax,\n rate: rate != null ? AmountUtils.trim(rate, this._maxRateDigits) : null,\n durationMinutesRange: bestOpt.duration ?? null,\n fixed: bestOpt.fixed,\n rawSwapData: bestOpt,\n };\n }\n const result = {\n result: false,\n reason:\n smallestMin && BigNumber(amountCoins).lt(smallestMin)\n ? SwapProvider.NO_SWAPS_REASONS.TOO_LOW\n : greatestMax && BigNumber(amountCoins).gt(greatestMax)\n ? SwapProvider.NO_SWAPS_REASONS.TOO_HIGH\n : SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED,\n smallestMin: smallestMin,\n greatestMax: greatestMax,\n };\n Logger.log(`Returning result ${safeStringify(result)}`, loggerSource);\n return result;\n } catch (e) {\n if (e?.response?.status === 429) {\n return {\n result: false,\n reason: SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n Logger.log(`Internal swapspace/rabbit error when getting swap options ${safeStringify(e)}`, loggerSource);\n improveAndRethrow(e, loggerSource);\n }\n }\n\n async createSwap(\n fromCoin,\n toCoin,\n amount,\n toAddress,\n refundAddress,\n rawSwapData,\n clientIpAddress,\n fixed,\n toCurrencyExtraId = \"\",\n refundExtraId = \"\"\n ) {\n const loggerSource = \"createSwap\";\n const partner = rawSwapData?.partner;\n try {\n if (\n !(fromCoin instanceof Coin) ||\n !(toCoin instanceof Coin) ||\n typeof amount !== \"string\" ||\n typeof toAddress !== \"string\" ||\n typeof refundAddress !== \"string\" ||\n typeof clientIpAddress != \"string\" ||\n typeof fixed != \"boolean\" ||\n clientIpAddress.length === 0\n ) {\n throw new Error(\n `Invalid input: ${fromCoin} ${toCoin} ${amount} ${toAddress} ${refundAddress} ${clientIpAddress?.length} ${fixed}`\n );\n }\n if (\n typeof partner !== \"string\" ||\n typeof rawSwapData?.fromCurrency !== \"string\" ||\n typeof rawSwapData?.fromNetwork !== \"string\" ||\n typeof rawSwapData?.toCurrency !== \"string\" ||\n typeof rawSwapData?.toNetwork !== \"string\" ||\n typeof rawSwapData?.id !== \"string\" // can be just empty\n ) {\n throw new Error(`Invalid raw swap data: ${safeStringify(rawSwapData)}`);\n }\n\n const [fromCurrencyHasExtraId, toCurrencyHasExtraId] = this._supportedCoins.reduce(\n (prev, coinData) => [\n coinData.coin.ticker === fromCoin.ticker ? coinData.hasExtraId : prev[0],\n coinData.coin.ticker === toCoin.ticker ? coinData.hasExtraId : prev[1],\n ],\n [false, false]\n );\n await this._fetchSupportedCurrenciesIfNeeded();\n const requestData = {\n partner: partner,\n fromCurrency: rawSwapData?.fromCurrency,\n fromNetwork: rawSwapData?.fromNetwork,\n toCurrency: rawSwapData?.toCurrency,\n toNetwork: rawSwapData?.toNetwork,\n address: toAddress,\n amount: amount,\n fixed: fixed,\n extraId: toCurrencyHasExtraId ? toCurrencyExtraId ?? \"\" : \"\",\n // This param is not documented. But the refund is usually manual so this is not critical.\n refundExtraId: fromCurrencyHasExtraId ? refundExtraId ?? \"\" : \"\",\n rateId: rawSwapData?.id,\n userIp: clientIpAddress,\n refund: refundAddress,\n };\n\n Logger.log(`Sending create request: ${safeStringify(requestData)}`, loggerSource);\n const response = await axios.post(`${this._URL}/api/v2/exchange`, requestData);\n const result = response.data;\n Logger.log(`Creation result ${safeStringify(result)}`, loggerSource);\n\n if (result?.id) {\n if (\n typeof result?.from?.amount !== \"number\" ||\n typeof result?.from?.address !== \"string\" ||\n typeof result?.fixed !== \"boolean\" ||\n typeof result?.to?.amount !== \"number\" ||\n typeof result?.to?.address !== \"string\"\n )\n throw new Error(`Wrong swap creation result ${result}`);\n /* We use the returned rate preferably but if the retrieved\n * rate 0/null/undefined we calculate it manually */\n let rate = result.rate;\n if (typeof rate !== \"number\" || BigNumber(rate).isZero()) {\n rate = BigNumber(result?.to?.amount).div(result?.from?.amount);\n } else {\n rate = BigNumber(rate);\n }\n\n return {\n result: true,\n swapId: result?.id,\n fromCoin: fromCoin,\n fromAmount: AmountUtils.trim(result?.from?.amount, fromCoin.digits),\n fromAddress: result?.from?.address,\n toCoin: toCoin,\n toAmount: AmountUtils.trim(result?.to?.amount, toCoin.digits),\n toAddress: result?.to?.address,\n fromCurrencyExtraId: result?.from?.extraId ?? \"\",\n rate: AmountUtils.trim(rate, this._maxRateDigits),\n fixed: result.fixed,\n };\n }\n const errorMessage = `Swap creation succeeded but the response is wrong: ${safeStringify(response)}`;\n Logger.log(errorMessage, loggerSource);\n throw new Error(errorMessage);\n } catch (e) {\n Logger.logError(e, loggerSource, `Failed to create swap. Error is: ${safeStringify(e)}`);\n const composeFailResult = reason => ({\n result: false,\n reason: reason,\n partner: partner,\n });\n const status = e?.response?.status;\n const data = e?.response?.data;\n if (status === 429) {\n Logger.log(`Returning fail - RPS limit exceeded ${data}`, loggerSource);\n return composeFailResult(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);\n }\n const texts422 = [\n \"Pair cannot be processed by\",\n \"Currency not found\",\n \"Amount maximum is\",\n \"Amount minimum is\",\n ];\n const text403 = \"IP address is forbidden\";\n if (\n typeof data === \"string\" &&\n ((status === 403 && data.includes(text403)) ||\n (status === 422 && texts422.find(text => data.includes(text))))\n ) {\n Logger.log(`Returning retriable fail: ${status} - ${data}, ${partner}`, loggerSource);\n return composeFailResult(SwapProvider.CREATION_FAIL_REASONS.RETRIABLE_FAIL);\n }\n Logger.log(`Internal swapspace/rabbit error for ${partner}: ${safeStringify(e)}`, loggerSource);\n improveAndRethrow(e, loggerSource);\n }\n }\n\n _mapSwapspaceStatusToRabbitStatus(status, isExpiredByTime) {\n switch (status) {\n case \"waiting\":\n if (isExpiredByTime) {\n return SwapProvider.SWAP_STATUSES.EXPIRED;\n }\n return SwapProvider.SWAP_STATUSES.WAITING_FOR_PAYMENT;\n case \"confirming\":\n return SwapProvider.SWAP_STATUSES.CONFIRMING;\n case \"exchanging\":\n return SwapProvider.SWAP_STATUSES.EXCHANGING;\n case \"sending\":\n return SwapProvider.SWAP_STATUSES.PAYMENT_RECEIVED;\n case \"finished\":\n return SwapProvider.SWAP_STATUSES.COMPLETED;\n case \"verifying\":\n return SwapProvider.SWAP_STATUSES.EXCHANGING;\n case \"refunded\":\n return SwapProvider.SWAP_STATUSES.REFUNDED;\n case \"expired\":\n return SwapProvider.SWAP_STATUSES.EXPIRED;\n case \"failed\":\n return SwapProvider.SWAP_STATUSES.FAILED;\n default:\n throw new Error(`Unknown swapspace status: ${status}`);\n }\n }\n\n async getExistingSwapsDetailsAndStatus(swapIds) {\n const loggerSource = \"getExistingSwapsDetailsAndStatus\";\n try {\n if (swapIds.find(id => typeof id !== \"string\")) {\n throw new Error(\"Swap id is not string: \" + safeStringify(swapIds));\n }\n const getNotFailingOn404 = async swapId => {\n try {\n return await axios.get(`${this._URL}/api/v2/exchange/${swapId}`);\n } catch (error) {\n if (error?.response?.status === 404) return [];\n throw error;\n }\n };\n const responses = await Promise.all(swapIds.map(swapId => getNotFailingOn404(swapId)));\n const wo404 = responses.flat();\n Logger.log(\"All swaps RAW: \" + JSON.stringify(wo404.map(r => r.data)), loggerSource);\n const swaps = wo404\n .map(r => r.data)\n .map((swap, index) => {\n const fromCoin = this._supportedCoins.find(\n i => i.code === swap.from.code && i.network === swap.from.network\n )?.coin;\n const toCoin = this._supportedCoins.find(\n i => i.code === swap.to.code && i.network === swap.to.network\n )?.coin;\n if (!fromCoin || !toCoin) {\n return []; // We skip swaps with not supported coins for now\n }\n\n const toUtcTimestamp = timeStr => Date.parse(timeStr.match(/.+[Zz]$/) ? timeStr : `${timeStr}Z`);\n const expiresAt = toUtcTimestamp(swap.timestamps.expiresAt);\n const isExpiredByTime = expiresAt < Date.now();\n const status = this._mapSwapspaceStatusToRabbitStatus(swap.status, isExpiredByTime);\n const toDigits = status === SwapProvider.SWAP_STATUSES.REFUNDED ? fromCoin.digits : toCoin.digits;\n const addressToSendCoinsToSwapspace = swap.from.address;\n return new ExistingSwap(\n swapIds[index],\n status,\n toUtcTimestamp(swap.timestamps.createdAt),\n expiresAt,\n swap.confirmations,\n AmountUtils.trim(swap.rate, this._maxRateDigits),\n swap.fixed,\n swap.refundAddress,\n addressToSendCoinsToSwapspace,\n fromCoin,\n AmountUtils.trim(swap.from.amount, fromCoin.digits),\n swap.from.transactionHash,\n swap.blockExplorerTransactionUrl.from,\n toCoin,\n AmountUtils.trim(swap.to.amount, toDigits),\n swap.to.transactionHash,\n swap.blockExplorerTransactionUrl.to,\n swap.to.address,\n swap.partner,\n swap.from.extraId ?? null,\n swap.to.extraId ?? null,\n swap.refundExtraId ?? null\n );\n })\n .flat();\n Logger.log(`Swap details result ${safeStringify(swaps)}`, loggerSource);\n return { result: true, swaps: swaps };\n } catch (e) {\n Logger.logError(e, loggerSource, `Failed to get swap details. Error is: ${safeStringify(e)}`);\n const composeFailResult = reason => ({\n result: false,\n reason: reason,\n });\n const status = e?.response?.status;\n const data = e?.response?.data;\n if (status === 429) {\n Logger.log(`Returning fail - RPS limit exceeded ${data}`, loggerSource);\n return composeFailResult(SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);\n }\n improveAndRethrow(e, loggerSource);\n }\n }\n\n isAddressValidForAsset(asset, address) {\n try {\n const assetData = this._supportedCoins.find(i => i.coin?.ticker === asset?.ticker);\n if (assetData) {\n let corrected = assetData.validationRegexp.trim();\n corrected = corrected[0] === \"/\" ? corrected.slice(1) : corrected;\n corrected =\n corrected[corrected.length - 1] === \"/\" ? corrected.slice(0, corrected.length - 1) : corrected;\n return address.match(corrected) != null;\n }\n } catch (e) {\n Logger.logError(e, \"isAddressValidForAsset\");\n }\n return false;\n }\n\n getExtraIdNameIfPresent(asset) {\n try {\n const assetData = this._supportedCoins.find(i => i.coin?.ticker === asset?.ticker);\n if (assetData?.hasExtraId) {\n if (assetData?.extraIdName == null || assetData?.extraIdName === \"\") {\n // We return some default name if the extraIdName is empty\n return \"ID\";\n }\n return assetData?.extraIdName;\n }\n return null;\n } catch (e) {\n improveAndRethrow(e, \"getExtraIdNameIfPresent\");\n }\n }\n}\n","import { BigNumber } from \"bignumber.js\";\n\nimport { AmountUtils } from \"../../common/amountUtils.js\";\nimport { FiatCurrenciesService } from \"../../common/fiatCurrenciesService.js\";\nimport { improveAndRethrow } from \"../../common/errorUtils.js\";\nimport { ExistingSwapWithFiatData } from \"../models/existingSwapWithFiatData.js\";\nimport { EmailsApi } from \"../../common/utils/emailAPI.js\";\nimport { SwapProvider } from \"../external-apis/swapProvider.js\";\nimport { Logger } from \"../../common/utils/logging/logger.js\";\nimport { safeStringify } from \"../../common/utils/safeStringify.js\";\n\nexport class SwapUtils {\n /**\n * Retrieves min and max limits for swapping giving currencies.\n * Returns also conversion rate if possible with predefined amount logic.\n * Rate is how many \"to\" coins does 1 \"from\" coin contain.\n *\n * In case of errors returns one of reasons\n * - SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED\n * - one of SwapProvider.COMMON_ERRORS.*\n *\n * @param swapProvider {SwapProvider}\n * @param fromCoin {Coin} enabled coin (to swap amount from)\n * @param toCoin {Coin}\n * @param coinToCurrentFiatRate {string|null}\n * @param fiatCurrencyDecimals {number|null}\n * @return {Promise<{\n * result: true,\n * min: string,\n * fiatMin: (number|null),\n * max: string,\n * fiatMax: (number|null),\n * rate: (string|null),\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n static async getInitialSwapData(\n swapProvider,\n fromCoin,\n toCoin,\n coinToCurrentFiatRate = null,\n fiatCurrencyDecimals = null\n ) {\n const loggerSource = \"getInitialSwapData\";\n try {\n /* We use some amount here that should fit at least some of the limits of the swap providers.\n * So we are going to get some rate to be used as the default for the on-flight calculations before we get\n * the exact rate (that should be retrieved by getSwapCreationInfo method) for a specific amount.\n */\n const defaultAmountUsd = BigNumber(\"300\");\n const coinUsdRate = await swapProvider.getCoinToUSDTRate(fromCoin);\n const coinAmountForDefaultUsdAmount = AmountUtils.trim(\n coinUsdRate.result ? defaultAmountUsd.div(coinUsdRate?.rate) : defaultAmountUsd,\n fromCoin.digits\n );\n Logger.log(`Init: ${coinAmountForDefaultUsdAmount} ${fromCoin.ticker}->${toCoin.ticker}`, loggerSource);\n const details = await swapProvider.getSwapInfo(fromCoin, toCoin, coinAmountForDefaultUsdAmount);\n if (!details) {\n throw new Error(\"The details are empty: \" + safeStringify(details));\n }\n if (!details.result) {\n Logger.log(`Failed with reason: ${details.reason}. ${fromCoin.ticker}->${toCoin.ticker}`, loggerSource);\n if (\n details?.reason === SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED ||\n details?.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED\n ) {\n return { result: false, reason: details.reason };\n } else {\n throw new Error(\"Unhandled error case: \" + details?.reason);\n }\n }\n let fiatMin = null;\n let fiatMax = null;\n const fiatRate = coinToCurrentFiatRate ?? coinUsdRate?.rate;\n const fiatDecimals = fiatCurrencyDecimals ?? FiatCurrenciesService.getCurrencyDecimalCountByCode(\"USD\");\n if (fiatRate != null) {\n fiatMin = BigNumber(details?.smallestMin).times(fiatRate).toFixed(fiatDecimals);\n fiatMax = BigNumber(details?.greatestMax).times(fiatRate).toFixed(fiatDecimals);\n }\n\n const result = {\n result: true,\n min: details?.smallestMin,\n fiatMin: fiatMin,\n max: details?.greatestMax,\n fiatMax: fiatMax,\n rate: AmountUtils.trim(details.rate, 30),\n };\n Logger.log(`Returning: ${safeStringify(result)}`, loggerSource);\n return result;\n } catch (e) {\n Logger.logError(e, loggerSource, `Failed to init swap: ${safeStringify(e)}`);\n improveAndRethrow(e, loggerSource);\n }\n }\n\n static safeHandleRequestsLimitExceeding() {\n (async () => {\n try {\n await EmailsApi.sendEmail(\n \"AUTOMATIC EMAIL - SWAPSPACE REQUESTS LIMIT EXCEEDED\",\n \"Requests limit exceeded. Urgently ask swaps provider support for limit increasing\"\n );\n } catch (e) {\n Logger.log(`Failed to handle limit exceeding ${safeStringify(e)}`, \"_safeHandleRequestsLimitExceeding\");\n }\n })();\n }\n\n /**\n * If some swap is not found by id then there is no item in return list.\n *\n * @param swapProvider {SwapProvider}\n * @param swapIds {string[]}\n * @return {Promise<{\n * result: true,\n * swaps: ExistingSwapWithFiatData[]\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n static async getExistingSwapsDetailsWithFiatAmounts(swapProvider, swapIds) {\n try {\n const result = await swapProvider.getExistingSwapsDetailsAndStatus(swapIds);\n if (result.result) {\n const extendedSwaps = [];\n for (let swap of result.swaps) {\n if (swap.status === SwapProvider.SWAP_STATUSES.REFUNDED) {\n const rate = await swapProvider.getCoinToUSDTRate(swap.fromCoin);\n extendedSwaps.push(\n ExistingSwapWithFiatData.fromExistingSwap(\n swap,\n rate?.rate != null ? BigNumber(swap.fromAmount).times(rate.rate).toNumber() : null,\n rate?.rate != null ? BigNumber(swap.toAmount).times(rate.rate).toNumber() : null,\n \"USD\",\n FiatCurrenciesService.getCurrencyDecimalCountByCode(\"USD\")\n )\n );\n } else {\n const [fromCoinFiatRate, toConFiatRate] = await Promise.all([\n swapProvider.getCoinToUSDTRate(swap.fromCoin),\n swapProvider.getCoinToUSDTRate(swap.toCoin),\n ]);\n extendedSwaps.push(\n ExistingSwapWithFiatData.fromExistingSwap(\n swap,\n fromCoinFiatRate?.rate != null\n ? BigNumber(swap.fromAmount).times(fromCoinFiatRate.rate).toNumber()\n : null,\n toConFiatRate?.rate != null\n ? BigNumber(swap.toAmount).times(toConFiatRate.rate).toNumber()\n : null,\n \"USD\",\n FiatCurrenciesService.getCurrencyDecimalCountByCode(\"USD\")\n )\n );\n }\n }\n result.swaps = extendedSwaps;\n }\n\n return result;\n } catch (e) {\n improveAndRethrow(e, \"getExistingSwapsDetailsWithFiatAmounts\");\n }\n }\n}\n","import { BigNumber } from \"bignumber.js\";\nimport EventBusInstance from \"eventbusjs\";\n\nimport { FiatCurrenciesService } from \"../../common/fiatCurrenciesService.js\";\nimport { improveAndRethrow } from \"../../common/errorUtils.js\";\nimport { safeStringify } from \"../../common/utils/safeStringify.js\";\nimport { Logger } from \"../../common/utils/logging/logger.js\";\nimport { Coin } from \"../../common/models/coin.js\";\nimport { AmountUtils } from \"../../common/amountUtils.js\";\nimport { BaseSwapCreationInfo } from \"../models/baseSwapCreationInfo.js\";\nimport { SwapUtils } from \"../utils/swapUtils.js\";\nimport { SwapspaceSwapProvider } from \"../external-apis/swapspaceSwapProvider.js\";\nimport { SwapProvider } from \"../external-apis/swapProvider.js\";\n\nexport class PublicSwapService {\n static PUBLIC_SWAP_CREATED_EVENT = \"publicSwapCreatedEvent\";\n\n static PUBLIC_SWAPS_COMMON_ERRORS = {\n REQUESTS_LIMIT_EXCEEDED: \"requestsLimitExceeded\",\n };\n\n static PUBLIC_SWAP_DETAILS_FAIL_REASONS = {\n AMOUNT_LESS_THAN_MIN_SWAPPABLE: \"amountLessThanMinSwappable\",\n AMOUNT_HIGHER_THAN_MAX_SWAPPABLE: \"amountHigherThanMaxSwappable\",\n PAIR_NOT_SUPPORTED: \"pairNotSupported\",\n NO_FIXED_BUT_HAVE_FLOATING_PUBLIC_SWAP_OPTION: \"noFixedButHaveFloatingPublicSwapOption\",\n NO_FLOATING_BUT_HAVE_FIXED_PUBLIC_SWAP_OPTION: \"noFloatingButHaveFixedPublicSwapOption\",\n };\n\n static _fiatDecimalsCount = FiatCurrenciesService.getCurrencyDecimalCountByCode(\"USD\");\n\n constructor(apiKeysProxyUrl, cache) {\n this._swapProvider = new SwapspaceSwapProvider(apiKeysProxyUrl, cache, () => null, false);\n }\n\n async initialize() {\n try {\n await this._swapProvider.initialize();\n } catch (e) {\n Logger.logError(e, \"PublicSwapService.initialize\");\n }\n }\n\n async getAllSupportedCurrenciesListForPublicSwap() {\n const loggerSource = \"getAllSupportedCurrenciesListForPublicSwap\";\n try {\n const result = await this._swapProvider.getAllSupportedCurrencies();\n if (result.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n Logger.log(`Retrieved ${result?.coins?.length} supported currencies for swap`, loggerSource);\n return { result: true, coins: result.coins };\n } catch (e) {\n improveAndRethrow(e, \"getDepositCurrenciesListForPublicSwap\");\n }\n }\n\n async getDepositCurrenciesListForPublicSwap() {\n try {\n return await this._getCurrenciesListForPublicSwap(false);\n } catch (e) {\n improveAndRethrow(e, \"getDepositCurrenciesListForPublicSwap\");\n }\n }\n\n async getWithdrawCurrenciesListForPublicSwap() {\n try {\n return await this._getCurrenciesListForPublicSwap(true);\n } catch (e) {\n improveAndRethrow(e, \"getWithdrawCurrenciesListForPublicSwap\");\n }\n }\n\n async _getCurrenciesListForPublicSwap(withdraw = false) {\n const loggerSource = \"getCurrenciesListForPublicSwap\";\n try {\n const result = withdraw\n ? await this._swapProvider.getWithdrawalCurrencies()\n : await this._swapProvider.getDepositCurrencies();\n if (result.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n Logger.log(\n `Retrieved ${result?.coins?.length} supported currencies for swap (withdraw=${withdraw})`,\n loggerSource\n );\n return { result: true, coins: result.coins };\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n /**\n * Retrieves initial data for swapping two coins.\n *\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @return {Promise<{\n * result: true,\n * min: string,\n * fiatMin: (number|null),\n * max: string,\n * fiatMax: (number|null),\n * rate: (string|null)\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n async getInitialPublicSwapData(fromCoin, toCoin) {\n try {\n const result = await SwapUtils.getInitialSwapData(this._swapProvider, fromCoin, toCoin);\n if (!result.result) {\n if (result.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n if (result.reason === SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED) {\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.PAIR_NOT_SUPPORTED,\n };\n }\n }\n return result;\n } catch (e) {\n improveAndRethrow(e, \"getInitialPublicSwapData\");\n }\n }\n\n /**\n * Retrieves swap details that can be used to create swap.\n *\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @param fromAmountCoins {string}\n * @param [fixed=false] {boolean|null} null means fixed or float doesn't matter\n * @param [withoutFiat=false] {boolean} pass true if you don't need the fiat equivalent - this will diminish requests count\n * @return {Promise<{\n * result: false,\n * reason: string,\n * min: (string|null),\n * max: (string|null),\n * rate: (string|undefined),\n * fiatMin: (number|null),\n * fiatMax: (number|null)\n * }|{\n * result: true,\n * swapCreationInfo: BaseSwapCreationInfo\n * }>}\n */\n async getPublicSwapDetails(fromCoin, toCoin, fromAmountCoins, fixed = false, withoutFiat = false) {\n const loggerSource = \"getPublicSwapDetails\";\n try {\n const coinUsdtRate = withoutFiat\n ? null\n : (await this._swapProvider.getCoinToUSDTRate(fromCoin))?.rate ?? null;\n const details = await this._swapProvider.getSwapInfo(\n fromCoin,\n toCoin,\n fromAmountCoins,\n fixed,\n coinUsdtRate\n );\n\n // eslint-disable-next-line no-console\n console.log(\"getSwapInfo result: \", details);\n\n const min =\n details.smallestMin != null && BigNumber(details.smallestMin).gt(\"0\") ? details.smallestMin : null;\n const max =\n details.greatestMax != null && BigNumber(details.greatestMax).gt(\"0\") ? details.greatestMax : null;\n let fiatMin = null,\n fiatMax = null;\n if (coinUsdtRate != null) {\n if (min != null) {\n fiatMin = BigNumber(min).times(coinUsdtRate).toFixed(PublicSwapService._fiatDecimalsCount);\n }\n if (max != null) {\n fiatMax = BigNumber(max).times(coinUsdtRate).toFixed(PublicSwapService._fiatDecimalsCount);\n }\n }\n\n const composeFailResult = reason => ({\n result: false,\n reason: reason,\n min: min ?? null,\n fiatMin: fiatMin,\n max: max ?? null,\n fiatMax: fiatMax,\n rate: details.rate ?? null,\n });\n\n if (!details.result) {\n if (details?.reason === SwapProvider.NO_SWAPS_REASONS.NOT_SUPPORTED) {\n return composeFailResult(PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.PAIR_NOT_SUPPORTED);\n } else if (details?.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return composeFailResult(PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED);\n } else if (details?.reason === SwapProvider.NO_SWAPS_REASONS.NO_FLOATING_BUT_HAVE_FIXED) {\n return composeFailResult(\n PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.NO_FLOATING_BUT_HAVE_FIXED_PUBLIC_SWAP_OPTION\n );\n } else if (details?.reason === SwapProvider.NO_SWAPS_REASONS.NO_FIXED_BUT_HAVE_FLOATING) {\n return composeFailResult(\n PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.NO_FIXED_BUT_HAVE_FLOATING_PUBLIC_SWAP_OPTION\n );\n }\n }\n\n const fromAmountBigNumber = BigNumber(fromAmountCoins);\n if (typeof min === \"string\" && fromAmountBigNumber.lt(min)) {\n return composeFailResult(\n PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.AMOUNT_LESS_THAN_MIN_SWAPPABLE\n );\n } else if (typeof max === \"string\" && fromAmountBigNumber.gt(max)) {\n return composeFailResult(\n PublicSwapService.PUBLIC_SWAP_DETAILS_FAIL_REASONS.AMOUNT_HIGHER_THAN_MAX_SWAPPABLE\n );\n }\n\n const toAmountCoins = AmountUtils.trim(fromAmountBigNumber.times(details.rate), fromCoin.digits);\n const result = {\n result: true,\n swapCreationInfo: new BaseSwapCreationInfo(\n fromCoin,\n toCoin,\n fromAmountCoins,\n toAmountCoins,\n details.rate,\n details.rawSwapData,\n min,\n fiatMin,\n max,\n fiatMax,\n details.durationMinutesRange,\n details.fixed\n ),\n };\n Logger.log(\n `Result: ${safeStringify({\n result: result.result,\n swapCreationInfo: {\n ...result.swapCreationInfo,\n fromCoin: result?.swapCreationInfo?.fromCoin?.ticker,\n toCoin: result?.swapCreationInfo?.toCoin?.ticker,\n },\n })}`,\n loggerSource\n );\n\n return result;\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n /**\n * Creates swap by given params.\n *\n * @param fromCoin {Coin}\n * @param toCoin {Coin}\n * @param fromAmount {string}\n * @param swapCreationInfo {BaseSwapCreationInfo}\n * @param toAddress {string}\n * @param refundAddress {string}\n * @param clientIp {string}\n * @param [toCurrencyExtraId] {string}\n * @param [refundExtraId] {string}\n * @return {Promise<{\n * result: true,\n * fiatCurrencyCode: string,\n * toCoin: Coin,\n * fromAmountFiat: (number|null),\n * address: string,\n * durationMinutesRange: string,\n * fromAmount: string,\n * toAmount: string,\n * toAmountFiat: (number|null),\n * fiatCurrencyDecimals: number,\n * fromCoin: Coin,\n * rate: string,\n * swapId: string,\n * fromCurrencyExtraId: string,\n * fixed: boolean\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n async createPublicSwap(\n fromCoin,\n toCoin,\n fromAmount,\n swapCreationInfo,\n toAddress,\n refundAddress,\n clientIp,\n toCurrencyExtraId,\n refundExtraId\n ) {\n const loggerSource = \"createPublicSwap\";\n try {\n if (\n !(fromCoin instanceof Coin) ||\n !(toCoin instanceof Coin) ||\n typeof fromAmount !== \"string\" ||\n typeof toAddress !== \"string\" ||\n typeof refundAddress !== \"string\" ||\n !(swapCreationInfo instanceof BaseSwapCreationInfo)\n ) {\n throw new Error(`Wrong input: ${fromCoin.ticker} ${toCoin.ticker} ${fromAmount} ${swapCreationInfo}`);\n }\n Logger.log(\n `Start: ${fromAmount} ${fromCoin.ticker} -> ${toCoin.ticker}. Details: ${safeStringify({\n ...swapCreationInfo,\n fromCoin: swapCreationInfo?.fromCoin?.ticker,\n toCoin: swapCreationInfo?.toCoin?.ticker,\n })}`,\n loggerSource\n );\n\n const result = await this._swapProvider.createSwap(\n fromCoin,\n toCoin,\n fromAmount,\n toAddress,\n refundAddress,\n swapCreationInfo.rawSwapData,\n clientIp,\n swapCreationInfo.fixed,\n toCurrencyExtraId,\n refundExtraId\n );\n Logger.log(\n `Created:${safeStringify({\n ...result,\n fromCoin: fromCoin?.ticker,\n toCoin: toCoin?.ticker,\n })}`,\n loggerSource\n );\n if (!result?.result) {\n if (result?.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n if (result?.reason === SwapProvider.CREATION_FAIL_REASONS.RETRIABLE_FAIL) {\n // TODO: [feature, high] implement retrying if one partner fail and we have another partners task_id=a07e367e488f4a4899613ac9056fa359\n // return {\n // result: false,\n // reason: PublicSwapService.SWAP_CREATION_FAIL_REASONS.RETRIABLE_FAIL,\n // };\n }\n }\n if (result.result && result?.swapId) {\n let fromAmountFiat = null,\n toAmountFiat = null;\n try {\n const fromCoinUsdtRate = (await this._swapProvider.getCoinToUSDTRate(fromCoin))?.rate ?? null;\n const toCoinUsdtRate = (await this._swapProvider.getCoinToUSDTRate(fromCoin))?.rate ?? null;\n if (fromCoinUsdtRate != null && result.fromAmount != null) {\n fromAmountFiat = BigNumber(result.fromAmount)\n .times(fromCoinUsdtRate)\n .toFixed(PublicSwapService._fiatDecimalsCount);\n }\n if (toCoinUsdtRate != null && result.toAmount != null) {\n toAmountFiat = BigNumber(result.toAmount)\n .times(toCoinUsdtRate)\n .toFixed(PublicSwapService._fiatDecimalsCount);\n }\n } catch (e) {\n Logger.logError(e, loggerSource, \"Failed to calculate fiat amounts for result\");\n }\n\n // TODO: feature, cirtical] add GA event. task_id=tbd\n EventBusInstance.dispatch(\n PublicSwapService.PUBLIC_SWAP_CREATED_EVENT,\n null,\n fromCoin.ticker,\n toCoin.ticker,\n fromAmountFiat\n );\n\n const toReturn = {\n result: true,\n swapId: result.swapId,\n fromCoin: fromCoin,\n toCoin: toCoin,\n fromAmount: result.fromAmount,\n toAmount: result.toAmount,\n fromAmountFiat: fromAmountFiat,\n toAmountFiat: toAmountFiat,\n fiatCurrencyCode: \"USD\",\n fiatCurrencyDecimals: PublicSwapService._fiatDecimalsCount,\n rate: result.rate,\n durationMinutesRange: swapCreationInfo.durationMinutesRange,\n address: result.fromAddress, // CRITICAL: this is the address to send coins to swaps provider\n fromCurrencyExtraId: result.fromCurrencyExtraId ?? \"\", // CRITICAL: this is the extra ID for address to send coins to swaps provider\n fixed: result.fixed,\n };\n\n this._savePublicSwapIdLocally(result.swapId);\n\n Logger.log(\n `Returning: ${safeStringify({\n ...toReturn,\n fromCoin: fromCoin?.ticker,\n toCoin: toCoin?.ticker,\n })}`,\n loggerSource\n );\n return toReturn;\n }\n\n throw new Error(`Unexpected result from provider ${safeStringify(result)}`);\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n /**\n * Retrieves swap details and status for existing swaps by their ids.\n *\n * @param swapIds {string[]}\n * @return {Promise<{\n * result: true,\n * swaps: ExistingSwapWithFiatData[]\n * }|{\n * result: false,\n * reason: string\n * }>}\n * error reason is one of PUBLIC_SWAPS_COMMON_ERRORS\n */\n async getPublicExistingSwapDetailsAndStatus(swapIds) {\n const loggerSource = \"getPublicExistingSwapDetailsAndStatus\";\n try {\n const result = await SwapUtils.getExistingSwapsDetailsWithFiatAmounts(this._swapProvider, swapIds);\n if (!result?.result) {\n if (result.reason === SwapProvider.COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED) {\n SwapUtils.safeHandleRequestsLimitExceeding();\n return {\n result: false,\n reason: PublicSwapService.PUBLIC_SWAPS_COMMON_ERRORS.REQUESTS_LIMIT_EXCEEDED,\n };\n }\n throw new Error(\"Unknown reason: \" + result?.reason);\n }\n\n return result;\n } catch (e) {\n improveAndRethrow(e, loggerSource);\n }\n }\n\n /**\n * Retrieves the whole available swaps history by ids saved locally.\n *\n * @return {Promise<{\n * result: true,\n * swaps: ExistingSwapWithFiatData[]\n * }|{\n * result: false,\n * reason: string\n * }>}\n */\n async getPublicSwapsHistory() {\n try {\n const swapIds = this._getPublicSwapIdsSavedLocally();\n if (swapIds.length) {\n return await this.getPublicExistingSwapDetailsAndStatus(swapIds);\n }\n return { result: true, swaps: [] };\n } catch (e) {\n improveAndRethrow(e, \"getPublicSwapsHistory\");\n }\n }\n\n /**\n * @param swapId {string}\n * @private\n */\n _savePublicSwapIdLocally(swapId) {\n if (typeof window !== \"undefined\") {\n try {\n const saved = localStorage.getItem(\"publicSwapIds\");\n const ids = typeof saved === \"string\" && saved.length > 0 ? saved.split(\",\") : [];\n ids.push(swapId);\n localStorage.setItem(\"publicSwapIds\", ids.join(\",\"));\n } catch (e) {\n improveAndRethrow(e, \"_savePublicSwapIdLocally\");\n }\n }\n }\n\n /**\n * @private\n * @return {string[]}\n */\n _getPublicSwapIdsSavedLocally() {\n if (typeof window !== \"undefined\") {\n try {\n const saved = localStorage.getItem(\"publicSwapIds\");\n return typeof saved === \"string\" && saved.length > 0 ? saved.split(\",\") : [];\n } catch (e) {\n improveAndRethrow(e, \"_getPublicSwapIdsSavedLocally\");\n }\n }\n }\n\n /**\n * @param coinOrTicker {Coin|string}\n * @return {string} icon URL (ready to use)\n */\n getAssetIconUrl(coinOrTicker) {\n return this._swapProvider.getIconUrl(coinOrTicker);\n }\n\n /**\n * @param ticker {string}\n * @return {Coin|null}\n */\n getCoinByTickerIfPresent(ticker) {\n return this._swapProvider.getCoinByTickerIfPresent(ticker);\n }\n\n /**\n * TODO: [feature, moderate] add other fiat currencies support. task_id=5490e21b8b9c4f89a2247b28db3c9e0a\n * @param asset {Coin}\n * @return {Promise<string|null>}\n */\n async getAssetToUsdtRate(asset) {\n try {\n const result = await this._swapProvider.getCoinToUSDTRate(asset);\n return result?.rate ?? null;\n } catch (e) {\n improveAndRethrow(e, \"getAssetToUsdtRate\");\n }\n }\n\n /**\n * @param asset {Coin}\n * @param address {string}\n * @return {boolean}\n */\n isAddressValidForAsset(asset, address) {\n try {\n return this._swapProvider.isAddressValidForAsset(asset, address);\n } catch (e) {\n improveAndRethrow(e, \"isAddressValidForAsset\");\n }\n }\n\n /**\n * Retrieves token by contract address.\n *\n * @param addressString {string}\n * @return {Promise<Coin|null>}\n */\n async getTokenByContractAddress(addressString) {\n try {\n if (!addressString) return null;\n const addressLowerCase = addressString.toLowerCase();\n const allCoins = await this._swapProvider.getAllSupportedCurrencies();\n if (allCoins.result) {\n return allCoins.coins.find(\n coin => coin.tokenAddress && coin.tokenAddress.toLowerCase() === addressLowerCase\n );\n }\n } catch (e) {\n Logger.logError(e, \"getTokenByContractAddress\");\n }\n return null;\n }\n\n /**\n * @param asset {Coin}\n * @return {string|null}\n */\n getExtraIdNameIfPresentForAsset(asset) {\n try {\n return this._swapProvider.getExtraIdNameIfPresent(asset);\n } catch (e) {\n improveAndRethrow(e, \"getExtraIdNameIfPresentForAsset\");\n }\n }\n}\n"],"names":["require$$0","require$$1","ReactPropTypesSecret","has","printWarning","checkPropTypes","ReactIs","assign","LoadingDots","size","isColored","noMargins","align","React","createElement","className","styles","dot","colored","propTypes","PropTypes","oneOf","bool","oneOfType","Button","mode","onClick","resetButtonLoader","event","loader","loading","to","fullWidthOnMobiles","fullWidthOnTablets","icon","content","isDisabled","setClickTrigger","p","isFormSubmittingButton","bigIcon","checkmarkOnClick","propagatePrimaryButtonClick","smallPaddingOnSmallMobiles","handleError","func","isLoading","setIsLoading","useState","isCheckShown","setIsCheckShown","setEvent","buttonRef","useRef","useEffect","current","click","buttonClick","e","setTimeout","persist","stopPropagation","classNames","button","disable","Fragment","type","hidden","href","ref","src","alt","show","string","node","defaultProps","SupportChat","url","websiteToken","welcomeMessage","locale","window","chatwootSettings","position","launcherTitle","d","t","BASE_URL","g","s","getElementsByTagName","defer","async","parentNode","insertBefore","onload","chatwootSDK","run","baseUrl","document","isRequired","AssetIcon","assetIconSrc","assetIconProtocolSrc","fallbackSrc","small","handleFailedLoad","target","onerror","onError","LogsStorage","saveLog","log","_inMemoryStorage","push","getInMemoryLogs","getAllLogs","storedLogs","localStorage","getItem","_logsStorageId","join","saveToTheDisk","logger","MAX_LOCAL_STORAGE_VOLUME_BYTES","MAX_LOGS_STORAGE_BYTES","existingLogs","logsString","lettersCountToRemove","length","Math","round","setItem","slice","logError","removeAllClientLogs","removeItem","setDoNotRemoveClientLogsWhenSignedOut","value","safeStringify","object","indent","cache","String","retVal","JSON","stringify","key","toLowerCase","includes","body","query","headers","statusText","status","data","Logger","logString","source","timestamp","Date","toISOString","settingFunction","additionalMessage","onlyToConsole","_e$errorDescription","_e$howToFix","message","errorDescription","howToFix","httpStatus","response","responseData","finalErrorText","console","error","useCallHandlingErrors","setState","useCallback","functionToBeCalled","name","ICON_ROTATE_OPTIONS","rotate0","rotate90","rotate180","rotate270","LinkButton","isLoadable","iconRotate","IconComponent","callHandlingErrors","processedIconRotation","setProcessedIconRotation","handleClick","Object","keys","find","values","elementType","undefined","DialogButtons","primaryButtonTitle","primaryButtonOnClick","primaryButtonLoader","primaryButtonTo","primaryButtonSetClickTrigger","secondaryButtonTitle","secondaryButtonOnClick","secondaryButtonTo","secondaryButtonBig","withBackgroundImage","hideOnMobiles","BackgroundTitle","text","smallMargins","CLOSE_COLORS","WHITE","DARK","DARK_INVERT","Close","color","large","style","cursor","xmlns","viewBox","x","y","width","height","fill","opacity","rx","id","x1","y1","x2","y2","gradientUnits","offset","Validation","isSuccessAlert","SuccessfulValidationIcon","FailedValidationIcon","useReferredState","initialValue","state","reference","setReferredState","toString","call","improveAndRethrow","improvedErrorMessage","Error","logErrorOrOutputToConsole","DIALOG_SIZES","regular","largePlus","largePlusPlus","extraLarge","DIALOG_TRANSITION_STEP_DURATION","Dialog","showDialog","onClose","initControls","children","dispatchDialogOpened","dispatchDialogClosed","inline","buttonsConfigurationDefault","fixedButtonsEnabled","showDialogProcessed","setShowDialogProcessed","currentStep","setCurrentStep","steps","setSteps","dialogConfiguration","updateDialogConfiguration","cornerBackButtonTitle","customWidth","animationConfiguration","updateAnimationConfiguration","animateHeightDelay","animateHeightTransitionSpeed","animateHeightTransitionEnabled","wrapperWidthAnimationEnabled","currentStepAnimationEnabled","cornerBackButtonAnimationEnabled","triggerAnimationFinishedDispatcher","dialogContainerOverflowDisabled","hideMobileBottomButtonSection","stepAnimationFinishedTrigger","setStepAnimationFinishedTrigger","dialogVerticalHeight","setDialogVerticalHeight","currentStepRef","setCurrentStepRef","dimensions","setDimensions","buttonsConfiguration","updateButtonsConfigurationState","buttonControllingStep","updateButtonControllingStep","isMultiStep","setIsMultiStep","dialogWrapperRef","dialogRef","scrollableRef","resizeObserverRef","updateButtonsConfiguration","newConfiguration","stepName","disableAnimation","showCornerButtonForStep","stepButtonShowParam","stepNameId","findIndex","step","nextStep","animationControlEnabled","index","goToStep","previousStep","prevSteps","map","filter","item","getStepClass","stepClass","isCurrentStep","toFirstStep","enableAnimation","provideCurrentStepRef","dispatch","prev","_extends","scrollDialogToTop","animateScrollTo","elementToScroll","minDuration","maxDuration","clearButtonsConfiguration","ResizeObserver","entries","forEach","entry","contentRect","observe","disconnect","childrenFormatted","stepsArr","child","props","clearAllBodyScrollLocks","CSSTransition","in","timeout","enter","enterActive","exit","exitActive","unmountOnExit","onExited","onExiting","enableBodyScroll","onEntered","disableBodyScroll","maxWidth","AnimateHeight","duration","delay","contentClassName","enterDone","exitDone","DIALOG_STEP_CLASS","stroke","DialogStep","image","ImageRaw","title","titleIcon","titleIconCoin","coinToIconPaths","titleLoadingDots","subtitle","backButtonText","backButtonClick","backButtonTo","confirmButtonText","confirmButtonClick","confirmButtonLink","fixedButtons","showCornerBackButton","cornerBackButtonClick","bigButtonMargins","noButtonMargins","headerTitleLeft","subtitleSmallMargin","subtitleNoMargin","showBackgroundTitle","breakSubtitleWords","contentAlign","controls","backgroundImage","backgroundImageMobile","isSecondaryButtonBig","setStepClass","wrapperDirectionSubclass","setWrapperDirectionSubclass","unmountOnAnimationEndTrigger","setUnmountOnAnimationEndTrigger","stepMounted","setStepMounted","isTopImagePassed","setIsTopImagePassed","handleTransitionEnd","propertyName","classList","multiStep","onTransitionEnd","arrowWhite","arrowTosca","AssetSelection","disabled","protocolName","ArrowIcon","TOOLTIP_POSITIONS","TOP","LEFT","RIGHT","BOTTOM","TOP_LEFT","TOP_RIGHT","Tooltip","showTooltip","wide","ignorePointerEvents","onDoubleClick","DarkRectangle","handleClickOutside","exceptionsRefs","callback","isExceptionClicked","contains","addEventListener","removeEventListener","NoticeIcon","noticeText","titleNoticeIcon","tooltipPosition","setShowTooltip","noticeRef","NoticeQuestionIcon","copyBrowserTextToClipboard","copy","TitleBox","linkText","linkButtonClick","isLinkButtonDisabled","linkButtonLoader","fullWidth","titleNoticeText","titleNoticePosition","bigTitle","transparentTitle","copyButtonText","copyButtonContent","copyButtonTooltipContent","transparentTitleClass","showCopyNotice","setShowCopyNotice","handleCopyButton","InputValuesProviders","provideFormatOfFloatValueByInputString","inputString","digitsAfterDot","maxValue","_parts$2","replace","parts","split","_parts$","maxDigitsCountBeforeTheDot","BigNumber","toFixed","substring","FiatCurrenciesService","getFullCurrencyNameByCode","code","fiatCurrenciesList","currencyData","toUpperCase","isCodeValid","currenciesData","getCurrencySymbolByCode","_data$","getCurrencyDecimalCountByCode","_data$2","AmountUtils","fiatXs","amount","fiat","extraSmallLength","currencyCode","passedParams","params","defaultFiatParams","_checkIfAmountInvalid","currencySymbol","currencyDecimalCount","trimmedByMaxDigits","ROUND_FLOOR","processedAmount","collapsible","gte","_collapseToMillionsAndFormat","collapsedDecimalCount","limitResult","_limitTotalAmountLengthIfNeeded","toFormat","ticker","enableCurrencySymbols","cryptoWoTicker","digits","crypto","cryptoWoTickerXs","cryptoXs","periods","cryptoFull","trim","limitTotalLength","cryptoFullPureNumber","numberPartsSeparator","significantDecimalCount","defaultCryptoParams","addPeriods","amountBigNumber","removeRedundantRightZerosFromNumberString","originalAmountDecimalPlaces","decimalPlaces","errorMessage","wereMillionsCollapsed","allowNumbers","isBigNumber","toIntegerString","decimalCount","millionBigNumber","millions","div","limitedResult","formatted","amountString","maxLength","extraSmallMaxTotalLength","maxTotalLength","delta","currentDecimalsCount","newDecimalCount","composeRateText","leftTicker","rightTicker","rate","rightCurrencyDigitsAfterDots","strictRate","leftNumber","multiplier","maxAttemptsToGetRate","right","rateBigNumber","eq","Number","isNaN","i","rightNumberAttempt","times","leftAmountString","rightAmountString","numberAsAString","_right2","_right","AmountInput","forwardRef","label","handleCoinAmountChange","btcAmount","handleFiatAmountChange","fiatAmount","handleChangeAssetClick","handleBalanceValidationChange","isValid","locked","alertText","predefinedValue","tickerPrintable","assetDecimalPlaces","assetBalance","assetAmount","fallbackAssetIconSrc","isSendAll","handleSendAllClick","showBalance","showBalanceValidation","showChangeAssetButton","changeAssetButtonProtocol","changeAssetButtonDisabled","upperFormPosition","lowerFormPosition","errorEncountered","updateAssetInputTo","estimateAmount","cryptoAssetToFiatRate","fiatCurrencyCode","fiatCurrencyDecimals","linkButtonActiveText","linkButtonInactiveText","balanceLoaderText","fiatInputPlaceholderText","buttonForwardRef","coinAmountValue","setCoinAmountValue","coinAmountPlaceholder","setCoinAmountPlaceholder","fiatAmountValue","setFiatAmountValue","interactedWith","setInteractedWith","fiatAmountAutoFocus","setFiatAmountAutoFocus","isInFocus","setIsInFocus","highlightBalance","setHighlightBalance","highlightInput","setHighlightInput","resetToDefault","handleChangeAmount","newAmountString","handlerEnabled","correctedAmount","handleChangeAmountFiat","correctedFiatAmount","coinAmount","coinsAmount","isZero","placeholderByDecimalCount","repeat","handleFiatInteraction","enableHighlight","gt","WalletIcon","inputMode","onChange","placeholder","onFocus","onBlur","autoFocus","Textarea","successAlertText","fullHeight","smallText","adaptiveHeight","ignoreEnter","onChangeProxy","_e$target","indexOf","htmlFor","TextareaAutosize","minRows","maxRows","RateSelector","isFixed","setIsFixed","translations","floatingRate","fixedRate","SwapForm","sendingAssetTicker","receivingAssetTicker","sendingAssetDecimalCount","receivingAssetDecimalCount","sendingAssetTickerPrintable","receivingAssetTickerPrintable","sendingAssetProtocol","receivingAssetProtocol","sendingAssetIconSrc","sendingAssetProtocolIconSrc","receivingAssetIconSrc","receivingAssetProtocolIconSrc","fallBackAssetIconSrc","sendingAssetFeeCoinTickerPrintable","sendingAssetBalance","receivingAssetBalance","handleChangeSendingAssetClick","handleChangeReceivingAssetClick","handleConfirmButtonClick","setValidationContent","setBalanceValid","setMinimalAmountValid","setMaximumAmountValid","setIsPairSupported","setIsSameCoins","composeConfirmButtonTo","fromTicker","toTicker","fromAmount","setSwapCreationEstimation","details","handleUnexpectedError","rotateAssets","preservedAmount","handleSwapServiceError","errorCode","formHasBalance","retrieveSwapDetails","isSwapAll","retrieveInitialSwapData","triggerDataUpdateResetting","fromAssetSelectionButtonRef","toAssetSelectionButtonRef","sendingAssetToFiatRate","receivingAssetToFiatRate","formHasFiat","termsOfUseUrl","privacyPolicyUrl","swapAllButtonTitles","enable","cancel","input","fiatPlaceholder","consents","consentText","termsOfUse","and","privacyPolicy","informationBlock","minimumAmount","maximumAmount","transactionFee","calculatingNetworkFee","loadingMinimalAmount","swapRate","calculatingSwapRates","pairNotAvailable","addressFields","addressTitle","extraIdTitle","extraIdPlaceholder","extraIdNotice","rateSelector","swapSeparatorIconSrc","swapButtonAlwaysActive","recepientAddress","recepientAddressExtraId","recepientAddressValid","recepientAddressExtraIdValid","setRecepientAddress","setRecepientAddressExtraId","recepientAddressExtraIdAvailable","displayRateSelector","_isFixedRate$current2","_maximumAmount$curren4","_maximumAmount$curren5","_maximumAmount$curren6","_minimalAmount$curren5","_isFixedRate$current3","DETAIL_REFRESH_INTERVAL_MS","IS_FIXED_BY_DEFAULT","updateSendInputTo","setUpdateSendInputTo","updateReceiveInputTo","setUpdateReceiveInputTo","sendAssetAmount","setSendAssetAmount","setSwapRate","minimalAmount","setMinimalAmount","setMaximumAmount","validationContent","minimalAmountValid","maximumAmountValid","isPairSupported","isSameCoins","isSwapCalculated","setIsSwapCalculated","readyToSwap","setReadyToSwap","isAmountZero","setIsAmountZero","isAddressFieldEnabled","setIsAddressFieldEnabled","isFixedRate","setIsFixedRate","confirmButtonTo","setConfirmButtonTo","setTransactionFee","balanceValid","setIsSwapAll","swapAllButtonLoaderReSetter","setSwapAllButtonLoaderReSetter","dataUpdateTimeoutId","setDataUpdateTimeoutId","idleDataUpdateTimeoutId","setIdleDataUpdateTimeoutId","recalculationDelayOnTyping","handleSendAssetAmountChange","handleReceiveAssetAmountChange","handleMinimalAmountClick","_minimalAmount$curren","_minimalAmount$curren2","handleMaximumAmountClick","_maximumAmount$curren","_maximumAmount$curren2","handleSwapAllClick","processMinMaxAmounts","_minimalAmount$curren3","lte","requestDataRefresh","immediately","clearTimeout","loadFullEstimation","loadMinimalAmountAndSwapRate","setAmountLimitsAndRate","_details$rate","min","fiatMin","max","fiatMax","feeCoins","feeFiat","isForPreserved","_minimalAmount$curren4","_maximumAmount$curren3","_isFixedRate$current","dataMemento","result","swapCreationInfo","fromAmountCoins","toAmountCoins","reason","isCalledForClearedInput","swapData","handleChangeAssetsIconClick","handleRateModeChanged","isCurrentAmountNotZero","isPreservedAmountNotZero","timeoutId","_sendAssetAmount$curr","processingAmount","draggable","number","any","generateQrAndShowInCanvas","encodingString","QRCode","QrCode","address","canvasRef","innerHTML","LinesOfText","firstLineText","secondLineText","thirdLineText","isHorizontal","defaultTextContent","isFirstLineTextReducible","firstLineNotReducibleSuffix","wrapFirstLine","breakFirstLine","LineWithIconLink","rel","cx","cy","r","transform","DeterminedErrorDialogStep","backButtonLink","determinedErrorImage","TitledLineWithIconLink","RadioButtonWithText","onStateChange","isSwitchedOn","tooltipText","showTooltipTimeoutId","setShowTooltipTimeoutId","handleChange","onMouseEnter","onMouseLeave","InformationMessage","bigImage","whiteText","InfoIcon","Input","defaultValue","isBigHeight","isSmallHeight","onKeyUp","fillWidth","clearButton","imageBackground","handleClearButtonClick","focus","FALLBACK_ASSET_ICON_URL","DEFAULT_CRYPTO_DECIMAL_COUNT","COIN_PICKER_MODES","BUTTON","CHECKBOX","defaultTexts","searchPlaceholder","noAssetsMessage","loadMoreButton","assetSuggestionMessage","part1","part2","part3","CoinPicker","allCoins","initiallyEnabledCoinsList","triggerToReloadData","search","searchAdaptive","setCoinPickerValue","setCoinPickerListChanged","loadCoinsAndContent","showRequestMissingCoinsInfoMessage","supportUrl","coin","partialLoadingEnabled","partialLoadingIncrement","texts","coins","setCoins","filteredCoins","setFilteredCoins","initiallyEnabledCoins","setInitiallyEnabledCoins","currentlyEnabledCoins","setCurrentlyEnabledCoins","searchFieldValue","setSearchFieldValue","scrollWrapperClass","setScrollWrapperClass","searchEnabled","setSearchEnabled","coinsContent","setCoinsContent","isCoinsDataReloadable","setIsCoinsDataReloadable","limitedCoinsNumber","setLimitedCoinsNumber","displayedCoins","setDisplayedCoins","isListFull","setIsListFull","searchRef","scrollContainerRef","skeletonItemsCount","defaultLoadCoinsAndContent","allCoinsSorted","sortCoinsArrayByAlphabet","composeEnabledCoinsObject","c","_c$blockchain","blockchain","coinsToSort","enabledCoinsObject","sort","a","b","latinName","reduce","enabledCoin","handleToggleClick","handleCoinClick","handleSearchAsset","searchTerm","searchWords","filteredAndSortedCoins","every","word","_coin$latinName","_coin$ticker","_coin$tickerPrintable","aMatch","bMatch","localeCompare","loadCoinsAndSaveToState","intervalId","setInterval","clearInterval","enabled","enabledCoinsTickers","coinsToDisplay","displayMoreCoins","skeleton","skeletonItems","handleScroll","_scrollContainerRef$c","_scrollContainerRef$c2","_scrollContainerRef$c3","_scrollContainerRef$c4","_scrollContainerRef$c5","_scrollContainerRef$c6","_scrollContainerRef$c7","scrollTop","scrollHeight","clientHeight","shouldShowSkeleton","onScroll","_coinsContent$find$su","_coinsContent$find","array","shape","CoinPickerDialogStep","handleCoinSelection","PARAMETER_VALUES_SEPARATOR","saveQueryParameterAndValues","parameterName","updateURLCallback","newQueryString","parametersAndValues","parseSearchString","parameterAndValues","parameterValuesForURL","encodeURIComponent","removeQueryParameterAndValues","getQueryParameterValues","parameterAndValue","allValues","decodeURIComponent","_window$location$sear","trimmed","location","getQueryParameterSingleValue","Blockchain","constructor","supportedProtocols","Protocol","protocol","Coin","digitsCountAfterComma","atomName","mainnet","testnet","minConfirmations","payableEntityStringForFeeRate","feeOptionsTimeStringsSortedDesc","feeRatesExpirationTimeMs","tokenAddress","doesUseLowerCaseAddresses","doesUseOutputs","feeCoin","_significantDigits","setFeeCoin","doesUseDifferentCoinFee","atomsToCoinAmount","atoms","coinAmountToAtoms","composeUrlToTransactionExplorer","txId","coinAtomsFeeRateToCommonlyUsedAmountFormatWithDenominationString","coinAtomsString","doesSupportTransactionPrioritisation","Array","isArray","tickerAndProtocol","_ref","Cache","eventBus","noSessionEvents","_cache","Map","_eventDependentDataKeys","_noSessionEvents","_eventBus","_setupIntervalClearingExpired","cleaner","get","ttlMs","addedMsTimestamp","now","delete","bind","put","set","putSessionDependentData","_putEventDependentData","putEventDependentData","events","eventAndKeys","getLastUpdateTimestamp","_this$_cache$get$adde","_this$_cache$get","setLastUpdateTimestamp","addedTimestampMs","invalidate","invalidateContaining","keyPart","matchedKeys","from","RegExp","test","clear","_sessionDependentDataKeys","putClientPersistentData","uniqueKey","getClientPersistentData","markCacheItemAsExpiredButDontRemove","ttlFinalMs","postponeExecution","execution","timeoutMS","Promise","resolve","reject","AxiosAdapter","method","args","axios","post","patch","options","head","EmailsApi","sendEmail","subject","host","serverEndpointEntity","ExternalApiProvider","endpoint","httpMethod","apiGroup","specificHeaders","maxPageLength","MAX_SAFE_INTEGER","niceFactor","getRps","_this$apiGroup$rps","rps","isRpsExceeded","actualizeLastCalledTimestamp","getApiGroupId","doesRequireSubRequests","doesSupportPagination","composeQueryString","subRequestIndex","composeBody","getDataByResponse","iterationsData","changeQueryParametersForPageNumber","previousResponse","pageNumber","checkWhetherResponseIsForLastPage","currentResponse","currentPageNumber","resetNiceFactor","incorporateIterationsData","flat","ApiGroup","backendProxyIdGenerator","lastCalledTimestamp","_this$lastCalledTimes","floor","ApiGroups","ETHERSCAN","ALCHEMY","networkKey","BLOCKSTREAM","BLOCKCHAIN_INFO","BLOCKNATIVE","ETHGASSTATION","TRONGRID","TRONSCAN","GETBLOCK","COINCAP","COINGECKO","MESSARI","BTCCOM","BITAPS","CEX","BIGDATACLOUD","TRACKIP","IPIFY","WHATISMYIPADDRESS","EXCHANGERATE","FRANKFURTER","BITGO","BITCOINER","BITCORE","MEMPOOL","ConcurrentCalculationsMetadataHolder","_calculations","startCalculation","domain","calculationsHistoryMaxLength","newCalculation","startTimestamp","endTimestamp","uuid","v4","endCalculation","isFailed","_calculation$endTimes","_calculation$startTim","_calculation$uuid","calculation","isFiled","elapsed","isCalculationLate","queue","analysingCalculation","printCalculationsWaitingMoreThanSpecifiedSeconds","waitingLastsMs","calculations","concurrentCalculationsMetadataHolder","ExternalServicesStatsCollector","stats","externalServiceFailed","serviceUrl","processMessage","stat","_stat$errors","_errorMessage","errors","match","callsCount","failsCount","externalServiceCalledWithoutError","getStats","_stat$errors2","failsPerCent","calls","s1","s2","RobustExternalAPICallerService","statsCollector","bio","providersData","provider","providers","_logger","callExternalAPI","parametersValues","cancelToken","attemptsCount","doNotFailForNowData","_this","calculationUuid","_result4","_result5","_result","shouldBeForceRetried","_result2","rpsFactor","defaultRPSFactor","_result3","_result$errors","_performCallAttempt","maxRps","_provider$getRps","waitingTimeMs","_data","_reorderProvidersByNiceFactor","providerIndex","countOfRequestsDeclinedByRps","_provider$specificHea","axiosConfig","httpMethods","axiosParams","_provider$composeBody","splice","responsesForPages","hasNextPage","actualizedParams","waitingTimeMS","postponeUntilRpsExceeded","recursionLevel","maxCountOfPostponingAttempts","responsesDataForPages","allData","punishProvider","rpsMultiplier","providersCopy","p1","p2","CacheAndConcurrentRequestsResolver","cacheTtl","removeExpiredCacheAutomatically","maxCallAttemptsToWaitForAlreadyRunningRequest","timeoutBetweenAttemptsToCheckWhetherAlreadyRunningRequestFinished","_bio","_cacheTtlMs","_maxExecutionTimeMs","_removeExpiredCacheAutomatically","_requestsManager","ManagerOfRequestsToTheSameResource","getCachedOrWaitForCachedOrAcquireLock","cacheId","_cached2","startedAtTimestamp","cached","cachedDataBackupIsPresentButExpired","lastUpdateTimestamp","calculationId","isRetrievedCacheExpired","isWaitingForActiveCalculationSucceeded","weStillHaveSomeTimeToProceedExecution","startCalculationOrWaitForActiveToFinish","_cached","canStartDataRetrieval","cachedData","lockId","getCached","_getTtl","acquireLock","saveCachedData","sessionDependentData","wasDataMergedSynchronouslyWithMostRecentCacheState","isTheLockActiveOne","releaseLock","finishActiveCalculation","actualizeCachedData","synchronousCurrentCacheProcessor","sessionDependent","isModified","finishAllActiveCalculations","markAsExpiredButDontRemove","maxPollsCount","timeoutDuration","_activeCalculationsIds","_nextCalculationIds","requestHash","activeCalculationIdForHash","_waitForCalculationIdToFinish","_this$_nextCalculatio","activeId","nextId","currentNext","waitingResult","_this$_nextCalculatio2","next","hash","activeCalculationId","attemptIndex","waitForCalculationId","currentId","it","CachedRobustExternalApiCallerService","cacheTtlMs","mergeCachedAndNewlyRetrievedData","_provider","_cahceAndRequestsResolver","_cahceIds","_mergeCachedAndNewlyRetrievedData","callExternalAPICached","customHashFunctionForParams","loggerSource","_calculateCacheId","canPerformMerge","mostRecentCached","invalidateCaches","actualizedAtTimestamp","markCacheAsExpiredButDontRemove","Hashes","SHA512","hex","BigdatacloudIpAddressProvider","_response$data","ipString","TrackipIpAddressProvider","IpifyV6IpAddressProvider","_response$data2","ip","IpifyIpAddressProvider","_response$data3","WhatismyipaddressIpAddressProvider","IpAddressProvider","getClientIpAddress","externalIPAddressAPICaller","EventBusInstance","CancelProcessing","_cancelToken","CancelToken","_isCanceled","isCanceled","getToken","token","instance","ExistingSwap","swapId","createdAt","expiresAt","confirmations","fixed","refundAddress","payToAddress","fromCoin","fromTransactionId","fromTransactionLink","toCoin","toAmount","toTransactionId","toTransactionLink","toAddress","partner","fromExtraId","toExtraId","refundExtraId","ExistingSwapWithFiatData","fromAmountFiat","toAmountFiat","fromExistingSwap","existingSwap","BaseSwapCreationInfo","rawSwapData","durationMinutesRange","SwapProvider","initialize","getSwapCreationInfoTtlMs","getAllSupportedCurrencies","getDepositCurrencies","getWithdrawalCurrencies","exceptCurrency","getIconUrl","getCoinToUSDTRate","getSwapInfo","amountCoins","fromCoinToUsdRate","createSwap","clientIpAddress","toCurrencyExtraId","getExistingSwapsDetailsAndStatus","swapIds","getCoinByTickerIfPresent","isAddressValidForAsset","asset","getExtraIdNameIfPresent","COMMON_ERRORS","REQUESTS_LIMIT_EXCEEDED","NO_SWAPS_REASONS","TOO_LOW","TOO_HIGH","NOT_SUPPORTED","NO_FIXED_BUT_HAVE_FLOATING","NO_FLOATING_BUT_HAVE_FIXED","CREATION_FAIL_REASONS","RETRIABLE_FAIL","SWAP_STATUSES","WAITING_FOR_PAYMENT","CONFIRMING","PAYMENT_RECEIVED","EXCHANGING","COMPLETED","REFUNDED","EXPIRED","FAILED","BANNED_PARTNERS","SwapspaceSwapProvider","apiKeysProxyUrl","customCoinBuilder","network","useRestrictedCoinsSet","_supportedCoins","_URL","_maxRateDigits","_customCoinBuilder","_this$_supportedCoins","_fetchSupportedCurrenciesIfNeeded","deposit","_e$response","_this$_supportedCoins2","_e$response2","_this$_supportedCoins3","_item$coin","withdrawal","_e$response3","coinOrTicker","_this$_supportedCoins5","_this$_supportedCoins6","_this$_supportedCoins4","_item$coin2","_coin","iconURL","_this$_supportedCoins7","_rawResponse$data","_rawResponse$data2","rawResponse","allowedCoins","_item$name","replaceAll","defaultDecimalPlacesForCoinNotSupportedOOB","defaultMinConfirmationsForCoinNotSupportedOOB","contractAddress","_item$deposit","_item$withdrawal","_item$validationRegex","hasExtraId","extraIdName","isPopular","popular","validationRegexp","_putPopularCoinsFirst","i1","i2","_this$_supportedCoins8","usdtTrc20","standardSwapspaceFeeMultiplier","_item$coin3","_exchangesSupportingT","lt","fromCoinSwapspaceDetails","_i$coin","toCoinSwapspaceDetails","_i$coin2","exchangesSupportingThePairDespiteFixedOrFloating","exchange","exists","bannedPartner","exchangesSupportingThePair","option","availableExchanges","smallestMin","ex","cur","greatestMax","extraCoinsToFitMinMax","extraUsdToFitMinMax","plus","minus","_bestOpt$duration","sorted","op1","op2","bestOpt","_e$response4","fromCurrency","fromNetwork","toCurrency","toNetwork","fromCurrencyHasExtraId","toCurrencyHasExtraId","coinData","requestData","extraId","rateId","userIp","refund","_result$from","_result$from2","_result$to","_result$to2","_result$from4","_result$from5","_result$to4","_result$to5","_result$from$extraId","_result$from6","_result$to3","_result$from3","fromAddress","fromCurrencyExtraId","_e$response5","_e$response6","composeFailResult","texts422","text403","_mapSwapspaceStatusToRabbitStatus","isExpiredByTime","getNotFailingOn404","_error$response","responses","all","wo404","swaps","swap","_this$_supportedCoins9","_this$_supportedCoins10","_swap$from$extraId","_swap$to$extraId","_swap$refundExtraId","toUtcTimestamp","timeStr","parse","timestamps","toDigits","addressToSendCoinsToSwapspace","transactionHash","blockExplorerTransactionUrl","_e$response7","_e$response8","assetData","_i$coin3","corrected","_i$coin4","SwapUtils","getInitialSwapData","swapProvider","coinToCurrentFiatRate","defaultAmountUsd","coinUsdRate","coinAmountForDefaultUsdAmount","fiatRate","fiatDecimals","safeHandleRequestsLimitExceeding","getExistingSwapsDetailsWithFiatAmounts","extendedSwaps","toNumber","fromCoinFiatRate","toConFiatRate","PublicSwapService","_swapProvider","getAllSupportedCurrenciesListForPublicSwap","_result$coins","PUBLIC_SWAPS_COMMON_ERRORS","getDepositCurrenciesListForPublicSwap","_getCurrenciesListForPublicSwap","getWithdrawCurrenciesListForPublicSwap","withdraw","_result$coins2","getInitialPublicSwapData","PUBLIC_SWAP_DETAILS_FAIL_REASONS","PAIR_NOT_SUPPORTED","getPublicSwapDetails","withoutFiat","_await$this$_swapProv","_await$this$_swapProv2","_result$swapCreationI","_result$swapCreationI2","coinUsdtRate","_fiatDecimalsCount","NO_FLOATING_BUT_HAVE_FIXED_PUBLIC_SWAP_OPTION","NO_FIXED_BUT_HAVE_FLOATING_PUBLIC_SWAP_OPTION","fromAmountBigNumber","AMOUNT_LESS_THAN_MIN_SWAPPABLE","AMOUNT_HIGHER_THAN_MAX_SWAPPABLE","createPublicSwap","clientIp","_swapCreationInfo$fro","_swapCreationInfo$toC","_result$fromCurrencyE","_await$this$_swapProv3","_await$this$_swapProv4","_await$this$_swapProv5","_await$this$_swapProv6","fromCoinUsdtRate","toCoinUsdtRate","PUBLIC_SWAP_CREATED_EVENT","toReturn","_savePublicSwapIdLocally","getPublicExistingSwapDetailsAndStatus","getPublicSwapsHistory","_getPublicSwapIdsSavedLocally","saved","ids","getAssetIconUrl","getAssetToUsdtRate","_result$rate","getTokenByContractAddress","addressString","addressLowerCase","getExtraIdNameIfPresentForAsset"],"mappings":"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/D,IAAAA,OAAO,EAAEA,MAAMsoB,WAAU,CAAC,IAAI,CAAA;GAE9BnpB,eAAAA,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;IAAKC,SAAS,EAAE0E,GAAC,CAAC,yBAAyB,CAAA;AAAE,GAAA,EAAEwkB,aAAY,CAACE,SAAe,CAC1E,CACJ,CAAC,CAAA;AAEd,CAAC;;ACVD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,QAAQ,GAAGA,CAAC;EACrBC,kBAAkB;EAClBC,oBAAoB;AACpBC,EAAAA,wBAAwB,EAAxBA,yBAAwB,GAAGpL,WAAW,CAACmC,uBAAuB;AAC9DkJ,EAAAA,0BAA0B,EAA1BA,2BAA0B,GAAGrL,WAAW,CAACmC,uBAAuB;EAChEmJ,2B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"}