@ledgerhq/live-common 34.3.0-nightly.9 → 35.0.0-next.6

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 (457) hide show
  1. package/lib/__tests__/test-helpers/environment.js +4 -0
  2. package/lib/__tests__/test-helpers/environment.js.map +1 -1
  3. package/lib/apps/listApps/v2.d.ts +2 -2
  4. package/lib/apps/listApps/v2.d.ts.map +1 -1
  5. package/lib/apps/listApps/v2.test.js +122 -0
  6. package/lib/apps/listApps/v2.test.js.map +1 -1
  7. package/lib/apps/mock.d.ts +2 -1
  8. package/lib/apps/mock.d.ts.map +1 -1
  9. package/lib/apps/mock.js +6 -1
  10. package/lib/apps/mock.js.map +1 -1
  11. package/lib/apps/react.test.js +1 -0
  12. package/lib/apps/react.test.js.map +1 -1
  13. package/lib/device/use-cases/listAppsUseCase.d.ts.map +1 -1
  14. package/lib/device/use-cases/listAppsUseCase.js +1 -0
  15. package/lib/device/use-cases/listAppsUseCase.js.map +1 -1
  16. package/lib/deviceSDK/actions/getLatestAvailableFirmware.test.js +3 -3
  17. package/lib/deviceSDK/actions/getLatestAvailableFirmware.test.js.map +1 -1
  18. package/lib/deviceSDK/tasks/core.js +1 -1
  19. package/lib/deviceSDK/tasks/core.js.map +1 -1
  20. package/lib/env.react.d.ts +1 -1
  21. package/lib/env.react.d.ts.map +1 -1
  22. package/lib/exchange/providers/swap.d.ts.map +1 -1
  23. package/lib/exchange/providers/swap.js +6 -1
  24. package/lib/exchange/providers/swap.js.map +1 -1
  25. package/lib/exchange/swap/api/v5/__tests__/fetchCurrencyAll.spec.js +2 -1
  26. package/lib/exchange/swap/api/v5/__tests__/fetchCurrencyAll.spec.js.map +1 -1
  27. package/lib/exchange/swap/api/v5/__tests__/fetchCurrencyFrom.spec.js +2 -0
  28. package/lib/exchange/swap/api/v5/__tests__/fetchCurrencyFrom.spec.js.map +1 -1
  29. package/lib/exchange/swap/api/v5/__tests__/fetchCurrencyTo.spec.js +3 -0
  30. package/lib/exchange/swap/api/v5/__tests__/fetchCurrencyTo.spec.js.map +1 -1
  31. package/lib/exchange/swap/api/v5/fetchCurrencyAll.d.ts +2 -1
  32. package/lib/exchange/swap/api/v5/fetchCurrencyAll.d.ts.map +1 -1
  33. package/lib/exchange/swap/api/v5/fetchCurrencyAll.js +1 -2
  34. package/lib/exchange/swap/api/v5/fetchCurrencyAll.js.map +1 -1
  35. package/lib/exchange/swap/api/v5/fetchCurrencyFrom.d.ts +2 -1
  36. package/lib/exchange/swap/api/v5/fetchCurrencyFrom.d.ts.map +1 -1
  37. package/lib/exchange/swap/api/v5/fetchCurrencyFrom.js +1 -2
  38. package/lib/exchange/swap/api/v5/fetchCurrencyFrom.js.map +1 -1
  39. package/lib/exchange/swap/api/v5/fetchCurrencyTo.d.ts +2 -1
  40. package/lib/exchange/swap/api/v5/fetchCurrencyTo.d.ts.map +1 -1
  41. package/lib/exchange/swap/api/v5/fetchCurrencyTo.js +1 -2
  42. package/lib/exchange/swap/api/v5/fetchCurrencyTo.js.map +1 -1
  43. package/lib/exchange/swap/api/v5/fetchRates.d.ts +2 -2
  44. package/lib/exchange/swap/api/v5/fetchRates.d.ts.map +1 -1
  45. package/lib/exchange/swap/api/v5/fetchRates.js +1 -5
  46. package/lib/exchange/swap/api/v5/fetchRates.js.map +1 -1
  47. package/lib/exchange/swap/completeExchange.d.ts.map +1 -1
  48. package/lib/exchange/swap/completeExchange.js +2 -1
  49. package/lib/exchange/swap/completeExchange.js.map +1 -1
  50. package/lib/exchange/swap/hooks/useSwapTransaction.d.ts +4 -3
  51. package/lib/exchange/swap/hooks/useSwapTransaction.d.ts.map +1 -1
  52. package/lib/exchange/swap/hooks/useSwapTransaction.js +5 -4
  53. package/lib/exchange/swap/hooks/useSwapTransaction.js.map +1 -1
  54. package/lib/exchange/swap/hooks/v5/useFetchCurrencyAll.d.ts.map +1 -1
  55. package/lib/exchange/swap/hooks/v5/useFetchCurrencyAll.js +4 -0
  56. package/lib/exchange/swap/hooks/v5/useFetchCurrencyAll.js.map +1 -1
  57. package/lib/exchange/swap/hooks/v5/useFetchCurrencyFrom.d.ts.map +1 -1
  58. package/lib/exchange/swap/hooks/v5/useFetchCurrencyFrom.js +4 -1
  59. package/lib/exchange/swap/hooks/v5/useFetchCurrencyFrom.js.map +1 -1
  60. package/lib/exchange/swap/hooks/v5/useFetchCurrencyTo.d.ts.map +1 -1
  61. package/lib/exchange/swap/hooks/v5/useFetchCurrencyTo.js +4 -2
  62. package/lib/exchange/swap/hooks/v5/useFetchCurrencyTo.js.map +1 -1
  63. package/lib/exchange/swap/hooks/v5/useFetchRates.d.ts +3 -2
  64. package/lib/exchange/swap/hooks/v5/useFetchRates.d.ts.map +1 -1
  65. package/lib/exchange/swap/hooks/v5/useFetchRates.js +12 -9
  66. package/lib/exchange/swap/hooks/v5/useFetchRates.js.map +1 -1
  67. package/lib/exchange/swap/hooks/v5/useFilteredProviders.d.ts +6 -0
  68. package/lib/exchange/swap/hooks/v5/useFilteredProviders.d.ts.map +1 -0
  69. package/lib/exchange/swap/hooks/v5/useFilteredProviders.js +51 -0
  70. package/lib/exchange/swap/hooks/v5/useFilteredProviders.js.map +1 -0
  71. package/lib/exchange/swap/hooks/v5/useProviderRates.d.ts +2 -1
  72. package/lib/exchange/swap/hooks/v5/useProviderRates.d.ts.map +1 -1
  73. package/lib/exchange/swap/hooks/v5/useProviderRates.js +5 -12
  74. package/lib/exchange/swap/hooks/v5/useProviderRates.js.map +1 -1
  75. package/lib/exchange/swap/initSwap.d.ts.map +1 -1
  76. package/lib/exchange/swap/initSwap.js +2 -1
  77. package/lib/exchange/swap/initSwap.js.map +1 -1
  78. package/lib/families/cosmos/bridge/mock.js +1 -1
  79. package/lib/families/evm/config.d.ts.map +1 -1
  80. package/lib/families/evm/config.js +32 -0
  81. package/lib/families/evm/config.js.map +1 -1
  82. package/lib/families/stacks/__tests__/sync.integration.test.js +1 -1
  83. package/lib/families/stacks/__tests__/sync.integration.test.js.map +1 -1
  84. package/lib/families/stacks/bridge/utils/api.d.ts.map +1 -1
  85. package/lib/families/stacks/bridge/utils/api.js +9 -3
  86. package/lib/families/stacks/bridge/utils/api.js.map +1 -1
  87. package/lib/families/stacks/bridge/utils/api.types.d.ts +80 -10
  88. package/lib/families/stacks/bridge/utils/api.types.d.ts.map +1 -1
  89. package/lib/families/stacks/bridge/utils/misc.d.ts +1 -1
  90. package/lib/families/stacks/bridge/utils/misc.d.ts.map +1 -1
  91. package/lib/families/stacks/bridge/utils/misc.js +29 -21
  92. package/lib/families/stacks/bridge/utils/misc.js.map +1 -1
  93. package/lib/families/stacks/bridge/utils/misc.unit.test.js +83 -69
  94. package/lib/families/stacks/bridge/utils/misc.unit.test.js.map +1 -1
  95. package/lib/families/stacks/synchronization.js +1 -1
  96. package/lib/families/stacks/synchronization.js.map +1 -1
  97. package/lib/families/tron/api/index.js +2 -2
  98. package/lib/families/tron/api/index.js.map +1 -1
  99. package/lib/families/tron/signOperation.d.ts.map +1 -1
  100. package/lib/families/tron/signOperation.js +0 -11
  101. package/lib/families/tron/signOperation.js.map +1 -1
  102. package/lib/families/tron/synchronization.d.ts.map +1 -1
  103. package/lib/families/tron/synchronization.js +35 -3
  104. package/lib/families/tron/synchronization.js.map +1 -1
  105. package/lib/featureFlags/defaultFeatures.d.ts +5 -1
  106. package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
  107. package/lib/featureFlags/defaultFeatures.js +11 -5
  108. package/lib/featureFlags/defaultFeatures.js.map +1 -1
  109. package/lib/featureFlags/firebaseFeatureFlags.d.ts +9 -3
  110. package/lib/featureFlags/firebaseFeatureFlags.d.ts.map +1 -1
  111. package/lib/featureFlags/groupedFeatures.d.ts +2 -1
  112. package/lib/featureFlags/groupedFeatures.d.ts.map +1 -1
  113. package/lib/featureFlags/groupedFeatures.js +0 -3
  114. package/lib/featureFlags/groupedFeatures.js.map +1 -1
  115. package/lib/featureFlags/useFeature.d.ts +1 -1
  116. package/lib/featureFlags/useFeature.d.ts.map +1 -1
  117. package/lib/generated/deviceTransactionConfig.d.ts +1 -1
  118. package/lib/generated/transaction.d.ts +2 -2
  119. package/lib/helpers.d.ts +1 -0
  120. package/lib/helpers.d.ts.map +1 -1
  121. package/lib/helpers.js +5 -1
  122. package/lib/helpers.js.map +1 -1
  123. package/lib/hw/getOnboardingStatePolling.js +1 -1
  124. package/lib/hw/getOnboardingStatePolling.js.map +1 -1
  125. package/lib/market/api/index.d.ts +8 -0
  126. package/lib/market/api/index.d.ts.map +1 -0
  127. package/lib/market/api/index.js +112 -0
  128. package/lib/market/api/index.js.map +1 -0
  129. package/lib/market/hooks/useMarketDataProvider.d.ts +13 -0
  130. package/lib/market/hooks/useMarketDataProvider.d.ts.map +1 -0
  131. package/lib/market/{v2 → hooks}/useMarketDataProvider.js +36 -39
  132. package/lib/market/hooks/useMarketDataProvider.js.map +1 -0
  133. package/lib/market/{v2 → hooks}/useMarketPerformers.d.ts +1 -1
  134. package/lib/market/hooks/useMarketPerformers.d.ts.map +1 -0
  135. package/lib/market/{v2 → hooks}/useMarketPerformers.js +3 -3
  136. package/lib/market/hooks/useMarketPerformers.js.map +1 -0
  137. package/lib/market/utils/currencyFormatter.d.ts +3 -26
  138. package/lib/market/utils/currencyFormatter.d.ts.map +1 -1
  139. package/lib/market/utils/currencyFormatter.js +35 -31
  140. package/lib/market/utils/currencyFormatter.js.map +1 -1
  141. package/lib/market/utils/index.d.ts +5 -0
  142. package/lib/market/utils/index.d.ts.map +1 -0
  143. package/lib/market/utils/index.js +37 -0
  144. package/lib/market/utils/index.js.map +1 -0
  145. package/lib/market/utils/queryKeys.d.ts.map +1 -0
  146. package/lib/market/utils/queryKeys.js.map +1 -0
  147. package/lib/market/utils/timers.d.ts.map +1 -0
  148. package/lib/market/utils/timers.js.map +1 -0
  149. package/lib/market/{types.d.ts → utils/types.d.ts} +35 -53
  150. package/lib/market/utils/types.d.ts.map +1 -0
  151. package/lib/market/utils/types.js +19 -0
  152. package/lib/market/utils/types.js.map +1 -0
  153. package/lib/platform/converters.d.ts.map +1 -1
  154. package/lib/platform/converters.js +4 -5
  155. package/lib/platform/converters.js.map +1 -1
  156. package/lib/platform/types.d.ts +6 -1
  157. package/lib/platform/types.d.ts.map +1 -1
  158. package/lib/platform/types.js +11 -2
  159. package/lib/platform/types.js.map +1 -1
  160. package/lib/wallet-api/constants.d.ts +6 -1
  161. package/lib/wallet-api/constants.d.ts.map +1 -1
  162. package/lib/wallet-api/constants.js +8 -2
  163. package/lib/wallet-api/constants.js.map +1 -1
  164. package/lib/wallet-api/converters.d.ts +1 -1
  165. package/lib/wallet-api/converters.d.ts.map +1 -1
  166. package/lib/wallet-api/converters.js +6 -5
  167. package/lib/wallet-api/converters.js.map +1 -1
  168. package/lib-es/__tests__/test-helpers/environment.js +4 -0
  169. package/lib-es/__tests__/test-helpers/environment.js.map +1 -1
  170. package/lib-es/apps/listApps/v2.d.ts +2 -2
  171. package/lib-es/apps/listApps/v2.d.ts.map +1 -1
  172. package/lib-es/apps/listApps/v2.test.js +122 -0
  173. package/lib-es/apps/listApps/v2.test.js.map +1 -1
  174. package/lib-es/apps/mock.d.ts +2 -1
  175. package/lib-es/apps/mock.d.ts.map +1 -1
  176. package/lib-es/apps/mock.js +4 -0
  177. package/lib-es/apps/mock.js.map +1 -1
  178. package/lib-es/apps/react.test.js +1 -0
  179. package/lib-es/apps/react.test.js.map +1 -1
  180. package/lib-es/device/use-cases/listAppsUseCase.d.ts.map +1 -1
  181. package/lib-es/device/use-cases/listAppsUseCase.js +1 -0
  182. package/lib-es/device/use-cases/listAppsUseCase.js.map +1 -1
  183. package/lib-es/deviceSDK/actions/getLatestAvailableFirmware.test.js +4 -4
  184. package/lib-es/deviceSDK/actions/getLatestAvailableFirmware.test.js.map +1 -1
  185. package/lib-es/deviceSDK/tasks/core.js +2 -2
  186. package/lib-es/deviceSDK/tasks/core.js.map +1 -1
  187. package/lib-es/env.react.d.ts +1 -1
  188. package/lib-es/env.react.d.ts.map +1 -1
  189. package/lib-es/exchange/providers/swap.d.ts.map +1 -1
  190. package/lib-es/exchange/providers/swap.js +6 -1
  191. package/lib-es/exchange/providers/swap.js.map +1 -1
  192. package/lib-es/exchange/swap/api/v5/__tests__/fetchCurrencyAll.spec.js +2 -1
  193. package/lib-es/exchange/swap/api/v5/__tests__/fetchCurrencyAll.spec.js.map +1 -1
  194. package/lib-es/exchange/swap/api/v5/__tests__/fetchCurrencyFrom.spec.js +2 -0
  195. package/lib-es/exchange/swap/api/v5/__tests__/fetchCurrencyFrom.spec.js.map +1 -1
  196. package/lib-es/exchange/swap/api/v5/__tests__/fetchCurrencyTo.spec.js +3 -0
  197. package/lib-es/exchange/swap/api/v5/__tests__/fetchCurrencyTo.spec.js.map +1 -1
  198. package/lib-es/exchange/swap/api/v5/fetchCurrencyAll.d.ts +2 -1
  199. package/lib-es/exchange/swap/api/v5/fetchCurrencyAll.d.ts.map +1 -1
  200. package/lib-es/exchange/swap/api/v5/fetchCurrencyAll.js +2 -3
  201. package/lib-es/exchange/swap/api/v5/fetchCurrencyAll.js.map +1 -1
  202. package/lib-es/exchange/swap/api/v5/fetchCurrencyFrom.d.ts +2 -1
  203. package/lib-es/exchange/swap/api/v5/fetchCurrencyFrom.d.ts.map +1 -1
  204. package/lib-es/exchange/swap/api/v5/fetchCurrencyFrom.js +2 -3
  205. package/lib-es/exchange/swap/api/v5/fetchCurrencyFrom.js.map +1 -1
  206. package/lib-es/exchange/swap/api/v5/fetchCurrencyTo.d.ts +2 -1
  207. package/lib-es/exchange/swap/api/v5/fetchCurrencyTo.d.ts.map +1 -1
  208. package/lib-es/exchange/swap/api/v5/fetchCurrencyTo.js +2 -3
  209. package/lib-es/exchange/swap/api/v5/fetchCurrencyTo.js.map +1 -1
  210. package/lib-es/exchange/swap/api/v5/fetchRates.d.ts +2 -2
  211. package/lib-es/exchange/swap/api/v5/fetchRates.d.ts.map +1 -1
  212. package/lib-es/exchange/swap/api/v5/fetchRates.js +2 -6
  213. package/lib-es/exchange/swap/api/v5/fetchRates.js.map +1 -1
  214. package/lib-es/exchange/swap/completeExchange.d.ts.map +1 -1
  215. package/lib-es/exchange/swap/completeExchange.js +2 -1
  216. package/lib-es/exchange/swap/completeExchange.js.map +1 -1
  217. package/lib-es/exchange/swap/hooks/useSwapTransaction.d.ts +4 -3
  218. package/lib-es/exchange/swap/hooks/useSwapTransaction.d.ts.map +1 -1
  219. package/lib-es/exchange/swap/hooks/useSwapTransaction.js +5 -4
  220. package/lib-es/exchange/swap/hooks/useSwapTransaction.js.map +1 -1
  221. package/lib-es/exchange/swap/hooks/v5/useFetchCurrencyAll.d.ts.map +1 -1
  222. package/lib-es/exchange/swap/hooks/v5/useFetchCurrencyAll.js +4 -0
  223. package/lib-es/exchange/swap/hooks/v5/useFetchCurrencyAll.js.map +1 -1
  224. package/lib-es/exchange/swap/hooks/v5/useFetchCurrencyFrom.d.ts.map +1 -1
  225. package/lib-es/exchange/swap/hooks/v5/useFetchCurrencyFrom.js +4 -1
  226. package/lib-es/exchange/swap/hooks/v5/useFetchCurrencyFrom.js.map +1 -1
  227. package/lib-es/exchange/swap/hooks/v5/useFetchCurrencyTo.d.ts.map +1 -1
  228. package/lib-es/exchange/swap/hooks/v5/useFetchCurrencyTo.js +4 -2
  229. package/lib-es/exchange/swap/hooks/v5/useFetchCurrencyTo.js.map +1 -1
  230. package/lib-es/exchange/swap/hooks/v5/useFetchRates.d.ts +3 -2
  231. package/lib-es/exchange/swap/hooks/v5/useFetchRates.d.ts.map +1 -1
  232. package/lib-es/exchange/swap/hooks/v5/useFetchRates.js +12 -9
  233. package/lib-es/exchange/swap/hooks/v5/useFetchRates.js.map +1 -1
  234. package/lib-es/exchange/swap/hooks/v5/useFilteredProviders.d.ts +6 -0
  235. package/lib-es/exchange/swap/hooks/v5/useFilteredProviders.d.ts.map +1 -0
  236. package/lib-es/exchange/swap/hooks/v5/useFilteredProviders.js +47 -0
  237. package/lib-es/exchange/swap/hooks/v5/useFilteredProviders.js.map +1 -0
  238. package/lib-es/exchange/swap/hooks/v5/useProviderRates.d.ts +2 -1
  239. package/lib-es/exchange/swap/hooks/v5/useProviderRates.d.ts.map +1 -1
  240. package/lib-es/exchange/swap/hooks/v5/useProviderRates.js +6 -13
  241. package/lib-es/exchange/swap/hooks/v5/useProviderRates.js.map +1 -1
  242. package/lib-es/exchange/swap/initSwap.d.ts.map +1 -1
  243. package/lib-es/exchange/swap/initSwap.js +2 -1
  244. package/lib-es/exchange/swap/initSwap.js.map +1 -1
  245. package/lib-es/families/cosmos/bridge/mock.js +1 -1
  246. package/lib-es/families/evm/config.d.ts.map +1 -1
  247. package/lib-es/families/evm/config.js +32 -0
  248. package/lib-es/families/evm/config.js.map +1 -1
  249. package/lib-es/families/stacks/__tests__/sync.integration.test.js +1 -1
  250. package/lib-es/families/stacks/__tests__/sync.integration.test.js.map +1 -1
  251. package/lib-es/families/stacks/bridge/utils/api.d.ts.map +1 -1
  252. package/lib-es/families/stacks/bridge/utils/api.js +9 -3
  253. package/lib-es/families/stacks/bridge/utils/api.js.map +1 -1
  254. package/lib-es/families/stacks/bridge/utils/api.types.d.ts +80 -10
  255. package/lib-es/families/stacks/bridge/utils/api.types.d.ts.map +1 -1
  256. package/lib-es/families/stacks/bridge/utils/misc.d.ts +1 -1
  257. package/lib-es/families/stacks/bridge/utils/misc.d.ts.map +1 -1
  258. package/lib-es/families/stacks/bridge/utils/misc.js +30 -22
  259. package/lib-es/families/stacks/bridge/utils/misc.js.map +1 -1
  260. package/lib-es/families/stacks/bridge/utils/misc.unit.test.js +83 -66
  261. package/lib-es/families/stacks/bridge/utils/misc.unit.test.js.map +1 -1
  262. package/lib-es/families/stacks/synchronization.js +1 -1
  263. package/lib-es/families/stacks/synchronization.js.map +1 -1
  264. package/lib-es/families/tron/api/index.js +2 -2
  265. package/lib-es/families/tron/api/index.js.map +1 -1
  266. package/lib-es/families/tron/signOperation.d.ts.map +1 -1
  267. package/lib-es/families/tron/signOperation.js +1 -12
  268. package/lib-es/families/tron/signOperation.js.map +1 -1
  269. package/lib-es/families/tron/synchronization.d.ts.map +1 -1
  270. package/lib-es/families/tron/synchronization.js +35 -3
  271. package/lib-es/families/tron/synchronization.js.map +1 -1
  272. package/lib-es/featureFlags/defaultFeatures.d.ts +5 -1
  273. package/lib-es/featureFlags/defaultFeatures.d.ts.map +1 -1
  274. package/lib-es/featureFlags/defaultFeatures.js +11 -5
  275. package/lib-es/featureFlags/defaultFeatures.js.map +1 -1
  276. package/lib-es/featureFlags/firebaseFeatureFlags.d.ts +9 -3
  277. package/lib-es/featureFlags/firebaseFeatureFlags.d.ts.map +1 -1
  278. package/lib-es/featureFlags/groupedFeatures.d.ts +2 -1
  279. package/lib-es/featureFlags/groupedFeatures.d.ts.map +1 -1
  280. package/lib-es/featureFlags/groupedFeatures.js +0 -3
  281. package/lib-es/featureFlags/groupedFeatures.js.map +1 -1
  282. package/lib-es/featureFlags/useFeature.d.ts +1 -1
  283. package/lib-es/featureFlags/useFeature.d.ts.map +1 -1
  284. package/lib-es/generated/deviceTransactionConfig.d.ts +1 -1
  285. package/lib-es/generated/transaction.d.ts +2 -2
  286. package/lib-es/helpers.d.ts +1 -0
  287. package/lib-es/helpers.d.ts.map +1 -1
  288. package/lib-es/helpers.js +3 -0
  289. package/lib-es/helpers.js.map +1 -1
  290. package/lib-es/hw/getOnboardingStatePolling.js +2 -2
  291. package/lib-es/hw/getOnboardingStatePolling.js.map +1 -1
  292. package/lib-es/market/api/index.d.ts +8 -0
  293. package/lib-es/market/api/index.d.ts.map +1 -0
  294. package/lib-es/market/api/index.js +100 -0
  295. package/lib-es/market/api/index.js.map +1 -0
  296. package/lib-es/market/hooks/useMarketDataProvider.d.ts +13 -0
  297. package/lib-es/market/hooks/useMarketDataProvider.d.ts.map +1 -0
  298. package/lib-es/market/{v2 → hooks}/useMarketDataProvider.js +34 -37
  299. package/lib-es/market/hooks/useMarketDataProvider.js.map +1 -0
  300. package/lib-es/market/{v2 → hooks}/useMarketPerformers.d.ts +1 -1
  301. package/lib-es/market/hooks/useMarketPerformers.d.ts.map +1 -0
  302. package/lib-es/market/{v2 → hooks}/useMarketPerformers.js +3 -3
  303. package/lib-es/market/hooks/useMarketPerformers.js.map +1 -0
  304. package/lib-es/market/utils/currencyFormatter.d.ts +3 -26
  305. package/lib-es/market/utils/currencyFormatter.d.ts.map +1 -1
  306. package/lib-es/market/utils/currencyFormatter.js +35 -31
  307. package/lib-es/market/utils/currencyFormatter.js.map +1 -1
  308. package/lib-es/market/utils/index.d.ts +5 -0
  309. package/lib-es/market/utils/index.d.ts.map +1 -0
  310. package/lib-es/market/utils/index.js +32 -0
  311. package/lib-es/market/utils/index.js.map +1 -0
  312. package/lib-es/market/utils/queryKeys.d.ts.map +1 -0
  313. package/lib-es/market/utils/queryKeys.js.map +1 -0
  314. package/lib-es/market/utils/timers.d.ts.map +1 -0
  315. package/lib-es/market/utils/timers.js.map +1 -0
  316. package/lib-es/market/{types.d.ts → utils/types.d.ts} +35 -53
  317. package/lib-es/market/utils/types.d.ts.map +1 -0
  318. package/lib-es/market/utils/types.js +16 -0
  319. package/lib-es/market/utils/types.js.map +1 -0
  320. package/lib-es/platform/converters.d.ts.map +1 -1
  321. package/lib-es/platform/converters.js +5 -6
  322. package/lib-es/platform/converters.js.map +1 -1
  323. package/lib-es/platform/types.d.ts +6 -1
  324. package/lib-es/platform/types.d.ts.map +1 -1
  325. package/lib-es/platform/types.js +10 -1
  326. package/lib-es/platform/types.js.map +1 -1
  327. package/lib-es/wallet-api/constants.d.ts +6 -1
  328. package/lib-es/wallet-api/constants.d.ts.map +1 -1
  329. package/lib-es/wallet-api/constants.js +7 -1
  330. package/lib-es/wallet-api/constants.js.map +1 -1
  331. package/lib-es/wallet-api/converters.d.ts +1 -1
  332. package/lib-es/wallet-api/converters.d.ts.map +1 -1
  333. package/lib-es/wallet-api/converters.js +6 -5
  334. package/lib-es/wallet-api/converters.js.map +1 -1
  335. package/package.json +45 -45
  336. package/src/__tests__/test-helpers/environment.ts +4 -0
  337. package/src/apps/listApps/v2.test.ts +151 -0
  338. package/src/apps/listApps/v2.ts +2 -2
  339. package/src/apps/mock.ts +30 -1
  340. package/src/apps/react.test.ts +1 -0
  341. package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +358 -1
  342. package/src/device/use-cases/listAppsUseCase.ts +1 -0
  343. package/src/deviceSDK/actions/getLatestAvailableFirmware.test.ts +4 -4
  344. package/src/deviceSDK/tasks/core.ts +2 -2
  345. package/src/exchange/providers/swap.ts +9 -1
  346. package/src/exchange/swap/api/v5/__tests__/fetchCurrencyAll.spec.ts +2 -1
  347. package/src/exchange/swap/api/v5/__tests__/fetchCurrencyFrom.spec.ts +3 -0
  348. package/src/exchange/swap/api/v5/__tests__/fetchCurrencyTo.spec.ts +3 -1
  349. package/src/exchange/swap/api/v5/fetchCurrencyAll.ts +3 -3
  350. package/src/exchange/swap/api/v5/fetchCurrencyFrom.ts +7 -3
  351. package/src/exchange/swap/api/v5/fetchCurrencyTo.ts +7 -3
  352. package/src/exchange/swap/api/v5/fetchRates.ts +3 -7
  353. package/src/exchange/swap/completeExchange.ts +5 -1
  354. package/src/exchange/swap/hooks/useSwapTransaction.ts +12 -9
  355. package/src/exchange/swap/hooks/v5/useFetchCurrencyAll.ts +4 -0
  356. package/src/exchange/swap/hooks/v5/useFetchCurrencyFrom.ts +4 -1
  357. package/src/exchange/swap/hooks/v5/useFetchCurrencyTo.ts +4 -2
  358. package/src/exchange/swap/hooks/v5/useFetchRates.ts +15 -9
  359. package/src/exchange/swap/hooks/v5/useFilteredProviders.ts +42 -0
  360. package/src/exchange/swap/hooks/v5/useProviderRates.ts +7 -14
  361. package/src/exchange/swap/initSwap.ts +5 -1
  362. package/src/families/cosmos/bridge/mock.ts +1 -1
  363. package/src/families/evm/config.ts +32 -0
  364. package/src/families/stacks/__snapshots__/bridge.integration.test.ts.snap +7 -7
  365. package/src/families/stacks/__tests__/sync.integration.test.ts +1 -1
  366. package/src/families/stacks/bridge/utils/api.ts +10 -5
  367. package/src/families/stacks/bridge/utils/api.types.ts +81 -10
  368. package/src/families/stacks/bridge/utils/misc.ts +43 -38
  369. package/src/families/stacks/bridge/utils/misc.unit.test.ts +88 -70
  370. package/src/families/stacks/synchronization.ts +1 -1
  371. package/src/families/tron/api/index.ts +2 -2
  372. package/src/families/tron/signOperation.ts +0 -15
  373. package/src/families/tron/synchronization.ts +45 -3
  374. package/src/featureFlags/defaultFeatures.ts +14 -3
  375. package/src/featureFlags/groupedFeatures.ts +3 -4
  376. package/src/helpers.ts +6 -0
  377. package/src/hw/getOnboardingStatePolling.ts +2 -2
  378. package/src/market/api/index.ts +138 -0
  379. package/src/market/{v2 → hooks}/useMarketDataProvider.ts +34 -33
  380. package/src/market/{v2 → hooks}/useMarketPerformers.ts +4 -4
  381. package/src/market/utils/currencyFormatter.ts +32 -28
  382. package/src/market/utils/index.ts +34 -0
  383. package/src/market/{types.ts → utils/types.ts} +38 -48
  384. package/src/platform/converters.ts +4 -5
  385. package/src/platform/types.ts +12 -1
  386. package/src/wallet-api/constants.ts +9 -1
  387. package/src/wallet-api/converters.ts +5 -6
  388. package/lib/market/MarketDataProvider.d.ts +0 -27
  389. package/lib/market/MarketDataProvider.d.ts.map +0 -1
  390. package/lib/market/MarketDataProvider.js +0 -261
  391. package/lib/market/MarketDataProvider.js.map +0 -1
  392. package/lib/market/api/api.d.ts +0 -18
  393. package/lib/market/api/api.d.ts.map +0 -1
  394. package/lib/market/api/api.js +0 -246
  395. package/lib/market/api/api.js.map +0 -1
  396. package/lib/market/api/api.mock.d.ts +0 -15
  397. package/lib/market/api/api.mock.d.ts.map +0 -1
  398. package/lib/market/api/api.mock.js +0 -395
  399. package/lib/market/api/api.mock.js.map +0 -1
  400. package/lib/market/types.d.ts.map +0 -1
  401. package/lib/market/types.js +0 -3
  402. package/lib/market/types.js.map +0 -1
  403. package/lib/market/utils/rangeFormatter.d.ts +0 -3
  404. package/lib/market/utils/rangeFormatter.d.ts.map +0 -1
  405. package/lib/market/utils/rangeFormatter.js +0 -18
  406. package/lib/market/utils/rangeFormatter.js.map +0 -1
  407. package/lib/market/v2/queryKeys.d.ts.map +0 -1
  408. package/lib/market/v2/queryKeys.js.map +0 -1
  409. package/lib/market/v2/timers.d.ts.map +0 -1
  410. package/lib/market/v2/timers.js.map +0 -1
  411. package/lib/market/v2/useMarketDataProvider.d.ts +0 -63
  412. package/lib/market/v2/useMarketDataProvider.d.ts.map +0 -1
  413. package/lib/market/v2/useMarketDataProvider.js.map +0 -1
  414. package/lib/market/v2/useMarketPerformers.d.ts.map +0 -1
  415. package/lib/market/v2/useMarketPerformers.js.map +0 -1
  416. package/lib-es/market/MarketDataProvider.d.ts +0 -27
  417. package/lib-es/market/MarketDataProvider.d.ts.map +0 -1
  418. package/lib-es/market/MarketDataProvider.js +0 -229
  419. package/lib-es/market/MarketDataProvider.js.map +0 -1
  420. package/lib-es/market/api/api.d.ts +0 -18
  421. package/lib-es/market/api/api.d.ts.map +0 -1
  422. package/lib-es/market/api/api.js +0 -232
  423. package/lib-es/market/api/api.js.map +0 -1
  424. package/lib-es/market/api/api.mock.d.ts +0 -15
  425. package/lib-es/market/api/api.mock.d.ts.map +0 -1
  426. package/lib-es/market/api/api.mock.js +0 -393
  427. package/lib-es/market/api/api.mock.js.map +0 -1
  428. package/lib-es/market/types.d.ts.map +0 -1
  429. package/lib-es/market/types.js +0 -2
  430. package/lib-es/market/types.js.map +0 -1
  431. package/lib-es/market/utils/rangeFormatter.d.ts +0 -3
  432. package/lib-es/market/utils/rangeFormatter.d.ts.map +0 -1
  433. package/lib-es/market/utils/rangeFormatter.js +0 -14
  434. package/lib-es/market/utils/rangeFormatter.js.map +0 -1
  435. package/lib-es/market/v2/queryKeys.d.ts.map +0 -1
  436. package/lib-es/market/v2/queryKeys.js.map +0 -1
  437. package/lib-es/market/v2/timers.d.ts.map +0 -1
  438. package/lib-es/market/v2/timers.js.map +0 -1
  439. package/lib-es/market/v2/useMarketDataProvider.d.ts +0 -63
  440. package/lib-es/market/v2/useMarketDataProvider.d.ts.map +0 -1
  441. package/lib-es/market/v2/useMarketDataProvider.js.map +0 -1
  442. package/lib-es/market/v2/useMarketPerformers.d.ts.map +0 -1
  443. package/lib-es/market/v2/useMarketPerformers.js.map +0 -1
  444. package/src/market/MarketDataProvider.tsx +0 -403
  445. package/src/market/api/api.mock.ts +0 -403
  446. package/src/market/api/api.ts +0 -310
  447. package/src/market/utils/rangeFormatter.ts +0 -15
  448. /package/lib/market/{v2 → utils}/queryKeys.d.ts +0 -0
  449. /package/lib/market/{v2 → utils}/queryKeys.js +0 -0
  450. /package/lib/market/{v2 → utils}/timers.d.ts +0 -0
  451. /package/lib/market/{v2 → utils}/timers.js +0 -0
  452. /package/lib-es/market/{v2 → utils}/queryKeys.d.ts +0 -0
  453. /package/lib-es/market/{v2 → utils}/queryKeys.js +0 -0
  454. /package/lib-es/market/{v2 → utils}/timers.d.ts +0 -0
  455. /package/lib-es/market/{v2 → utils}/timers.js +0 -0
  456. /package/src/market/{v2 → utils}/queryKeys.ts +0 -0
  457. /package/src/market/{v2 → utils}/timers.ts +0 -0
@@ -44,6 +44,7 @@ export function listAppsUseCase(
44
44
  deviceProxyModel: getEnv("DEVICE_PROXY_MODEL") as DeviceModelId,
45
45
  managerApiRepository,
46
46
  forceProvider: getEnv("FORCE_PROVIDER"),
47
+ managerDevModeEnabled: getEnv("MANAGER_DEV_MODE"),
47
48
  })
48
49
  : listAppsV1(transport, deviceInfo, managerApiRepository);
49
50
  }
@@ -1,5 +1,5 @@
1
1
  import { Observable, of } from "rxjs";
2
- import { LockedDeviceError, TransportPendingOperation } from "@ledgerhq/errors";
2
+ import { LockedDeviceError, TransportRaceCondition } from "@ledgerhq/errors";
3
3
  import { DeviceInfo, FirmwareUpdateContext } from "@ledgerhq/types-live";
4
4
 
5
5
  import { getDeviceInfoTask, internalGetDeviceInfoTask } from "../tasks/getDeviceInfo";
@@ -249,9 +249,9 @@ describe("getLatestAvailableFirmwareAction", () => {
249
249
  new Observable(o => {
250
250
  if (count < 1) {
251
251
  count++;
252
- // Mocks the internal task, some shared error are thrown (like `TransportPendingOperation`)
252
+ // Mocks the internal task, some shared error are thrown (like `TransportRaceCondition`)
253
253
  // and caught by the `sharedLogicTaskWrapper`
254
- o.error(new TransportPendingOperation());
254
+ o.error(new TransportRaceCondition());
255
255
  } else {
256
256
  o.next({ type: "data", deviceInfo: aDeviceInfo });
257
257
  }
@@ -291,7 +291,7 @@ describe("getLatestAvailableFirmwareAction", () => {
291
291
  expect(error).toEqual(
292
292
  expect.objectContaining({
293
293
  type: "SharedError",
294
- name: "TransportPendingOperation",
294
+ name: "TransportRaceCondition",
295
295
  retrying: true,
296
296
  }),
297
297
  );
@@ -2,7 +2,7 @@ import {
2
2
  CantOpenDevice,
3
3
  DisconnectedDevice,
4
4
  LockedDeviceError,
5
- TransportPendingOperation,
5
+ TransportRaceCondition,
6
6
  UnresponsiveDeviceError,
7
7
  TransportStatusErrorClassType,
8
8
  CustomErrorClassType,
@@ -49,7 +49,7 @@ export function sharedLogicTaskWrapper<TaskArgsType, TaskEventsType>(
49
49
  error instanceof UnresponsiveDeviceError ||
50
50
  error instanceof CantOpenDevice ||
51
51
  error instanceof DisconnectedDevice ||
52
- error instanceof TransportPendingOperation
52
+ error instanceof TransportRaceCondition
53
53
  ) {
54
54
  // Emits to the action an error event so it is aware of it (for ex locked device) before retrying
55
55
  const event: SharedTaskEvent = {
@@ -109,6 +109,8 @@ const swapProviders: Record<string, ProviderConfig & AdditionalProviderConfig> =
109
109
  },
110
110
  };
111
111
 
112
+ let providerDataCache: Record<string, ProviderConfig & AdditionalProviderConfig> | null = null;
113
+
112
114
  export const getSwapProvider = async (
113
115
  providerName: string,
114
116
  ): Promise<ProviderConfig & AdditionalProviderConfig> => {
@@ -162,21 +164,27 @@ export const getProvidersCDNData = async () => {
162
164
  };
163
165
 
164
166
  export const fetchAndMergeProviderData = async () => {
167
+ if (providerDataCache) {
168
+ return providerDataCache;
169
+ }
170
+
165
171
  try {
166
172
  const [providersData, providersExtraData] = await Promise.all([
167
173
  getProvidersData(),
168
174
  getProvidersCDNData(),
169
175
  ]);
170
176
 
171
- // Transform and merge fetched data
172
177
  const transformedProvidersData = transformData(providersData);
173
178
  const finalProvidersData = mergeProviderData(transformedProvidersData, providersExtraData);
179
+ providerDataCache = finalProvidersData;
174
180
 
175
181
  return finalProvidersData;
176
182
  } catch (error) {
177
183
  console.error("Error fetching or processing provider data:", error);
178
184
  const transformedProvidersData = transformData(swapProviders);
179
185
  const finalProvidersData = mergeProviderData(transformedProvidersData, swapAdditionData);
186
+ providerDataCache = finalProvidersData;
187
+
180
188
  return finalProvidersData;
181
189
  }
182
190
  };
@@ -11,8 +11,9 @@ describe("fetchCurrencyAll", () => {
11
11
  (network as jest.Mock).mockImplementation(() => ({
12
12
  data: fetchCurrencyAllMock,
13
13
  }));
14
+ const providers = ["changelly", "cic", "moonpay", "oneinch", "paraswap"];
14
15
 
15
- const result = await fetchCurrencyAll({});
16
+ const result = await fetchCurrencyAll({ providers });
16
17
 
17
18
  expect(result).toStrictEqual(flattenV5CurrenciesAll(fetchCurrencyAllMock));
18
19
  expect(network as jest.Mock).toHaveBeenCalledWith({
@@ -12,8 +12,11 @@ describe("fetchCurrencyFrom", () => {
12
12
  data: fetchCurrencyFromMock,
13
13
  }));
14
14
 
15
+ const providers = ["changelly", "cic", "moonpay", "oneinch", "paraswap"];
16
+
15
17
  const result = await fetchCurrencyFrom({
16
18
  currencyTo: "bitcoin",
19
+ providers,
17
20
  });
18
21
 
19
22
  expect(result).toStrictEqual(flattenV5CurrenciesToAndFrom(fetchCurrencyFromMock));
@@ -9,15 +9,16 @@ import { flattenV5CurrenciesToAndFrom } from "../../../utils/flattenV5Currencies
9
9
  jest.mock("@ledgerhq/live-network/network");
10
10
 
11
11
  const mockNetwork = network as jest.Mock;
12
+ const providers = ["changelly", "cic", "moonpay", "oneinch", "paraswap"];
12
13
 
13
14
  describe("fetchCurrencyFrom", () => {
14
15
  it("success with 200", async () => {
15
16
  mockNetwork.mockReturnValueOnce({
16
17
  data: fetchCurrencyToMock,
17
18
  });
18
-
19
19
  const result = await fetchCurrencyTo({
20
20
  currencyFromId: "bitcoin",
21
+ providers,
21
22
  });
22
23
 
23
24
  expect(result).toStrictEqual(flattenV5CurrenciesToAndFrom(fetchCurrencyToMock));
@@ -34,6 +35,7 @@ describe("fetchCurrencyFrom", () => {
34
35
  try {
35
36
  await fetchCurrencyTo({
36
37
  currencyFromId: "bitcoin",
38
+ providers,
37
39
  });
38
40
  } catch (e) {
39
41
  expect(e).toBeInstanceOf(LedgerAPI4xx);
@@ -6,11 +6,12 @@ import { fetchCurrencyAllMock } from "./__mocks__/fetchCurrencyAll.mocks";
6
6
  import { ResponseData as ResponseDataTo } from "./fetchCurrencyTo";
7
7
  import { ResponseData as ResponseDataFrom } from "./fetchCurrencyFrom";
8
8
  import { flattenV5CurrenciesAll } from "../../utils/flattenV5CurrenciesAll";
9
- import { getSwapAPIBaseURL, getSwapUserIP, getAvailableProviders } from "../..";
9
+ import { getSwapAPIBaseURL, getSwapUserIP } from "../..";
10
10
  import { getEnv } from "@ledgerhq/live-env";
11
11
 
12
12
  type Props = {
13
13
  additionalCoinsFlag?: boolean;
14
+ providers: string[];
14
15
  };
15
16
 
16
17
  export type ResponseDataAll = {
@@ -18,11 +19,10 @@ export type ResponseDataAll = {
18
19
  to: ResponseDataTo["currencyGroups"];
19
20
  };
20
21
 
21
- export async function fetchCurrencyAll({ additionalCoinsFlag = false }: Props) {
22
+ export async function fetchCurrencyAll({ providers, additionalCoinsFlag = false }: Props) {
22
23
  if (getEnv("MOCK") || getEnv("PLAYWRIGHT_RUN"))
23
24
  return Promise.resolve(flattenV5CurrenciesAll(fetchCurrencyAllMock));
24
25
 
25
- const providers = getAvailableProviders();
26
26
  const url = new URL(`${getSwapAPIBaseURL()}/currencies/all`);
27
27
  url.searchParams.append("providers-whitelist", providers.join(","));
28
28
  url.searchParams.append("additional-coins-flag", additionalCoinsFlag.toString());
@@ -2,11 +2,12 @@ import network from "@ledgerhq/live-network/network";
2
2
  import { DEFAULT_SWAP_TIMEOUT_MS } from "../../const/timeout";
3
3
  import { flattenV5CurrenciesToAndFrom } from "../../utils/flattenV5CurrenciesToAndFrom";
4
4
  import { fetchCurrencyFromMock } from "./__mocks__/fetchCurrencyFrom.mocks";
5
- import { getAvailableProviders, getSwapAPIBaseURL, getSwapUserIP } from "../..";
5
+ import { getSwapAPIBaseURL, getSwapUserIP } from "../..";
6
6
  import { getEnv } from "@ledgerhq/live-env";
7
7
 
8
8
  type Props = {
9
9
  currencyTo?: string;
10
+ providers: string[];
10
11
  additionalCoinsFlag?: boolean;
11
12
  };
12
13
 
@@ -17,13 +18,16 @@ export type ResponseData = {
17
18
  }>;
18
19
  };
19
20
 
20
- export async function fetchCurrencyFrom({ currencyTo, additionalCoinsFlag = false }: Props) {
21
+ export async function fetchCurrencyFrom({
22
+ currencyTo,
23
+ providers,
24
+ additionalCoinsFlag = false,
25
+ }: Props) {
21
26
  if (getEnv("MOCK") || getEnv("PLAYWRIGHT_RUN"))
22
27
  return flattenV5CurrenciesToAndFrom(fetchCurrencyFromMock);
23
28
 
24
29
  const headers = getSwapUserIP();
25
30
  const url = new URL(`${getSwapAPIBaseURL()}/currencies/from`);
26
- const providers = getAvailableProviders();
27
31
  url.searchParams.append("providers-whitelist", providers.join(","));
28
32
  url.searchParams.append("additional-coins-flag", additionalCoinsFlag.toString());
29
33
 
@@ -5,10 +5,11 @@ import { DEFAULT_SWAP_TIMEOUT_MS } from "../../const/timeout";
5
5
  import axios from "axios";
6
6
  import { LedgerAPI4xx } from "@ledgerhq/errors";
7
7
  import { flattenV5CurrenciesToAndFrom } from "../../utils/flattenV5CurrenciesToAndFrom";
8
- import { getAvailableProviders, getSwapAPIBaseURL, getSwapUserIP } from "../..";
8
+ import { getSwapAPIBaseURL, getSwapUserIP } from "../..";
9
9
 
10
10
  type Props = {
11
11
  currencyFromId?: string;
12
+ providers: string[];
12
13
  additionalCoinsFlag?: boolean;
13
14
  };
14
15
 
@@ -20,13 +21,16 @@ type CurrencyGroup = {
20
21
  supportedCurrencies: string[];
21
22
  };
22
23
 
23
- export async function fetchCurrencyTo({ currencyFromId, additionalCoinsFlag = false }: Props) {
24
+ export async function fetchCurrencyTo({
25
+ currencyFromId,
26
+ providers,
27
+ additionalCoinsFlag = false,
28
+ }: Props) {
24
29
  if (isIntegrationTestEnv())
25
30
  return Promise.resolve(flattenV5CurrenciesToAndFrom(fetchCurrencyToMock));
26
31
 
27
32
  const url = new URL(`${getSwapAPIBaseURL()}/currencies/to`);
28
33
 
29
- const providers = getAvailableProviders();
30
34
  url.searchParams.append("providers-whitelist", providers.join(","));
31
35
  url.searchParams.append("additional-coins-flag", additionalCoinsFlag.toString());
32
36
  url.searchParams.append("currency-from", currencyFromId!);
@@ -8,10 +8,10 @@ import { SwapGenericAPIError } from "../../../../errors";
8
8
  import { enrichRatesResponse } from "../../utils/enrichRatesResponse";
9
9
  import { isIntegrationTestEnv } from "../../utils/isIntegrationTestEnv";
10
10
  import { fetchRatesMock } from "./__mocks__/fetchRates.mocks";
11
- import { getAvailableProviders, getSwapAPIBaseURL, getSwapUserIP } from "../..";
11
+ import { getSwapAPIBaseURL, getSwapUserIP } from "../..";
12
12
 
13
13
  type Props = {
14
- removeProviders: Array<string>;
14
+ providers: Array<string>;
15
15
  currencyFrom?: string;
16
16
  toCurrencyId?: string;
17
17
  fromCurrencyAmount: string;
@@ -76,7 +76,7 @@ export const throwRateError = (response: ExchangeRate[]) => {
76
76
  };
77
77
 
78
78
  export async function fetchRates({
79
- removeProviders,
79
+ providers,
80
80
  currencyFrom,
81
81
  toCurrencyId,
82
82
  unitTo,
@@ -90,10 +90,6 @@ export async function fetchRates({
90
90
  }
91
91
 
92
92
  const url = new URL(`${getSwapAPIBaseURL()}/rate`);
93
- const providers = await getAvailableProviders();
94
- removeProviders.forEach(provider => {
95
- providers.splice(providers.indexOf(provider), 1);
96
- });
97
93
  const requestBody = {
98
94
  from: currencyFrom,
99
95
  to: toCurrencyId,
@@ -24,6 +24,7 @@ import { getSwapProvider } from "../providers";
24
24
  import { convertToAppExchangePartnerKey } from "../providers";
25
25
  import { CompleteExchangeStep, convertTransportError } from "../error";
26
26
  import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName";
27
+ import { TronSendTrc20ToNewAccountForbidden } from "../../families/tron/errors";
27
28
 
28
29
  const withDevicePromise = (deviceId, fn) =>
29
30
  firstValueFrom(withDevice(deviceId)(transport => from(fn(transport))));
@@ -74,7 +75,10 @@ const completeExchange = (
74
75
  );
75
76
  if (unsubscribed) return;
76
77
 
77
- const errorsKeys = Object.keys(errors);
78
+ const errorsKeys = Object.keys(errors).filter(item =>
79
+ [TronSendTrc20ToNewAccountForbidden.prototype.name].includes(item),
80
+ );
81
+
78
82
  if (errorsKeys.length > 0) throw errors[errorsKeys[0]]; // throw the first error
79
83
 
80
84
  currentStep = "SET_PARTNER_KEY";
@@ -1,3 +1,5 @@
1
+ import { getAccountCurrency, getFeesUnit } from "@ledgerhq/coin-framework/account/index";
2
+ import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies/index";
1
3
  import {
2
4
  AmountRequired,
3
5
  FeeNotLoaded,
@@ -5,22 +7,20 @@ import {
5
7
  NotEnoughGas,
6
8
  NotEnoughGasSwap,
7
9
  } from "@ledgerhq/errors";
10
+ import { Account } from "@ledgerhq/types-live";
8
11
  import { useMemo } from "react";
12
+ import useBridgeTransaction, { Result } from "../../../bridge/useBridgeTransaction";
13
+ import { Transaction } from "../../../generated/types";
9
14
  import {
10
- SwapSelectorStateType,
15
+ ExchangeRate,
11
16
  OnNoRatesCallback,
17
+ SwapSelectorStateType,
12
18
  SwapTransactionType,
13
- ExchangeRate,
14
19
  } from "../types";
15
- import useBridgeTransaction, { Result } from "../../../bridge/useBridgeTransaction";
16
20
  import { useFromState } from "./useFromState";
17
- import { useToState } from "./useToState";
18
21
  import { useReverseAccounts } from "./useReverseAccounts";
19
- import { Account } from "@ledgerhq/types-live";
22
+ import { useToState } from "./useToState";
20
23
  import { useUpdateMaxAmount } from "./useUpdateMaxAmount";
21
- import { Transaction } from "../../../generated/types";
22
- import { getAccountCurrency, getFeesUnit } from "@ledgerhq/coin-framework/account/index";
23
- import { formatCurrencyUnit } from "@ledgerhq/coin-framework/currencies/index";
24
24
  import { useProviderRates } from "./v5/useProviderRates";
25
25
 
26
26
  export const selectorStateDefaultValues = {
@@ -98,6 +98,7 @@ type UseSwapTransactionProps = {
98
98
  excludeFixedRates?: boolean;
99
99
  refreshRate?: number;
100
100
  allowRefresh?: boolean;
101
+ isEnabled?: boolean;
101
102
  };
102
103
 
103
104
  export const useSwapTransaction = ({
@@ -110,7 +111,8 @@ export const useSwapTransaction = ({
110
111
  excludeFixedRates,
111
112
  refreshRate,
112
113
  allowRefresh,
113
- }: UseSwapTransactionProps = {}): SwapTransactionType => {
114
+ isEnabled,
115
+ }: UseSwapTransactionProps): SwapTransactionType => {
114
116
  const bridgeTransaction = useBridgeTransaction(() => ({
115
117
  account: defaultAccount,
116
118
  parentAccount: defaultParentAccount,
@@ -165,6 +167,7 @@ export const useSwapTransaction = ({
165
167
  setExchangeRate,
166
168
  countdown: refreshRate,
167
169
  allowRefresh,
170
+ isEnabled,
168
171
  });
169
172
 
170
173
  return {
@@ -1,17 +1,21 @@
1
1
  import { useFeature } from "../../../../featureFlags";
2
2
  import { useAPI } from "../../../../hooks/useAPI";
3
3
  import { fetchCurrencyAll } from "../../api/v5";
4
+ import { useFilteredProviders } from "./useFilteredProviders";
4
5
 
5
6
  export function useFetchCurrencyAll() {
6
7
  const fetchAdditionalCoins = useFeature("fetchAdditionalCoins");
8
+ const { providers, loading, error } = useFilteredProviders();
7
9
 
8
10
  const { data, ...rest } = useAPI({
9
11
  queryFn: fetchCurrencyAll,
10
12
  queryProps: {
11
13
  additionalCoinsFlag: fetchAdditionalCoins?.enabled,
14
+ providers,
12
15
  },
13
16
  // assume the all currency list for the given props won't change during a users session.
14
17
  staleTimeout: Infinity,
18
+ enabled: !loading && !error,
15
19
  });
16
20
  return {
17
21
  ...rest,
@@ -1,6 +1,7 @@
1
1
  import { useFeature } from "../../../../featureFlags";
2
2
  import { useAPI } from "../../../../hooks/useAPI";
3
3
  import { fetchCurrencyFrom } from "../../api/v5/fetchCurrencyFrom";
4
+ import { useFilteredProviders } from "./useFilteredProviders";
4
5
 
5
6
  type Props = {
6
7
  currencyTo?: string;
@@ -10,15 +11,17 @@ type Props = {
10
11
 
11
12
  export function useFetchCurrencyFrom({ currencyTo, enabled }: Props = {}) {
12
13
  const fetchAdditionalCoins = useFeature("fetchAdditionalCoins");
14
+ const { providers, loading, error } = useFilteredProviders();
13
15
 
14
16
  return useAPI({
15
17
  queryFn: fetchCurrencyFrom,
16
18
  queryProps: {
17
19
  currencyTo,
18
20
  additionalCoinsFlag: fetchAdditionalCoins?.enabled,
21
+ providers,
19
22
  },
20
23
  // assume a currency list for the given props won't change during a users session.
21
24
  staleTimeout: Infinity,
22
- enabled,
25
+ enabled: enabled && !loading && !error,
23
26
  });
24
27
  }
@@ -4,6 +4,7 @@ import { getAccountCurrency } from "@ledgerhq/coin-framework/account/helpers";
4
4
  import { fetchCurrencyTo } from "../../api/v5";
5
5
  import { useAPI } from "../../../../hooks/useAPI";
6
6
  import { useFeature } from "../../../../featureFlags";
7
+ import { useFilteredProviders } from "./useFilteredProviders";
7
8
 
8
9
  type Props = {
9
10
  fromCurrencyAccount: AccountLike | undefined;
@@ -12,6 +13,7 @@ type Props = {
12
13
 
13
14
  export function useFetchCurrencyTo({ fromCurrencyAccount }: Props) {
14
15
  const fetchAdditionalCoins = useFeature("fetchAdditionalCoins");
16
+ const { providers, loading, error } = useFilteredProviders();
15
17
 
16
18
  const currencyFromId = fromCurrencyAccount
17
19
  ? getAccountCurrency(fromCurrencyAccount).id
@@ -21,10 +23,10 @@ export function useFetchCurrencyTo({ fromCurrencyAccount }: Props) {
21
23
  queryFn: fetchCurrencyTo,
22
24
  queryProps: {
23
25
  currencyFromId,
26
+ providers,
24
27
  additionalCoinsFlag: fetchAdditionalCoins?.enabled,
25
28
  },
26
- // assume a currency list for the given props won't change during a users session.
27
29
  staleTimeout: Infinity,
28
- enabled: !!currencyFromId,
30
+ enabled: !!currencyFromId && !loading && !error,
29
31
  });
30
32
  }
@@ -1,17 +1,18 @@
1
- import { AccountLike } from "@ledgerhq/types-live";
2
1
  import { getAccountCurrency } from "@ledgerhq/coin-framework/account/helpers";
3
2
  import { CryptoOrTokenCurrency } from "@ledgerhq/types-cryptoassets";
3
+ import { AccountLike } from "@ledgerhq/types-live";
4
4
  import BigNumber from "bignumber.js";
5
5
  import { fetchRates } from "../../api/v5/fetchRates";
6
6
  import { useAPI } from "../../../../hooks/useAPI";
7
7
  import { ExchangeRate } from "../../types";
8
- import { useFeature } from "../../../../featureFlags";
8
+ import { useFilteredProviders } from "./useFilteredProviders";
9
9
 
10
10
  type Props = {
11
11
  fromCurrencyAccount: AccountLike | undefined;
12
12
  toCurrency: CryptoOrTokenCurrency | undefined;
13
13
  fromCurrencyAmount: BigNumber;
14
14
  onSuccess?(data: ExchangeRate[]): void;
15
+ isEnabled?: boolean;
15
16
  };
16
17
 
17
18
  export function useFetchRates({
@@ -19,25 +20,22 @@ export function useFetchRates({
19
20
  toCurrency,
20
21
  fromCurrencyAmount,
21
22
  onSuccess,
23
+ isEnabled = true,
22
24
  }: Props) {
23
25
  const currencyFrom = fromCurrencyAccount ? getAccountCurrency(fromCurrencyAccount).id : undefined;
24
26
  const unitFrom = fromCurrencyAccount
25
27
  ? getAccountCurrency(fromCurrencyAccount).units[0]
26
28
  : undefined;
27
29
  const unitTo = toCurrency?.units[0];
28
- const moonpayFF = useFeature("ptxSwapMoonpayProvider");
29
- const removeProviders: string[] = [];
30
30
  const formattedCurrencyAmount =
31
31
  (unitFrom && `${fromCurrencyAmount.shiftedBy(-unitFrom.magnitude)}`) ?? "0";
32
+ const { providers, loading, error } = useFilteredProviders();
32
33
 
33
- if (!moonpayFF?.enabled) {
34
- removeProviders.push("moonpay");
35
- }
36
34
  const toCurrencyId = toCurrency?.id;
37
35
  return useAPI({
38
36
  queryFn: fetchRates,
39
37
  queryProps: {
40
- removeProviders: [],
38
+ providers,
41
39
  unitTo: unitTo!,
42
40
  unitFrom: unitFrom!,
43
41
  currencyFrom,
@@ -45,7 +43,15 @@ export function useFetchRates({
45
43
  fromCurrencyAmount: formattedCurrencyAmount,
46
44
  },
47
45
  staleTimeout: 20000,
48
- enabled: !!toCurrencyId && !!currencyFrom && fromCurrencyAmount.gt(0) && !!unitFrom && !!unitTo,
46
+ enabled:
47
+ !!toCurrencyId &&
48
+ !!currencyFrom &&
49
+ fromCurrencyAmount.gt(0) &&
50
+ !!unitFrom &&
51
+ !!unitTo &&
52
+ !loading &&
53
+ isEnabled &&
54
+ !error,
49
55
  onSuccess,
50
56
  });
51
57
  }
@@ -0,0 +1,42 @@
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import { useFeature } from "../../../../featureFlags";
3
+ import { fetchAndMergeProviderData } from "../../../providers/swap";
4
+
5
+ export const useFilteredProviders = () => {
6
+ const [providers, setProviders] = useState<string[]>([]);
7
+ const [loading, setLoading] = useState(true);
8
+ const [error, setError] = useState<unknown>(null);
9
+
10
+ const ptxSwapMoonpayProviderFlag = useFeature("ptxSwapMoonpayProvider");
11
+ const ptxSwapExodusProviderFlag = useFeature("ptxSwapExodusProvider");
12
+ const ptxSwapThorswapProviderFlag = useFeature("ptxSwapThorswapProvider");
13
+
14
+ const fetchProviders = useCallback(async () => {
15
+ try {
16
+ const data = await fetchAndMergeProviderData();
17
+
18
+ let filteredProviders = Object.keys(data);
19
+ if (!ptxSwapMoonpayProviderFlag?.enabled) {
20
+ filteredProviders = filteredProviders.filter(provider => provider !== "moonpay");
21
+ }
22
+ if (!ptxSwapExodusProviderFlag?.enabled) {
23
+ filteredProviders = filteredProviders.filter(provider => provider !== "exodus");
24
+ }
25
+ if (!ptxSwapThorswapProviderFlag?.enabled) {
26
+ filteredProviders = filteredProviders.filter(provider => provider !== "thorswap");
27
+ }
28
+
29
+ setProviders(filteredProviders);
30
+ } catch (error) {
31
+ setError(error);
32
+ } finally {
33
+ setLoading(false);
34
+ }
35
+ }, [ptxSwapMoonpayProviderFlag, ptxSwapExodusProviderFlag, ptxSwapThorswapProviderFlag]);
36
+
37
+ useEffect(() => {
38
+ fetchProviders();
39
+ }, [fetchProviders]);
40
+
41
+ return { providers, loading, error };
42
+ };
@@ -2,8 +2,7 @@ import BigNumber from "bignumber.js";
2
2
  import { OnNoRatesCallback, RatesReducerState, SwapSelectorStateType } from "../../types";
3
3
  import { useFetchRates } from "./useFetchRates";
4
4
  import { SetExchangeRateCallback } from "../useSwapTransaction";
5
- import { useFeature } from "../../../../featureFlags";
6
- import { useCallback, useEffect } from "react";
5
+ import { useEffect } from "react";
7
6
  import { useCountdown } from "usehooks-ts";
8
7
  import { DEFAULT_SWAP_RATES_INTERVAL_MS } from "../../const/timeout";
9
8
 
@@ -14,6 +13,7 @@ type Props = {
14
13
  setExchangeRate?: SetExchangeRateCallback | null | undefined;
15
14
  countdown?: number;
16
15
  allowRefresh?: boolean;
16
+ isEnabled?: boolean;
17
17
  };
18
18
 
19
19
  export type UseProviderRatesResponse = {
@@ -29,20 +29,13 @@ export function useProviderRates({
29
29
  onNoRates,
30
30
  setExchangeRate,
31
31
  allowRefresh = true,
32
+ isEnabled = true,
32
33
  ...props
33
34
  }: Props): UseProviderRatesResponse {
34
35
  const [countdown, { startCountdown, resetCountdown, stopCountdown }] = useCountdown({
35
36
  countStart: props.countdown ?? DEFAULT_SWAP_RATES_INTERVAL_MS / 1000,
36
37
  countStop: 0,
37
38
  });
38
- const ptxSwapMoonpayProviderFlag = useFeature("ptxSwapMoonpayProvider");
39
- const filterMoonpay = useCallback(
40
- rates => {
41
- if (!rates || ptxSwapMoonpayProviderFlag?.enabled) return rates;
42
- return rates.filter(r => r.provider !== "moonpay");
43
- },
44
- [ptxSwapMoonpayProviderFlag?.enabled],
45
- );
46
39
 
47
40
  const { data, isLoading, error, refetch } = useFetchRates({
48
41
  fromCurrencyAccount: fromState.account,
@@ -50,15 +43,15 @@ export function useProviderRates({
50
43
  fromCurrencyAmount: fromState.amount ?? BigNumber(0),
51
44
  onSuccess(data) {
52
45
  resetCountdown();
53
- const rates = filterMoonpay(data);
54
- if (rates.length === 0) {
46
+ if (data.length === 0) {
55
47
  stopCountdown();
56
48
  onNoRates?.({ fromState, toState });
57
49
  } else {
58
50
  startCountdown();
59
- setExchangeRate?.(rates[0]);
51
+ setExchangeRate?.(data[0]);
60
52
  }
61
53
  },
54
+ isEnabled,
62
55
  });
63
56
 
64
57
  useEffect(() => {
@@ -112,7 +105,7 @@ export function useProviderRates({
112
105
  return {
113
106
  rates: {
114
107
  status: "success",
115
- value: filterMoonpay(data),
108
+ value: data,
116
109
  error: undefined,
117
110
  },
118
111
  refetchRates: refetch,
@@ -30,6 +30,7 @@ import { decodePayloadProtobuf } from "@ledgerhq/hw-app-exchange";
30
30
  import { getSwapProvider } from "../providers";
31
31
  import { convertToAppExchangePartnerKey } from "../providers";
32
32
  import { getDefaultAccountName } from "@ledgerhq/live-wallet/accountName";
33
+ import { TronSendTrc20ToNewAccountForbidden } from "../../families/tron/errors";
33
34
 
34
35
  const withDevicePromise = (deviceId, fn) =>
35
36
  firstValueFrom(withDevice(deviceId)(transport => from(fn(transport))));
@@ -160,7 +161,10 @@ const initSwap = (input: InitSwapInput): Observable<SwapRequestEvent> => {
160
161
  transaction,
161
162
  );
162
163
  if (unsubscribed) return;
163
- const errorsKeys = Object.keys(errors);
164
+
165
+ const errorsKeys = Object.keys(errors).filter(item =>
166
+ [TronSendTrc20ToNewAccountForbidden.prototype.name].includes(item),
167
+ );
164
168
 
165
169
  if (errorsKeys.length > 0) {
166
170
  throw errors[errorsKeys[0]]; // throw the first error
@@ -103,7 +103,7 @@ const prepareTransaction = async (a: CosmosAccount, t: Transaction): Promise<Tra
103
103
  return {
104
104
  ...t,
105
105
  gas: new BigNumber(1),
106
- fees: new BigNumber(500),
106
+ fees: new BigNumber(375),
107
107
  networkInfo: {
108
108
  family: "cosmos",
109
109
  fees: new BigNumber(500),