@layerswap/widget 1.0.5 → 1.1.0

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 (361) hide show
  1. package/dist/esm/Models/LayerSwapSettings.js +0 -1
  2. package/dist/esm/Models/Theme.js +39 -8
  3. package/dist/esm/components/Buttons/copyButton.js +5 -3
  4. package/dist/esm/components/Buttons/submitButton.js +2 -1
  5. package/dist/esm/components/ColorSchema.js +3 -10
  6. package/dist/esm/components/Common/ConnectWalletButton.js +9 -3
  7. package/dist/esm/components/Common/CountDownTimer.js +0 -15
  8. package/dist/esm/components/Common/WarningMessage.js +4 -2
  9. package/dist/esm/components/Common/guideLink.js +4 -6
  10. package/dist/esm/components/ErrorFallback.js +11 -11
  11. package/dist/esm/components/HeaderWithMenu.js +1 -1
  12. package/dist/esm/components/Icons/Wallets/Xverse.js +3 -0
  13. package/dist/esm/components/Icons/Wallets/index.js +1 -0
  14. package/dist/esm/components/Input/Address/AddressPicker/index.js +15 -12
  15. package/dist/esm/components/Input/Amount/Balance.js +8 -2
  16. package/dist/esm/components/Input/Amount/ExchangeReceiveAmount.js +8 -0
  17. package/dist/esm/components/Input/Amount/MinMax.js +1 -1
  18. package/dist/esm/components/Input/Amount/PriceImpact.js +5 -38
  19. package/dist/esm/components/Input/Amount/ReceiveAmount.js +2 -2
  20. package/dist/esm/components/Input/Amount/index.js +3 -3
  21. package/dist/esm/components/Input/DestinationPicker.js +2 -2
  22. package/dist/esm/components/Input/NumericInput.js +7 -4
  23. package/dist/esm/components/Input/RoutePicker/Content.js +19 -3
  24. package/dist/esm/components/Input/RoutePicker/RouterPickerWalletConnect.js +5 -5
  25. package/dist/esm/components/Input/RoutePicker/Routes.js +18 -18
  26. package/dist/esm/components/Input/RoutePicker/Rows/CollapsableHeader.js +2 -2
  27. package/dist/esm/components/Input/RoutePicker/Rows/CollapsibleRow.js +3 -3
  28. package/dist/esm/components/Input/RoutePicker/Rows/StickyHeader.js +2 -2
  29. package/dist/esm/components/Input/RoutePicker/Rows/SuggestionsHeader.js +55 -0
  30. package/dist/esm/components/Input/RoutePicker/Rows/TitleRow.js +11 -0
  31. package/dist/esm/components/Input/RoutePicker/Rows/index.js +6 -7
  32. package/dist/esm/components/Input/RoutePicker/index.js +2 -2
  33. package/dist/esm/components/Input/SourceWalletPicker.js +7 -5
  34. package/dist/esm/components/Menu/index.js +2 -2
  35. package/dist/esm/components/Modal/vaulModal.js +11 -16
  36. package/dist/esm/components/Pages/Campaigns/Details/Leaderboard.js +2 -2
  37. package/dist/esm/components/Pages/Campaigns/Details/Rewards.js +2 -2
  38. package/dist/esm/components/Pages/Campaigns/Details/index.js +2 -3
  39. package/dist/esm/components/Pages/Campaigns/index.js +3 -4
  40. package/dist/esm/components/Pages/Swap/Form/ExchangeForm.js +21 -19
  41. package/dist/esm/components/Pages/Swap/Form/FeeDetails/Rate.js +5 -4
  42. package/dist/esm/components/Pages/Swap/Form/FeeDetails/Refuel.js +8 -6
  43. package/dist/esm/components/Pages/Swap/Form/FeeDetails/Slippage.js +6 -1
  44. package/dist/esm/components/Pages/Swap/Form/FeeDetails/SwapQuote/DetailedEstimates.js +51 -14
  45. package/dist/esm/components/Pages/Swap/Form/FeeDetails/SwapQuote/SummaryRow.js +2 -2
  46. package/dist/esm/components/Pages/Swap/Form/FeeDetails/SwapQuote/index.js +4 -4
  47. package/dist/esm/components/Pages/Swap/Form/FeeDetails/index.js +8 -9
  48. package/dist/esm/components/Pages/Swap/Form/Form.js +27 -3
  49. package/dist/esm/components/Pages/Swap/Form/FormWrapper.js +8 -14
  50. package/dist/esm/components/Pages/Swap/Form/NetworkForm.js +11 -13
  51. package/dist/esm/components/Pages/Swap/Form/SecondaryComponents/ReserveGasNote.js +8 -6
  52. package/dist/esm/components/Pages/Swap/Form/SecondaryComponents/validationError/ErrorDisplay.js +1 -1
  53. package/dist/esm/components/Pages/Swap/Withdraw/Failed.js +12 -8
  54. package/dist/esm/components/Pages/Swap/Withdraw/ManualWithdraw.js +29 -10
  55. package/dist/esm/components/Pages/Swap/Withdraw/NotFound.js +15 -4
  56. package/dist/esm/components/Pages/Swap/Withdraw/Processing/Processing.js +36 -41
  57. package/dist/esm/components/Pages/Swap/Withdraw/Summary/Summary.js +3 -3
  58. package/dist/esm/components/Pages/Swap/Withdraw/Summary/index.js +3 -3
  59. package/dist/esm/components/Pages/Swap/Withdraw/SwapDetails.js +9 -7
  60. package/dist/esm/components/Pages/Swap/Withdraw/Wallet/Common/actionMessage.js +43 -0
  61. package/dist/esm/components/Pages/Swap/Withdraw/Wallet/Common/buttons.js +118 -71
  62. package/dist/esm/components/Pages/Swap/Withdraw/Wallet/index.js +56 -65
  63. package/dist/esm/components/Pages/Swap/Withdraw/WalletTransferButton.js +2 -2
  64. package/dist/esm/components/Pages/Swap/Withdraw/WalletTransferContent.js +2 -2
  65. package/dist/esm/components/Pages/Swap/Withdraw/Withdraw.js +3 -3
  66. package/dist/esm/components/Pages/Swap/Withdraw/index.js +5 -4
  67. package/dist/esm/components/Pages/Swap/Withdraw/messages/TransactionMessages.js +14 -15
  68. package/dist/esm/components/Pages/SwapHistory/History.js +2 -2
  69. package/dist/esm/components/Pages/SwapHistory/SwapDetailsComponent.js +4 -1
  70. package/dist/esm/components/Pages/SwapHistory/index.js +6 -6
  71. package/dist/esm/components/Wallet/WalletComponents/ConnectedWallets.js +1 -1
  72. package/dist/esm/components/Wallet/WalletComponents/WalletsList.js +4 -3
  73. package/dist/esm/components/Wallet/WalletModal/Connector.js +2 -2
  74. package/dist/esm/components/Wallet/WalletModal/ConnectorsList.js +49 -24
  75. package/dist/esm/components/Wallet/WalletModal/index.js +3 -1
  76. package/dist/esm/components/Wallet/WalletProviders/index.js +4 -2
  77. package/dist/esm/components/Widget/Content.js +2 -2
  78. package/dist/esm/components/Widget/Footer.js +1 -1
  79. package/dist/esm/components/Widget/Index.js +2 -3
  80. package/dist/esm/components/WidgetLoading.js +9 -2
  81. package/dist/esm/components/utils/RoundDecimals.js +4 -2
  82. package/dist/esm/context/ErrorProvider.js +14 -0
  83. package/dist/esm/context/LayerswapProvider.js +6 -5
  84. package/dist/esm/context/asyncModal.js +1 -1
  85. package/dist/esm/context/callbackProvider.js +54 -60
  86. package/dist/esm/context/resolverContext.js +7 -2
  87. package/dist/esm/context/swap.js +13 -18
  88. package/dist/esm/context/{balanceAccounts.js → swapAccounts.js} +17 -17
  89. package/dist/esm/context/validationContext.js +1 -1
  90. package/dist/esm/context/walletProviders.js +7 -1
  91. package/dist/esm/context/withdrawalContext.js +2 -2
  92. package/dist/esm/exports/internal.js +4 -3
  93. package/dist/esm/helpers/filterSourceNetworks.js +23 -0
  94. package/dist/esm/helpers/getSettings/getSettings.js +18 -13
  95. package/dist/esm/helpers/routes.js +4 -1
  96. package/dist/esm/hooks/useAllWithdrawalBalances.js +6 -5
  97. package/dist/esm/hooks/useFormRoutes.js +16 -8
  98. package/dist/esm/hooks/useFormValidation.js +11 -6
  99. package/dist/esm/hooks/useRouteValidation.js +1 -1
  100. package/dist/esm/hooks/useSwrSwaps.js +1 -1
  101. package/dist/esm/hooks/useTransfer.js +9 -0
  102. package/dist/esm/hooks/useWallet.js +7 -7
  103. package/dist/esm/lib/AppSettings.js +28 -17
  104. package/dist/esm/lib/ErrorHandler.js +6 -0
  105. package/dist/esm/lib/NetworkSettings.js +0 -16
  106. package/dist/esm/lib/apiClients/layerSwapApiClient.js +12 -35
  107. package/dist/esm/lib/axiosInterceptor.js +2 -2
  108. package/dist/esm/lib/balances/balanceResolver.js +9 -13
  109. package/dist/esm/lib/fees.js +50 -0
  110. package/dist/esm/lib/resolvers/resolverService.js +10 -1
  111. package/dist/esm/lib/transfers/index.js +1 -0
  112. package/dist/esm/lib/transfers/transferResolver.js +14 -0
  113. package/dist/esm/stores/balanceStore.js +1 -2
  114. package/dist/esm/stores/logStore.js +11 -0
  115. package/dist/esm/types/balance.js +8 -9
  116. package/dist/esm/types/index.js +1 -0
  117. package/dist/esm/types/logEvents.js +1 -0
  118. package/dist/index.css +2 -2
  119. package/dist/tsconfig.tsbuildinfo +1 -1
  120. package/dist/types/Models/Balance.d.ts +1 -1
  121. package/dist/types/Models/LayerSwapSettings.d.ts +7 -0
  122. package/dist/types/Models/LayerSwapSettings.d.ts.map +1 -1
  123. package/dist/types/Models/Theme.d.ts +0 -3
  124. package/dist/types/Models/Theme.d.ts.map +1 -1
  125. package/dist/types/components/Buttons/copyButton.d.ts +3 -1
  126. package/dist/types/components/Buttons/copyButton.d.ts.map +1 -1
  127. package/dist/types/components/Buttons/submitButton.d.ts +1 -1
  128. package/dist/types/components/Buttons/submitButton.d.ts.map +1 -1
  129. package/dist/types/components/ColorSchema.d.ts.map +1 -1
  130. package/dist/types/components/Common/ConnectWalletButton.d.ts +1 -1
  131. package/dist/types/components/Common/ConnectWalletButton.d.ts.map +1 -1
  132. package/dist/types/components/Common/CountDownTimer.d.ts.map +1 -1
  133. package/dist/types/components/Common/WarningMessage.d.ts.map +1 -1
  134. package/dist/types/components/Common/guideLink.d.ts.map +1 -1
  135. package/dist/types/components/ErrorFallback.d.ts.map +1 -1
  136. package/dist/types/components/HeaderWithMenu.d.ts.map +1 -1
  137. package/dist/types/components/Icons/Wallets/Xverse.d.ts +4 -0
  138. package/dist/types/components/Icons/Wallets/Xverse.d.ts.map +1 -0
  139. package/dist/types/components/Icons/Wallets/index.d.ts +1 -0
  140. package/dist/types/components/Icons/Wallets/index.d.ts.map +1 -1
  141. package/dist/types/components/Input/Address/AddressNote.d.ts +2 -2
  142. package/dist/types/components/Input/Address/AddressPicker/AddressBook.d.ts +3 -3
  143. package/dist/types/components/Input/Address/AddressPicker/AddressButton.d.ts +3 -3
  144. package/dist/types/components/Input/Address/AddressPicker/AddressWithIcon.d.ts +2 -2
  145. package/dist/types/components/Input/Address/AddressPicker/ConnectedWallets.d.ts +2 -2
  146. package/dist/types/components/Input/Address/AddressPicker/ManualAddressInput.d.ts +4 -4
  147. package/dist/types/components/Input/Address/AddressPicker/index.d.ts +4 -4
  148. package/dist/types/components/Input/Address/AddressPicker/index.d.ts.map +1 -1
  149. package/dist/types/components/Input/Address/index.d.ts +1 -1
  150. package/dist/types/components/Input/Amount/Balance.d.ts +1 -1
  151. package/dist/types/components/Input/Amount/Balance.d.ts.map +1 -1
  152. package/dist/types/components/Input/Amount/ExchangeReceiveAmount.d.ts +11 -0
  153. package/dist/types/components/Input/Amount/ExchangeReceiveAmount.d.ts.map +1 -0
  154. package/dist/types/components/Input/Amount/MinMax.d.ts +1 -1
  155. package/dist/types/components/Input/Amount/PriceImpact.d.ts +2 -6
  156. package/dist/types/components/Input/Amount/PriceImpact.d.ts.map +1 -1
  157. package/dist/types/components/Input/Amount/ReceiveAmount.d.ts +2 -3
  158. package/dist/types/components/Input/Amount/ReceiveAmount.d.ts.map +1 -1
  159. package/dist/types/components/Input/Amount/helpers.d.ts +2 -2
  160. package/dist/types/components/Input/Amount/index.d.ts +1 -1
  161. package/dist/types/components/Input/CexPicker.d.ts +1 -1
  162. package/dist/types/components/Input/DestinationPicker.d.ts +1 -1
  163. package/dist/types/components/Input/DestinationPicker.d.ts.map +1 -1
  164. package/dist/types/components/Input/NumericInput.d.ts.map +1 -1
  165. package/dist/types/components/Input/RoutePicker/Content.d.ts +5 -5
  166. package/dist/types/components/Input/RoutePicker/Content.d.ts.map +1 -1
  167. package/dist/types/components/Input/RoutePicker/RouterPickerWalletConnect.d.ts +1 -1
  168. package/dist/types/components/Input/RoutePicker/Routes.d.ts +4 -8
  169. package/dist/types/components/Input/RoutePicker/Routes.d.ts.map +1 -1
  170. package/dist/types/components/Input/RoutePicker/Rows/CollapsableHeader.d.ts +3 -4
  171. package/dist/types/components/Input/RoutePicker/Rows/CollapsableHeader.d.ts.map +1 -1
  172. package/dist/types/components/Input/RoutePicker/Rows/CollapsibleRow.d.ts +6 -5
  173. package/dist/types/components/Input/RoutePicker/Rows/CollapsibleRow.d.ts.map +1 -1
  174. package/dist/types/components/Input/RoutePicker/Rows/StickyHeader.d.ts +3 -4
  175. package/dist/types/components/Input/RoutePicker/Rows/StickyHeader.d.ts.map +1 -1
  176. package/dist/types/components/Input/RoutePicker/Rows/SuggestionsHeader.d.ts +7 -0
  177. package/dist/types/components/Input/RoutePicker/Rows/SuggestionsHeader.d.ts.map +1 -0
  178. package/dist/types/components/Input/RoutePicker/Rows/TitleRow.d.ts +7 -0
  179. package/dist/types/components/Input/RoutePicker/Rows/TitleRow.d.ts.map +1 -0
  180. package/dist/types/components/Input/RoutePicker/Rows/index.d.ts +5 -5
  181. package/dist/types/components/Input/RoutePicker/Rows/index.d.ts.map +1 -1
  182. package/dist/types/components/Input/RoutePicker/index.d.ts +1 -1
  183. package/dist/types/components/Input/RoutePicker/index.d.ts.map +1 -1
  184. package/dist/types/components/Input/SourcePicker.d.ts +1 -1
  185. package/dist/types/components/Input/SourceWalletPicker.d.ts.map +1 -1
  186. package/dist/types/components/Modal/vaulModal.d.ts.map +1 -1
  187. package/dist/types/components/Pages/Campaigns/Details/Leaderboard.d.ts +1 -1
  188. package/dist/types/components/Pages/Campaigns/Details/Rewards.d.ts +1 -1
  189. package/dist/types/components/Pages/Campaigns/Details/index.d.ts +1 -2
  190. package/dist/types/components/Pages/Campaigns/Details/index.d.ts.map +1 -1
  191. package/dist/types/components/Pages/Campaigns/index.d.ts +2 -3
  192. package/dist/types/components/Pages/Campaigns/index.d.ts.map +1 -1
  193. package/dist/types/components/Pages/Swap/Form/ExchangeForm.d.ts +3 -1
  194. package/dist/types/components/Pages/Swap/Form/ExchangeForm.d.ts.map +1 -1
  195. package/dist/types/components/Pages/Swap/Form/FeeDetails/Rate.d.ts +7 -6
  196. package/dist/types/components/Pages/Swap/Form/FeeDetails/Rate.d.ts.map +1 -1
  197. package/dist/types/components/Pages/Swap/Form/FeeDetails/ReceiveAmounts.d.ts +2 -2
  198. package/dist/types/components/Pages/Swap/Form/FeeDetails/Refuel.d.ts +1 -1
  199. package/dist/types/components/Pages/Swap/Form/FeeDetails/Refuel.d.ts.map +1 -1
  200. package/dist/types/components/Pages/Swap/Form/FeeDetails/RefuelModal.d.ts +1 -1
  201. package/dist/types/components/Pages/Swap/Form/FeeDetails/Slippage.d.ts +1 -1
  202. package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/DetailedEstimates.d.ts +3 -2
  203. package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/DetailedEstimates.d.ts.map +1 -1
  204. package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/SummaryRow.d.ts +4 -4
  205. package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/index.d.ts +4 -4
  206. package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/index.d.ts.map +1 -1
  207. package/dist/types/components/Pages/Swap/Form/FeeDetails/SwapQuote/utils.d.ts +2 -2
  208. package/dist/types/components/Pages/Swap/Form/FeeDetails/index.d.ts +7 -4
  209. package/dist/types/components/Pages/Swap/Form/FeeDetails/index.d.ts.map +1 -1
  210. package/dist/types/components/Pages/Swap/Form/Form.d.ts.map +1 -1
  211. package/dist/types/components/Pages/Swap/Form/FormWrapper.d.ts +1 -1
  212. package/dist/types/components/Pages/Swap/Form/FormWrapper.d.ts.map +1 -1
  213. package/dist/types/components/Pages/Swap/Form/NetworkForm.d.ts +1 -1
  214. package/dist/types/components/Pages/Swap/Form/NetworkForm.d.ts.map +1 -1
  215. package/dist/types/components/Pages/Swap/Form/SecondaryComponents/FormButton.d.ts +1 -1
  216. package/dist/types/components/Pages/Swap/Form/SecondaryComponents/ReserveGasNote.d.ts +2 -2
  217. package/dist/types/components/Pages/Swap/Form/SecondaryComponents/ReserveGasNote.d.ts.map +1 -1
  218. package/dist/types/components/Pages/Swap/Form/SecondaryComponents/validationError/ErrorDisplay.d.ts +1 -1
  219. package/dist/types/components/Pages/Swap/Form/SwapFormValues.d.ts +2 -2
  220. package/dist/types/components/Pages/Swap/Withdraw/Failed.d.ts.map +1 -1
  221. package/dist/types/components/Pages/Swap/Withdraw/ManualWithdraw.d.ts +4 -3
  222. package/dist/types/components/Pages/Swap/Withdraw/ManualWithdraw.d.ts.map +1 -1
  223. package/dist/types/components/Pages/Swap/Withdraw/NotFound.d.ts.map +1 -1
  224. package/dist/types/components/Pages/Swap/Withdraw/Processing/Processing.d.ts +1 -1
  225. package/dist/types/components/Pages/Swap/Withdraw/Processing/Processing.d.ts.map +1 -1
  226. package/dist/types/components/Pages/Swap/Withdraw/QuoteUpdate.d.ts +1 -1
  227. package/dist/types/components/Pages/Swap/Withdraw/Summary/Summary.d.ts +1 -1
  228. package/dist/types/components/Pages/Swap/Withdraw/SwapDetails.d.ts +2 -1
  229. package/dist/types/components/Pages/Swap/Withdraw/SwapDetails.d.ts.map +1 -1
  230. package/dist/types/components/Pages/Swap/Withdraw/SwapQuoteDetails.d.ts +3 -3
  231. package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/actionMessage.d.ts +6 -0
  232. package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/actionMessage.d.ts.map +1 -0
  233. package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/buttons.d.ts +4 -3
  234. package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/buttons.d.ts.map +1 -1
  235. package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/sharedTypes.d.ts +2 -1
  236. package/dist/types/components/Pages/Swap/Withdraw/Wallet/Common/sharedTypes.d.ts.map +1 -1
  237. package/dist/types/components/Pages/Swap/Withdraw/Wallet/index.d.ts +2 -1
  238. package/dist/types/components/Pages/Swap/Withdraw/Wallet/index.d.ts.map +1 -1
  239. package/dist/types/components/Pages/Swap/Withdraw/WalletTransferButton.d.ts +2 -1
  240. package/dist/types/components/Pages/Swap/Withdraw/WalletTransferButton.d.ts.map +1 -1
  241. package/dist/types/components/Pages/Swap/Withdraw/WalletTransferContent.d.ts +1 -1
  242. package/dist/types/components/Pages/Swap/Withdraw/Withdraw.d.ts +2 -1
  243. package/dist/types/components/Pages/Swap/Withdraw/Withdraw.d.ts.map +1 -1
  244. package/dist/types/components/Pages/Swap/Withdraw/index.d.ts +1 -2
  245. package/dist/types/components/Pages/Swap/Withdraw/index.d.ts.map +1 -1
  246. package/dist/types/components/Pages/Swap/Withdraw/messages/TransactionMessages.d.ts +3 -4
  247. package/dist/types/components/Pages/Swap/Withdraw/messages/TransactionMessages.d.ts.map +1 -1
  248. package/dist/types/components/Pages/SwapHistory/HistorySummary.d.ts +2 -2
  249. package/dist/types/components/Pages/SwapHistory/StatusIcons.d.ts +1 -1
  250. package/dist/types/components/Pages/SwapHistory/SwapDetailsComponent.d.ts +1 -1
  251. package/dist/types/components/Pages/SwapHistory/SwapDetailsComponent.d.ts.map +1 -1
  252. package/dist/types/components/Pages/SwapHistory/index.d.ts +3 -1
  253. package/dist/types/components/Pages/SwapHistory/index.d.ts.map +1 -1
  254. package/dist/types/components/Wallet/WalletComponents/WalletsList.d.ts +3 -3
  255. package/dist/types/components/Wallet/WalletComponents/WalletsList.d.ts.map +1 -1
  256. package/dist/types/components/Wallet/WalletModal/Connector.d.ts +2 -1
  257. package/dist/types/components/Wallet/WalletModal/Connector.d.ts.map +1 -1
  258. package/dist/types/components/Wallet/WalletModal/ConnectorsList.d.ts +1 -1
  259. package/dist/types/components/Wallet/WalletModal/ConnectorsList.d.ts.map +1 -1
  260. package/dist/types/components/Wallet/WalletModal/index.d.ts +1 -1
  261. package/dist/types/components/Wallet/WalletModal/index.d.ts.map +1 -1
  262. package/dist/types/components/Wallet/WalletProviders/index.d.ts +3 -1
  263. package/dist/types/components/Wallet/WalletProviders/index.d.ts.map +1 -1
  264. package/dist/types/components/Widget/Content.d.ts +2 -1
  265. package/dist/types/components/Widget/Content.d.ts.map +1 -1
  266. package/dist/types/components/Widget/Footer.d.ts +2 -1
  267. package/dist/types/components/Widget/Footer.d.ts.map +1 -1
  268. package/dist/types/components/Widget/Index.d.ts +3 -2
  269. package/dist/types/components/Widget/Index.d.ts.map +1 -1
  270. package/dist/types/components/WidgetLoading.d.ts.map +1 -1
  271. package/dist/types/components/shadcn/command.d.ts +9 -52
  272. package/dist/types/components/shadcn/command.d.ts.map +1 -1
  273. package/dist/types/components/utils/RoundDecimals.d.ts.map +1 -1
  274. package/dist/types/context/ErrorProvider.d.ts +3 -0
  275. package/dist/types/context/ErrorProvider.d.ts.map +1 -0
  276. package/dist/types/context/LayerswapProvider.d.ts +22 -4
  277. package/dist/types/context/LayerswapProvider.d.ts.map +1 -1
  278. package/dist/types/context/callbackProvider.d.ts +6 -12
  279. package/dist/types/context/callbackProvider.d.ts.map +1 -1
  280. package/dist/types/context/resolverContext.d.ts.map +1 -1
  281. package/dist/types/context/swap.d.ts +7 -7
  282. package/dist/types/context/swap.d.ts.map +1 -1
  283. package/dist/types/context/{balanceAccounts.d.ts → swapAccounts.d.ts} +9 -9
  284. package/dist/types/context/swapAccounts.d.ts.map +1 -0
  285. package/dist/types/context/validationContext.d.ts +1 -0
  286. package/dist/types/context/validationContext.d.ts.map +1 -1
  287. package/dist/types/context/walletProviders.d.ts.map +1 -1
  288. package/dist/types/context/withdrawalContext.d.ts +2 -0
  289. package/dist/types/context/withdrawalContext.d.ts.map +1 -1
  290. package/dist/types/exports/internal.d.ts +9 -7
  291. package/dist/types/exports/internal.d.ts.map +1 -1
  292. package/dist/types/helpers/accountSelectHelper.d.ts +1 -1
  293. package/dist/types/helpers/balanceHelper.d.ts +2 -2
  294. package/dist/types/helpers/filterSourceNetworks.d.ts +4 -0
  295. package/dist/types/helpers/filterSourceNetworks.d.ts.map +1 -0
  296. package/dist/types/helpers/getSettings/getSettings.d.ts +1 -1
  297. package/dist/types/helpers/getSettings/getSettings.d.ts.map +1 -1
  298. package/dist/types/helpers/routes.d.ts +1 -1
  299. package/dist/types/helpers/routes.d.ts.map +1 -1
  300. package/dist/types/helpers/tokenHelper.d.ts +2 -2
  301. package/dist/types/hooks/useAllWithdrawalBalances.d.ts +2 -1
  302. package/dist/types/hooks/useAllWithdrawalBalances.d.ts.map +1 -1
  303. package/dist/types/hooks/useFee.d.ts +1 -1
  304. package/dist/types/hooks/useFormRoutes.d.ts +2 -3
  305. package/dist/types/hooks/useFormRoutes.d.ts.map +1 -1
  306. package/dist/types/hooks/useFormValidation.d.ts +10 -1
  307. package/dist/types/hooks/useFormValidation.d.ts.map +1 -1
  308. package/dist/types/hooks/useSwapHistoryData.d.ts +2 -2
  309. package/dist/types/hooks/useTransfer.d.ts +5 -0
  310. package/dist/types/hooks/useTransfer.d.ts.map +1 -0
  311. package/dist/types/hooks/useWallet.d.ts +3 -3
  312. package/dist/types/hooks/useWallet.d.ts.map +1 -1
  313. package/dist/types/lib/AppSettings.d.ts +25 -16
  314. package/dist/types/lib/AppSettings.d.ts.map +1 -1
  315. package/dist/types/lib/ErrorHandler.d.ts +3 -0
  316. package/dist/types/lib/ErrorHandler.d.ts.map +1 -0
  317. package/dist/types/lib/NetworkSettings.d.ts +0 -1
  318. package/dist/types/lib/NetworkSettings.d.ts.map +1 -1
  319. package/dist/types/lib/apiClients/layerSwapApiClient.d.ts +2 -10
  320. package/dist/types/lib/apiClients/layerSwapApiClient.d.ts.map +1 -1
  321. package/dist/types/lib/balances/balanceResolver.d.ts +3 -3
  322. package/dist/types/lib/balances/balanceResolver.d.ts.map +1 -1
  323. package/dist/types/lib/balances/helpers.d.ts +1 -1
  324. package/dist/types/lib/balances/useBalance.d.ts +1 -1
  325. package/dist/types/lib/fees.d.ts +16 -0
  326. package/dist/types/lib/fees.d.ts.map +1 -1
  327. package/dist/types/lib/gases/gasResolver.d.ts +2 -2
  328. package/dist/types/lib/gases/useSWRGas.d.ts +3 -3
  329. package/dist/types/lib/generateSwapInitialValues.d.ts +1 -1
  330. package/dist/types/lib/nft/nftBalanceResolver.d.ts +1 -1
  331. package/dist/types/lib/resolvers/resolverService.d.ts +8 -5
  332. package/dist/types/lib/resolvers/resolverService.d.ts.map +1 -1
  333. package/dist/types/lib/sorting.d.ts +1 -1
  334. package/dist/types/lib/transfers/index.d.ts +2 -0
  335. package/dist/types/lib/transfers/index.d.ts.map +1 -0
  336. package/dist/types/lib/transfers/transferResolver.d.ts +7 -0
  337. package/dist/types/lib/transfers/transferResolver.d.ts.map +1 -0
  338. package/dist/types/stores/balanceStore.d.ts.map +1 -1
  339. package/dist/types/stores/logStore.d.ts +8 -0
  340. package/dist/types/stores/logStore.d.ts.map +1 -0
  341. package/dist/types/stores/walletStore.d.ts +1 -1
  342. package/dist/types/types/balance.d.ts +2 -2
  343. package/dist/types/types/balance.d.ts.map +1 -1
  344. package/dist/types/types/gas.d.ts +2 -2
  345. package/dist/types/types/index.d.ts +1 -0
  346. package/dist/types/types/index.d.ts.map +1 -1
  347. package/dist/types/types/logEvents.d.ts +41 -0
  348. package/dist/types/types/logEvents.d.ts.map +1 -0
  349. package/dist/types/types/nft.d.ts +1 -1
  350. package/dist/types/types/transfer.d.ts +7 -2
  351. package/dist/types/types/transfer.d.ts.map +1 -1
  352. package/dist/types/types/wallet.d.ts +25 -6
  353. package/dist/types/types/wallet.d.ts.map +1 -1
  354. package/package.json +3 -3
  355. package/dist/esm/helpers/querryHelper.js +0 -13
  356. package/dist/esm/lib/logError.js +0 -17
  357. package/dist/types/context/balanceAccounts.d.ts.map +0 -1
  358. package/dist/types/helpers/querryHelper.d.ts +0 -3
  359. package/dist/types/helpers/querryHelper.d.ts.map +0 -1
  360. package/dist/types/lib/logError.d.ts +0 -3
  361. package/dist/types/lib/logError.d.ts.map +0 -1
@@ -7,12 +7,11 @@ import useWallet from '../hooks/useWallet';
7
7
  import { useSettingsState } from './settings';
8
8
  import { transformSwapDataToQuoteArgs, useQuoteData } from '../hooks/useFee';
9
9
  import { useRecentNetworksStore } from '../stores/recentRoutesStore';
10
- import { useSelectedAccount } from './balanceAccounts';
11
- import { useSwapIdChangeCallback } from './callbackProvider';
10
+ import { useSelectedAccount } from './swapAccounts';
12
11
  import { useInitialSettings } from './settings';
13
12
  import { addressFormat } from '../lib/address/formatter';
14
13
  import { useSlippageStore } from '../stores/slippageStore';
15
- // import { posthog } from 'posthog-js';
14
+ import { useCallbacks } from './callbackProvider';
16
15
  export const SwapDataStateContext = createContext({
17
16
  depositAddressIsFromAccount: false,
18
17
  withdrawType: undefined,
@@ -32,24 +31,23 @@ export const SwapDataStateContext = createContext({
32
31
  });
33
32
  export const SwapDataUpdateContext = createContext(null);
34
33
  export function SwapDataProvider({ children }) {
34
+ const { sourceRoutes, destinationRoutes } = useSettingsState();
35
+ const initialSettings = useInitialSettings();
36
+ const { onSwapCreate } = useCallbacks();
37
+ const updateRecentTokens = useRecentNetworksStore(state => state.updateRecentNetworks);
38
+ const [swapBasicFormData, setSwapBasicFormData] = useState();
39
+ const { providers } = useWallet(swapBasicFormData?.source_network, 'asSource');
35
40
  const [quoteIsLoading, setQuoteLoading] = useState(false);
36
41
  const [withdrawType, setWithdrawType] = useState();
37
42
  const [depositAddressIsFromAccount, setDepositAddressIsFromAccount] = useState();
38
- const initialSettings = useInitialSettings();
39
43
  const [swapId, setSwapId] = useState(initialSettings.swapId?.toString());
40
44
  const [swapTransaction, setSwapTransaction] = useState();
41
- const { sourceRoutes, destinationRoutes } = useSettingsState();
42
- const [swapBasicFormData, setSwapBasicFormData] = useState();
43
- const updateRecentTokens = useRecentNetworksStore(state => state.updateRecentNetworks);
44
45
  const [swapModalOpen, setSwapModalOpen] = useState(false);
45
46
  const [swapError, setSwapError] = useState('');
46
- const { providers } = useWallet(swapBasicFormData?.source_network, 'asSource');
47
47
  const quoteArgs = useMemo(() => transformSwapDataToQuoteArgs(swapBasicFormData, !!swapBasicFormData?.refuel), [swapBasicFormData]);
48
48
  const { quote: formDataQuote, quoteError: formDataQuoteError } = useQuoteData(quoteArgs, swapId ? 0 : undefined);
49
- const triggerSwapIdChangeCallback = useSwapIdChangeCallback();
50
49
  const handleUpdateSwapid = (value) => {
51
50
  setSwapId(value);
52
- triggerSwapIdChangeCallback(value);
53
51
  };
54
52
  const setSubmitedFormValues = useCallback((values) => {
55
53
  if (!values.from || !values.to || !values.fromAsset || !values.toAsset || !values.amount || !values.destination_address)
@@ -59,7 +57,7 @@ export function SwapDataProvider({ children }) {
59
57
  destination_network: values.to,
60
58
  source_token: values.fromAsset,
61
59
  destination_token: values.toAsset,
62
- requested_amount: Number(values.amount),
60
+ requested_amount: values.amount,
63
61
  destination_address: values.destination_address,
64
62
  use_deposit_address: values.depositMethod === 'deposit_address',
65
63
  refuel: !!values.refuel,
@@ -74,6 +72,7 @@ export function SwapDataProvider({ children }) {
74
72
  if (swapId && data?.data) {
75
73
  return data?.data?.swap ? {
76
74
  ...data.data.swap,
75
+ requested_amount: data.data.swap.requested_amount.toString(),
77
76
  refuel: !!data.data.refuel
78
77
  } : undefined;
79
78
  }
@@ -96,7 +95,7 @@ export function SwapDataProvider({ children }) {
96
95
  return formDataQuoteError;
97
96
  }, [formDataQuoteError, data, swapId]);
98
97
  const refuel = useMemo(() => {
99
- if (swapId) {
98
+ if (swapId && data?.data) {
100
99
  return data?.data?.refuel;
101
100
  }
102
101
  return formDataQuote?.refuel;
@@ -171,17 +170,13 @@ export function SwapDataProvider({ children }) {
171
170
  const swap = swapResponse?.data;
172
171
  if (!swap?.swap.id)
173
172
  throw new Error("Could not create swap");
173
+ onSwapCreate(swap);
174
174
  updateRecentTokens({
175
175
  from: !fromExchange ? { network: from.name, token: fromCurrency.symbol } : undefined,
176
176
  to: { network: to.name, token: toCurrency.symbol }
177
177
  });
178
- // posthog.capture('Swap initiated', {
179
- // name: 'Swap initiated',
180
- // swapId: swapDetails?.id ?? null,
181
- // path: typeof window !== 'undefined' ? window.location.pathname : undefined,
182
- // });
183
178
  return swap;
184
- }, [selectedSourceAccount, formDataQuote]);
179
+ }, [selectedSourceAccount, formDataQuote, onSwapCreate]);
185
180
  const updateFns = {
186
181
  createSwap,
187
182
  setInterval,
@@ -3,9 +3,9 @@ import { createContext, useCallback, useContext, useMemo, useState } from 'react
3
3
  import useWallet from '../hooks/useWallet';
4
4
  import AddressIcon from '../components/Common/AddressIcon';
5
5
  import { getKey, useBalanceStore } from '../stores/balanceStore';
6
- const BalanceAccountsStateContext = createContext(null);
7
- const BalanceAccountsUpdateContext = createContext(null);
8
- export function BalanceAccountsProvider({ children }) {
6
+ const SwapAccountsStateContext = createContext(null);
7
+ const SwapAccountsUpdateContext = createContext(null);
8
+ export function SwapAccountsProvider({ children }) {
9
9
  const [selectedDestAccounts, setSelectedDestinationAccounts] = useState([]);
10
10
  const [selectedSourceAccounts, setSelectedSourceAccounts] = useState([]);
11
11
  const { providers } = useWallet();
@@ -17,7 +17,7 @@ export function BalanceAccountsProvider({ children }) {
17
17
  const wallet = selectedWallet || provider.activeWallet;
18
18
  const selectedAccountAddress = selectedWallet ? selectedSourceAccounts.find(acc => acc.providerName === provider.name && acc.id === selectedWallet.id)?.address : undefined;
19
19
  const address = selectedAccountAddress ? selectedAccountAddress : wallet.address;
20
- const res = ResolveWalletBalanceAccount(provider, wallet, address);
20
+ const res = ResolveWalletSwapAccount(provider, wallet, address);
21
21
  if (!selectedAccountAddress) {
22
22
  setSelectedSourceAccounts(prev => {
23
23
  const existingAccountIndex = prev.findIndex(acc => acc.providerName === res.providerName);
@@ -36,7 +36,7 @@ export function BalanceAccountsProvider({ children }) {
36
36
  return providers.map(provider => {
37
37
  const manuallyAdded = selectedDestAccounts.find(acc => acc.providerName === provider.name && acc.id === 'manually_added');
38
38
  if (manuallyAdded) {
39
- return ResolveManualBalanceAccount(provider, manuallyAdded.address);
39
+ return ResolveManualSwapAccount(provider, manuallyAdded.address);
40
40
  }
41
41
  if (!hasWallet(provider))
42
42
  return null;
@@ -44,7 +44,7 @@ export function BalanceAccountsProvider({ children }) {
44
44
  const wallet = selectedWallet || provider.activeWallet;
45
45
  const selectedAccountAddress = selectedWallet ? selectedDestAccounts.find(acc => acc.providerName === provider.name && acc.id === selectedWallet.id)?.address : undefined;
46
46
  const address = selectedAccountAddress ? selectedAccountAddress : wallet.address;
47
- return ResolveWalletBalanceAccount(provider, wallet, address);
47
+ return ResolveWalletSwapAccount(provider, wallet, address);
48
48
  }).filter(Boolean);
49
49
  }, [providers, selectedDestAccounts]);
50
50
  const selectDestinationAccount = useCallback((account) => {
@@ -81,21 +81,21 @@ export function BalanceAccountsProvider({ children }) {
81
81
  selectDestinationAccount,
82
82
  selectSourceAccount,
83
83
  }), [sourceAccounts, destinationAccounts, selectSourceAccount, selectDestinationAccount]);
84
- return (_jsx(BalanceAccountsStateContext.Provider, { value: stateValues, children: _jsx(BalanceAccountsUpdateContext.Provider, { value: update, children: children }) }));
84
+ return (_jsx(SwapAccountsStateContext.Provider, { value: stateValues, children: _jsx(SwapAccountsUpdateContext.Provider, { value: update, children: children }) }));
85
85
  }
86
- export function useBalanceAccounts(direction) {
87
- const values = useContext(BalanceAccountsStateContext);
86
+ export function useSwapAccounts(direction) {
87
+ const values = useContext(SwapAccountsStateContext);
88
88
  if (values === undefined) {
89
- throw new Error('useBalanceAccounts must be used within a BalanceAccountsProvider');
89
+ throw new Error('useSwapAccounts must be used within a SwapAccountsProvider');
90
90
  }
91
91
  return direction === "from" ? values.sourceAccounts : values.destinationAccounts;
92
92
  }
93
93
  export function useSelectedAccount(direction, networkName) {
94
- const values = useContext(BalanceAccountsStateContext);
94
+ const values = useContext(SwapAccountsStateContext);
95
95
  if (!networkName)
96
96
  return undefined;
97
97
  if (values === undefined) {
98
- throw new Error('useBalanceAccounts must be used within a BalanceAccountsProvider');
98
+ throw new Error('useSwapAccounts must be used within a SwapAccountsProvider');
99
99
  }
100
100
  return direction === "from" ? values.sourceAccounts.find(acc => acc.provider.withdrawalSupportedNetworks?.some(n => n === networkName))
101
101
  :
@@ -117,17 +117,17 @@ export function useNetworkBalance(direction, networkName) {
117
117
  const balance = useBalanceStore((s) => (s.balances[balanceKey || "unknown"]));
118
118
  return balance;
119
119
  }
120
- export function useUpdateBalanceAccount(direction) {
121
- const values = useContext(BalanceAccountsUpdateContext);
120
+ export function useSelectSwapAccount(direction) {
121
+ const values = useContext(SwapAccountsUpdateContext);
122
122
  if (values === undefined) {
123
- throw new Error('useUpdateBalanceAccount must be used within a BalanceAccountsUpdateContext');
123
+ throw new Error('useSelectSwapAccount must be used within a SwapAccountsUpdateContext');
124
124
  }
125
125
  return direction === "from" ? values.selectSourceAccount : values.selectDestinationAccount;
126
126
  }
127
127
  function hasWallet(p) {
128
128
  return Boolean(p.activeWallet);
129
129
  }
130
- function ResolveWalletBalanceAccount(provider, wallet, address) {
130
+ function ResolveWalletSwapAccount(provider, wallet, address) {
131
131
  return {
132
132
  address,
133
133
  provider,
@@ -141,7 +141,7 @@ function ResolveWalletBalanceAccount(provider, wallet, address) {
141
141
  icon: wallet.icon || ((props) => _jsx(AddressIcon, { address: address, size: 24, ...props })),
142
142
  };
143
143
  }
144
- function ResolveManualBalanceAccount(provider, address) {
144
+ function ResolveManualSwapAccount(provider, address) {
145
145
  return {
146
146
  address,
147
147
  provider,
@@ -6,7 +6,7 @@ import { transformFormValuesToQuoteArgs, useQuoteData } from '../hooks/useFee';
6
6
  import { resolveFormValidation } from '../hooks/useFormValidation';
7
7
  import { resolveRouteValidation } from '../hooks/useRouteValidation';
8
8
  import { useSwapDataState } from './swap';
9
- import { useSelectedAccount } from './balanceAccounts';
9
+ import { useSelectedAccount } from './swapAccounts';
10
10
  const defaultContext = {
11
11
  formValidation: { message: '' },
12
12
  routeValidation: { message: '', details: {} },
@@ -8,10 +8,15 @@ import { ChevronLeft } from "lucide-react";
8
8
  import ConnectorsList from "../components/Wallet/WalletModal/ConnectorsList";
9
9
  import { useConnectModal } from "../components/Wallet/WalletModal";
10
10
  import { isMobile } from "../lib/wallets/utils/isMobile";
11
+ import AppSettings from "../lib/AppSettings";
12
+ import { filterSourceNetworks } from "../helpers/filterSourceNetworks";
13
+ import useWindowDimensions from "../hooks/useWindowDimensions";
11
14
  const WalletProvidersContext = createContext([]);
12
15
  export const WalletProvidersProvider = ({ children, walletProviders }) => {
13
16
  const { networks } = useSettingsState();
17
+ const settings = useSettingsState();
14
18
  const isMobilePlatform = isMobile();
19
+ const { isMobile: isMobileSize } = useWindowDimensions();
15
20
  const { goBack, onFinish, open, setOpen, selectedConnector, selectedMultiChainConnector } = useConnectModal();
16
21
  const allProviders = walletProviders.map(provider => provider.walletConnectionProvider ? provider.walletConnectionProvider({ networks }) : undefined).filter(provider => provider !== undefined);
17
22
  const providers = useMemo(() => {
@@ -19,9 +24,10 @@ export const WalletProvidersProvider = ({ children, walletProviders }) => {
19
24
  networks.some(net => provider.autofillSupportedNetworks?.includes(net.name) ||
20
25
  provider.withdrawalSupportedNetworks?.includes(net.name) ||
21
26
  provider.asSourceSupportedNetworks?.includes(net.name)));
27
+ AppSettings.AvailableSourceNetworkTypes = filterSourceNetworks(settings, filteredProviders);
22
28
  return filteredProviders;
23
29
  }, [networks, isMobilePlatform, allProviders]);
24
30
  return (_jsxs(WalletProvidersContext.Provider, { value: providers, children: [children, _jsx(VaulDrawer, { show: open, setShow: setOpen, onClose: onFinish, modalId: "connectNewWallet", header: _jsxs("div", { className: "flex items-center gap-1", children: [(selectedConnector || selectedMultiChainConnector) &&
25
- _jsx("div", { className: "sm:-ml-2 -ml-0", children: _jsx(IconButton, { onClick: goBack, icon: _jsx(ChevronLeft, { className: "h-6 w-6" }) }) }), _jsx("p", { children: (selectedMultiChainConnector && !selectedConnector) ? "Select ecosystem" : "Connect wallet" })] }), children: _jsx(VaulDrawer.Snap, { id: 'item-1', children: _jsx(ConnectorsList, { onFinish: onFinish }) }) })] }));
31
+ _jsx("div", { className: "sm:-ml-2 ml-0", children: _jsx(IconButton, { onClick: goBack, icon: _jsx(ChevronLeft, { className: "h-6 w-6" }) }) }), _jsx("p", { children: (selectedMultiChainConnector && !selectedConnector) ? "Select ecosystem" : "Connect wallet" })] }), children: _jsx(VaulDrawer.Snap, { openFullHeight: !isMobileSize, id: 'item-1', className: "pb-4 sm:pb-0! sm:h-full", children: _jsx(ConnectorsList, { onFinish: onFinish }) }) })] }));
26
32
  };
27
33
  export const useWalletProviders = () => useContext(WalletProvidersContext);
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from 'react';
3
3
  const WalletWithdrawalContext = React.createContext(null);
4
- export const WithdrawalProvider = ({ onWalletWithdrawalSuccess, children }) => {
5
- return (_jsx(WalletWithdrawalContext.Provider, { value: { onWalletWithdrawalSuccess }, children: children }));
4
+ export const WithdrawalProvider = ({ onWalletWithdrawalSuccess, onCancelWithdrawal, children }) => {
5
+ return (_jsx(WalletWithdrawalContext.Provider, { value: { onWalletWithdrawalSuccess, onCancelWithdrawal }, children: children }));
6
6
  };
7
7
  export function useWalletWithdrawalState() {
8
8
  const data = React.useContext(WalletWithdrawalContext);
@@ -3,8 +3,6 @@ import KnownInternalNames from "../lib/knownIds";
3
3
  export { KnownInternalNames };
4
4
  import NetworkSettings from "../lib/NetworkSettings";
5
5
  export { NetworkSettings };
6
- import logError from "../lib/logError";
7
- export { logError };
8
6
  export { insertIfNotExists } from "../lib/balances/helpers";
9
7
  export * from "../lib/retry";
10
8
  export { fetchWithTimeout } from "../lib/fetchWithTimeout";
@@ -18,11 +16,14 @@ export * from "../components/shadcn";
18
16
  export { default as WalletMessage } from "../components/Pages/Swap/Withdraw/messages/Message";
19
17
  export * from "../components/Buttons";
20
18
  export * from "../components/Pages/Swap/Withdraw/Wallet/Common/buttons";
19
+ export * from "../components/Pages/Swap/Withdraw/Wallet/Common/actionMessage";
21
20
  export { default as ClickTooltip } from "../components/Common/ClickTooltip";
22
- export { useSelectedAccount, useUpdateBalanceAccount, useBalanceAccounts, useNetworkBalance } from "../context/balanceAccounts";
21
+ export { useSelectedAccount, useSelectSwapAccount, useSwapAccounts, useNetworkBalance } from "../context/swapAccounts";
23
22
  export { default as useWallet } from "../hooks/useWallet";
24
23
  export * from "../lib/apiClients";
25
24
  export * from "../lib/formatUnits";
26
25
  export * from "../stores";
27
26
  export { default as shortenAddress } from "../components/utils/ShortenAddress";
28
27
  export * from "../context/swap";
28
+ export { useWalletProvidersList } from "../components/Wallet/WalletProviders";
29
+ export { ErrorHandler } from '../lib/ErrorHandler';
@@ -0,0 +1,23 @@
1
+ export function filterSourceNetworks(settings, walletProviders) {
2
+ const networkTypesAggregation = settings.sourceRoutes?.reduce((acc, route) => {
3
+ if (!acc[route.type]) {
4
+ acc[route.type] = [];
5
+ }
6
+ acc[route.type].push(route);
7
+ return acc;
8
+ }, {}) || {};
9
+ const allNetworkTypes = Object.keys(networkTypesAggregation);
10
+ const availableNetworkTypes = allNetworkTypes.filter(networkType => {
11
+ return networkTypesAggregation[networkType].some(route => route.deposit_methods.includes("deposit_address") ||
12
+ walletProviders.some(provider => provider.withdrawalSupportedNetworks.includes(route.name)));
13
+ });
14
+ if (availableNetworkTypes.length === allNetworkTypes.length) {
15
+ return {
16
+ all: true,
17
+ };
18
+ }
19
+ return {
20
+ all: false,
21
+ networks: availableNetworkTypes
22
+ };
23
+ }
@@ -2,17 +2,22 @@ import LayerSwapApiClient from "../../lib/apiClients/layerSwapApiClient";
2
2
  export async function getSettings(apiKey) {
3
3
  const apiClient = new LayerSwapApiClient();
4
4
  LayerSwapApiClient.apiKey = apiKey;
5
- const { data: networkData } = await apiClient.GetLSNetworksAsync();
6
- const { data: sourceExchangesData } = await apiClient.GetSourceExchangesAsync();
7
- const { data: sourceRoutes } = await apiClient.GetRoutesAsync('sources');
8
- const { data: destinationRoutes } = await apiClient.GetRoutesAsync('destinations');
9
- if (!networkData)
10
- return;
11
- const settings = {
12
- networks: networkData,
13
- sourceExchanges: sourceExchangesData || [],
14
- sourceRoutes: sourceRoutes || [],
15
- destinationRoutes: destinationRoutes || []
16
- };
17
- return settings;
5
+ try {
6
+ const { data: networkData } = await apiClient.GetLSNetworksAsync();
7
+ const { data: sourceExchangesData } = await apiClient.GetSourceExchangesAsync();
8
+ const { data: sourceRoutes } = await apiClient.GetRoutesAsync('sources');
9
+ const { data: destinationRoutes } = await apiClient.GetRoutesAsync('destinations');
10
+ if (!networkData)
11
+ return;
12
+ const settings = {
13
+ networks: networkData,
14
+ sourceExchanges: sourceExchangesData || [],
15
+ sourceRoutes: sourceRoutes || [],
16
+ destinationRoutes: destinationRoutes || []
17
+ };
18
+ return settings;
19
+ }
20
+ catch (error) {
21
+ return null;
22
+ }
18
23
  }
@@ -1,3 +1,4 @@
1
+ import AppSettings from "../lib/AppSettings";
1
2
  export const resolveExchangesURLForSelectedToken = (values) => {
2
3
  const include_unmatched = 'true';
3
4
  const include_swaps = 'false';
@@ -62,7 +63,9 @@ export const resolveRoutesURLForSelectedToken = ({ direction, network, token, in
62
63
  }
63
64
  : {})
64
65
  });
65
- const sourceRoutesURL = `/sources?${params.toString()}`;
66
+ const availableNetworkTypes = AppSettings.AvailableSourceNetworkTypes;
67
+ const networkTypesQuery = availableNetworkTypes?.all ? '' : availableNetworkTypes?.networks?.map(type => `network_types=${type}`).join('&') || '';
68
+ const sourceRoutesURL = `/sources?${params.toString()}${networkTypesQuery ? `&${networkTypesQuery}` : ''}`;
66
69
  const destinationRoutesURL = `/destinations?${params.toString()}`;
67
70
  const result = direction === "from" ? sourceRoutesURL : destinationRoutesURL;
68
71
  return result;
@@ -1,12 +1,12 @@
1
1
  import { useSettingsState } from "../context/settings";
2
2
  import { selectResolvedSortingBalances, useBalanceStore } from "../stores/balanceStore";
3
3
  import { useEffect, useMemo, useRef } from "react";
4
- import { useBalanceAccounts } from "../context/balanceAccounts";
4
+ import { useSwapAccounts } from "../context/swapAccounts";
5
5
  export default function useAllWithdrawalBalances() {
6
6
  const networks = useSettingsState().networks;
7
- const balanceAccounts = useBalanceAccounts("from");
7
+ const swapAccounts = useSwapAccounts("from");
8
8
  const walletNetworks = useMemo(() => {
9
- return balanceAccounts.map(account => {
9
+ return swapAccounts.map(account => {
10
10
  const withdrawalNetworks = account.walletWithdrawalSupportedNetworks;
11
11
  if (!withdrawalNetworks || withdrawalNetworks.length === 0)
12
12
  return [];
@@ -20,7 +20,7 @@ export default function useAllWithdrawalBalances() {
20
20
  };
21
21
  });
22
22
  }).flat().filter(item => item !== null);
23
- }, [balanceAccounts, networks]);
23
+ }, [swapAccounts, networks]);
24
24
  const walletNetwokrsString = useMemo(() => {
25
25
  return walletNetworks.map(item => `${item.address}-${item.network.name}`).join(',');
26
26
  }, [walletNetworks]);
@@ -31,9 +31,10 @@ export default function useAllWithdrawalBalances() {
31
31
  const lastBalancesRef = useRef(null);
32
32
  const resolvedBalances = useBalanceStore(selectResolvedSortingBalances);
33
33
  const isLoading = useBalanceStore(s => s.sortingDataIsLoading);
34
+ const partialPublished = useBalanceStore(s => s.partialPublished);
34
35
  if (resolvedBalances != null && Object.keys(resolvedBalances).length > 0) {
35
36
  lastBalancesRef.current = resolvedBalances;
36
37
  }
37
38
  const result = resolvedBalances === null && isLoading ? lastBalancesRef.current : resolvedBalances;
38
- return useMemo(() => ({ isLoading, balances: result }), [result, isLoading]);
39
+ return useMemo(() => ({ isLoading, balances: result, partialPublished }), [result, isLoading, partialPublished]);
39
40
  }
@@ -19,14 +19,25 @@ export default function useFormRoutes({ direction, values }, search) {
19
19
  });
20
20
  const { lockFrom, from, lockTo, to, lockFromAsset, fromAsset, lockToAsset, toAsset } = useInitialSettings();
21
21
  const groupByToken = useRouteTokenSwitchStore((s) => s.showTokens);
22
- const { balances, isLoading: balancesLoading } = useAllWithdrawalBalances();
22
+ const { balances, partialPublished, isLoading } = useAllWithdrawalBalances();
23
23
  const routesHistory = useRecentNetworksStore(state => state.recentRoutes);
24
+ const loadingSuggestions = useMemo(() => {
25
+ return !partialPublished && isLoading && direction === "from";
26
+ }, [isLoading, direction, partialPublished]);
24
27
  // Apply query-based filtering
25
28
  const filteredRoutes = useMemo(() => {
26
29
  const filtered = filterRoutesByQuery(routes, direction, { lockFrom, from, lockTo, to, lockFromAsset, fromAsset, lockToAsset, toAsset });
27
30
  return filtered;
28
31
  }, [routes, direction, lockFrom, from, lockTo, to, lockFromAsset, fromAsset, lockToAsset, toAsset]);
29
- const routeElements = useMemo(() => groupRoutes(filteredRoutes, direction, balances, groupByToken ? "token" : "network", routesHistory, balancesLoading, search), [balancesLoading, filteredRoutes, balances, direction, search, groupByToken, routesHistory]);
32
+ const routeElements = useMemo(() => groupRoutes({
33
+ routes: filteredRoutes,
34
+ direction,
35
+ balances,
36
+ groupBy: groupByToken ? "token" : "network",
37
+ recents: routesHistory,
38
+ balancesLoaded: loadingSuggestions,
39
+ search
40
+ }), [filteredRoutes, balances, direction, search, groupByToken, routesHistory, loadingSuggestions]);
30
41
  const exchanges = useMemo(() => {
31
42
  return groupExchanges(exchangesRoutes, search, direction, { lockFrom, from, lockTo, to });
32
43
  }, [exchangesRoutes, search, direction, lockFrom, from, lockTo, to]);
@@ -42,7 +53,6 @@ export default function useFormRoutes({ direction, values }, search) {
42
53
  exchangeSourceNetworksLoading,
43
54
  selectedRoute,
44
55
  selectedToken,
45
- allbalancesLoaded: !balancesLoading,
46
56
  }), [
47
57
  filteredRoutes,
48
58
  routesLoading,
@@ -52,8 +62,7 @@ export default function useFormRoutes({ direction, values }, search) {
52
62
  withdrawalNetworks,
53
63
  exchangeSourceNetworksLoading,
54
64
  selectedRoute,
55
- selectedToken,
56
- balancesLoading,
65
+ selectedToken
57
66
  ]);
58
67
  }
59
68
  function useRoutesData(url, defaultData, fetcher) {
@@ -169,12 +178,11 @@ const searchInTokens = (routes, search) => {
169
178
  return symbolMatch || contractMatch || nameMatch || combo;
170
179
  });
171
180
  };
172
- // ---------- Route Grouping ----------
173
- function groupRoutes(routes, direction, balances, groupBy = 'network', recents, balancesLoading, search) {
181
+ function groupRoutes({ routes, direction, balances, groupBy, recents, balancesLoaded, search }) {
174
182
  if (search) {
175
183
  return resolveSearch(routes, search, direction, balances, recents);
176
184
  }
177
- const suggestedRoutes = getSuggestedRoutes(routes, balances, recents, direction, balancesLoading);
185
+ const suggestedRoutes = getSuggestedRoutes(routes, balances, recents, direction, balancesLoaded);
178
186
  if (groupBy === "token") {
179
187
  const groupedTokens = resolveTokenRoutes(routes, balances, direction);
180
188
  return mergeGroups(suggestedRoutes, groupedTokens);
@@ -1,4 +1,9 @@
1
1
  import { isValidAddress } from '../lib/address/validator';
2
+ export const FORM_VALIDATION_ERROR_CODES = {
3
+ ROUTE_NOT_FOUND: "ROUTE_NOT_FOUND",
4
+ MIN_AMOUNT_ERROR: "MIN_AMOUNT_ERROR",
5
+ MAX_AMOUNT_ERROR: "MAX_AMOUNT_ERROR",
6
+ };
2
7
  export function resolveFormValidation({ values, maxAllowedAmount, minAllowedAmount, sourceAddress, sameAccountNetwork, quoteError }) {
3
8
  let amount = values.amount ? Number(values.amount) : undefined;
4
9
  if (!values.from && !values.fromExchange) {
@@ -16,17 +21,17 @@ export function resolveFormValidation({ values, maxAllowedAmount, minAllowedAmou
16
21
  if (!amount) {
17
22
  return { message: 'Enter an amount' };
18
23
  }
19
- if (!/^[0-9]*[.,]?[0-9]*$/i.test(amount.toString())) {
20
- return { message: 'Invalid amount' };
21
- }
22
24
  if (amount < 0) {
23
25
  return { message: "Can't be negative" };
24
26
  }
25
27
  if (maxAllowedAmount != undefined && amount > maxAllowedAmount) {
26
- return { message: `Max amount is ${maxAllowedAmount}` };
28
+ return { code: FORM_VALIDATION_ERROR_CODES.MAX_AMOUNT_ERROR, message: `Max amount is ${maxAllowedAmount}` };
27
29
  }
28
30
  if (minAllowedAmount != undefined && amount < minAllowedAmount) {
29
- return { message: `Min amount is ${minAllowedAmount}` };
31
+ return { code: FORM_VALIDATION_ERROR_CODES.MIN_AMOUNT_ERROR, message: `Min amount is ${minAllowedAmount}` };
32
+ }
33
+ if (!/^[0-9]*[.,]?[0-9]*$/i.test(amount.toString())) {
34
+ return { message: 'Invalid amount' };
30
35
  }
31
36
  if (values.to) {
32
37
  if (values.destination_address && !isValidAddress(values.destination_address, values.to)) {
@@ -46,7 +51,7 @@ export function resolveFormValidation({ values, maxAllowedAmount, minAllowedAmou
46
51
  }
47
52
  const quoteErrorCode = quoteError?.response?.data?.error?.code || quoteError?.code;
48
53
  if (quoteError && quoteErrorCode !== "QUOTE_REQUIRES_NO_DEPOSIT_ADDRESS") {
49
- return { message: quoteError.response?.data?.error?.message || 'Unable to retrieve quote' };
54
+ return { message: 'Route not found', code: FORM_VALIDATION_ERROR_CODES.ROUTE_NOT_FOUND };
50
55
  }
51
56
  return { message: '' };
52
57
  }
@@ -3,7 +3,7 @@ import { RouteOff } from 'lucide-react';
3
3
  import { useMemo } from 'react';
4
4
  import { useInitialSettings } from '../context/settings';
5
5
  import { useFormikContext } from 'formik';
6
- import { useSelectedAccount } from '../context/balanceAccounts';
6
+ import { useSelectedAccount } from '../context/swapAccounts';
7
7
  import { ICON_CLASSES_WARNING } from '../components/Pages/Swap/Form/SecondaryComponents/validationError/constants';
8
8
  export function resolveRouteValidation(quoteError) {
9
9
  const { values } = useFormikContext();
@@ -6,7 +6,7 @@ const PAGE_SIZE = 20;
6
6
  const getSwapsKey = (index, statuses, addresses) => {
7
7
  const addressesParams = addresses?.map(a => `&addresses=${a}`).join('') || '';
8
8
  const statusesParams = statuses.map(s => `&statuses=${s}`).join('') || '';
9
- return `/internal/swaps?page=${index + 1}${statusesParams}${addressesParams}`;
9
+ return `/swaps/internal?page=${index + 1}${statusesParams}${addressesParams}`;
10
10
  };
11
11
  export function useSwrSwaps({ statuses, addresses, refreshInterval, autoLoadAllInitially, revalidateAll, revalidateFirstPage }) {
12
12
  const apiClient = new LayerSwapApiClient();
@@ -0,0 +1,9 @@
1
+ import { resolverService } from "../lib/resolvers/resolverService";
2
+ import { useCallback } from "react";
3
+ export function useTransfer() {
4
+ const executeTransfer = useCallback(async (params, wallet) => {
5
+ const transferResolver = resolverService.getTransferResolver();
6
+ return transferResolver.executeTransfer(params, wallet);
7
+ }, []);
8
+ return { executeTransfer };
9
+ }
@@ -39,26 +39,26 @@ const resolveProvider = (network, walletProviders, purpose) => {
39
39
  case "withdrawal":
40
40
  provider = walletProviders.find(provider => provider.withdrawalSupportedNetworks?.includes(network.name));
41
41
  break;
42
- case "autofil":
42
+ case "autofill":
43
43
  provider = walletProviders.find(provider => provider.autofillSupportedNetworks?.includes(network.name));
44
44
  break;
45
45
  case "asSource":
46
46
  provider = walletProviders.find(provider => provider.asSourceSupportedNetworks?.includes(network.name));
47
47
  break;
48
48
  }
49
- if (provider?.isNotAvailableCondition) {
50
- const availableWalletsForConnect = provider.availableWalletsForConnect?.filter(connector => (provider.isNotAvailableCondition && network?.name) ? !provider.isNotAvailableCondition(connector.id, network?.name) : true);
49
+ if (provider?.isNotAvailableCondition && purpose) {
50
+ const availableWalletsForConnect = provider.availableWalletsForConnect?.filter(connector => (provider.isNotAvailableCondition && network?.name) ? !provider.isNotAvailableCondition(connector.id, network?.name, purpose) : true);
51
51
  const resolvedProvider = {
52
52
  ...provider,
53
53
  connectedWallets: provider.connectedWallets?.map(wallet => {
54
54
  return {
55
55
  ...wallet,
56
- isNotAvailable: (provider.isNotAvailableCondition && network?.name && wallet.internalId) ? provider.isNotAvailableCondition(wallet.internalId, network?.name) : false,
56
+ isNotAvailable: (provider.isNotAvailableCondition && network?.name && wallet.internalId) ? provider.isNotAvailableCondition(wallet.internalId, network?.name, purpose) : false,
57
57
  };
58
58
  }),
59
59
  activeWallet: provider.activeWallet ? {
60
60
  ...provider.activeWallet,
61
- isNotAvailable: (network?.name) ? provider.isNotAvailableCondition(provider.activeWallet.id, network?.name) : false,
61
+ isNotAvailable: (network?.name) ? provider.isNotAvailableCondition(provider.activeWallet.id, network?.name, purpose) : false,
62
62
  } : undefined,
63
63
  availableWalletsForConnect
64
64
  };
@@ -67,13 +67,13 @@ const resolveProvider = (network, walletProviders, purpose) => {
67
67
  return provider;
68
68
  };
69
69
  const resolveWallet = (wallet, network, provider, purpose) => {
70
- if (provider.isNotAvailableCondition && network?.name && wallet.internalId) {
70
+ if (provider.isNotAvailableCondition && network?.name && wallet.internalId && !purpose) {
71
71
  return {
72
72
  ...wallet,
73
73
  isNotAvailable: provider.isNotAvailableCondition(wallet.internalId, network?.name),
74
74
  };
75
75
  }
76
- if (purpose === "autofil") {
76
+ if (purpose === "autofill") {
77
77
  return {
78
78
  ...wallet,
79
79
  isNotAvailable: !wallet.autofillSupportedNetworks?.some(n => n.toLowerCase() === network?.name.toLowerCase()),
@@ -1,33 +1,44 @@
1
- class AppSettings {
1
+ class WalletsConfigs {
2
2
  }
3
- AppSettings.ApiVersion = "mainnet";
4
- AppSettings.ExplorerURl = `https://www.layerswap.io/explorer/`;
5
- AppSettings.LayerswapApiUri = 'https://api.layerswap.io';
6
- AppSettings.ResourseStorageUrl = 'https://prodlslayerswapbridgesa.blob.core.windows.net/';
7
- AppSettings.TelegramLogConfigs = {
8
- feedback_token: '',
9
- feedback_chat_id: '',
10
- error_token: '',
11
- error_chat_id: ''
12
- };
13
- AppSettings.WalletConnectConfig = {
3
+ /**
4
+ * @deprecated Pass `walletConnectConfigs` directly to the wallet provider factory
5
+ * (e.g. `createEVMProvider({ walletConnectConfigs })`). This static config will be removed soon.
6
+ */
7
+ WalletsConfigs.WalletConnectConfig = {
14
8
  projectId: '28168903b2d30c75e5f7f2d71902581b',
15
9
  name: 'Layerswap',
16
10
  description: 'Layerswap App',
17
11
  url: 'https://layerswap.io/app/',
18
- icons: ['https://www.layerswap.io/app/symbol.png'],
12
+ icons: ['https://www.layerswap.io/app/symbol.png']
19
13
  };
20
- AppSettings.TonClientConfig = {
21
- tonApiKey: 'ac793ea74c19105d617dfbeedb827f1b267b4e91f1b15b2420d003ec49722c82',
14
+ /**
15
+ * @deprecated Pass `tonConfigs` to `createTONProvider({ tonConfigs })`. This fallback will be removed.
16
+ */
17
+ WalletsConfigs.TonClientConfig = {
18
+ tonApiKey: '815b3d3036592d941bbcec5a4db824a588c1b2d210c3a4b6d188dcd4a15337d2',
22
19
  manifestUrl: `https://layerswap.io/app/tonconnect-manifest.json`
23
20
  };
24
- AppSettings.ImtblPassportConfig = {
21
+ /**
22
+ * @deprecated Pass `imtblPassportConfig` to `createImmutablePassportProvider({ imtblPassportConfig })`.
23
+ */
24
+ WalletsConfigs.ImtblPassportConfig = {
25
25
  publishableKey: "",
26
26
  clientId: "",
27
27
  redirectUri: "",
28
28
  logoutRedirectUri: ""
29
29
  };
30
- AppSettings.DisableExchanges = false;
30
+ class AppSettings extends WalletsConfigs {
31
+ }
32
+ AppSettings.ApiVersion = "mainnet";
33
+ AppSettings.ExplorerURl = `https://www.layerswap.io/explorer/`;
34
+ AppSettings.LayerswapApiUri = 'https://api.layerswap.io';
35
+ AppSettings.ResourseStorageUrl = 'https://prodlslayerswapbridgesa.blob.core.windows.net/';
36
+ AppSettings.TelegramLogConfigs = {
37
+ feedback_token: '',
38
+ feedback_chat_id: '',
39
+ error_token: '',
40
+ error_chat_id: ''
41
+ };
31
42
  AppSettings.LayerswapApiKeys = {
32
43
  'mainnet': 'NDBxG+aon6WlbgIA2LfwmcbLU52qUL9qTnztTuTRPNSohf/VnxXpRaJlA5uLSQVqP8YGIiy/0mz+mMeZhLY4/Q',
33
44
  'testnet': 'Dz1jVir9WUD0gBWoGbOmS1oe5K4985SGptaZXjF4z9VVrvO5nC9q55h8TE/3CIESRxWdYVpPnz/H2BogL2eG+A'
@@ -0,0 +1,6 @@
1
+ import { logStore } from "../stores/logStore";
2
+ export function ErrorHandler(event) {
3
+ const { logger } = logStore.getState();
4
+ ;
5
+ return logger(event);
6
+ }