@ledgerhq/live-common 34.52.0-nightly.2 → 34.52.0-nightly.20251031023756
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.
- package/lib/__tests__/test-helpers/environment.js +2 -0
- package/lib/__tests__/test-helpers/environment.js.map +1 -1
- package/lib/apps/config.js +1 -1
- package/lib/bridge/generic-alpaca/getAccountShape.d.ts.map +1 -1
- package/lib/bridge/generic-alpaca/getAccountShape.js +7 -1
- package/lib/bridge/generic-alpaca/getAccountShape.js.map +1 -1
- package/lib/bridge/generic-alpaca/utils.d.ts.map +1 -1
- package/lib/bridge/generic-alpaca/utils.js +5 -4
- package/lib/bridge/generic-alpaca/utils.js.map +1 -1
- package/lib/dada-client/hooks/useAssetsData.d.ts +4 -10
- package/lib/dada-client/hooks/useAssetsData.d.ts.map +1 -1
- package/lib/dada-client/hooks/useAssetsData.js +2 -1
- package/lib/dada-client/hooks/useAssetsData.js.map +1 -1
- package/lib/dada-client/hooks/useInterestRatesByCurrencies.d.ts +5 -1
- package/lib/dada-client/hooks/useInterestRatesByCurrencies.d.ts.map +1 -1
- package/lib/dada-client/hooks/useMarketByCurrencies.d.ts +4 -1
- package/lib/dada-client/hooks/useMarketByCurrencies.d.ts.map +1 -1
- package/lib/dada-client/state-manager/api.d.ts.map +1 -1
- package/lib/dada-client/state-manager/api.js +3 -0
- package/lib/dada-client/state-manager/api.js.map +1 -1
- package/lib/dada-client/state-manager/types.d.ts +1 -0
- package/lib/dada-client/state-manager/types.d.ts.map +1 -1
- package/lib/deposit/helper.d.ts.map +1 -1
- package/lib/deposit/helper.js +54 -1
- package/lib/deposit/helper.js.map +1 -1
- package/lib/e2e/data/deviceLabelsData.d.ts.map +1 -1
- package/lib/e2e/data/deviceLabelsData.js +38 -33
- package/lib/e2e/data/deviceLabelsData.js.map +1 -1
- package/lib/e2e/deviceInteraction/TouchDeviceSimulator.d.ts.map +1 -1
- package/lib/e2e/deviceInteraction/TouchDeviceSimulator.js +13 -5
- package/lib/e2e/deviceInteraction/TouchDeviceSimulator.js.map +1 -1
- package/lib/e2e/enum/Account.d.ts +0 -1
- package/lib/e2e/enum/Account.d.ts.map +1 -1
- package/lib/e2e/enum/Account.js +0 -1
- package/lib/e2e/enum/Account.js.map +1 -1
- package/lib/e2e/enum/Currency.d.ts +0 -1
- package/lib/e2e/enum/Currency.d.ts.map +1 -1
- package/lib/e2e/enum/Currency.js +0 -1
- package/lib/e2e/enum/Currency.js.map +1 -1
- package/lib/e2e/enum/Device.d.ts +1 -0
- package/lib/e2e/enum/Device.d.ts.map +1 -1
- package/lib/e2e/enum/Device.js +1 -0
- package/lib/e2e/enum/Device.js.map +1 -1
- package/lib/e2e/enum/DeviceLabels.d.ts +2 -0
- package/lib/e2e/enum/DeviceLabels.d.ts.map +1 -1
- package/lib/e2e/enum/DeviceLabels.js +2 -0
- package/lib/e2e/enum/DeviceLabels.js.map +1 -1
- package/lib/e2e/families/bitcoin.js +1 -1
- package/lib/e2e/families/bitcoin.js.map +1 -1
- package/lib/e2e/families/cardano.d.ts.map +1 -1
- package/lib/e2e/families/cardano.js +12 -11
- package/lib/e2e/families/cardano.js.map +1 -1
- package/lib/e2e/families/evm.d.ts.map +1 -1
- package/lib/e2e/families/evm.js +4 -3
- package/lib/e2e/families/evm.js.map +1 -1
- package/lib/e2e/families/solana.d.ts.map +1 -1
- package/lib/e2e/families/solana.js +1 -1
- package/lib/e2e/families/solana.js.map +1 -1
- package/lib/e2e/index.d.ts +8 -2
- package/lib/e2e/index.d.ts.map +1 -1
- package/lib/e2e/speculos.d.ts +2 -0
- package/lib/e2e/speculos.d.ts.map +1 -1
- package/lib/e2e/speculos.js +10 -3
- package/lib/e2e/speculos.js.map +1 -1
- package/lib/e2e/speculosAppVersion.d.ts.map +1 -1
- package/lib/e2e/speculosAppVersion.js +5 -2
- package/lib/e2e/speculosAppVersion.js.map +1 -1
- package/lib/e2e/speculosCI.d.ts.map +1 -1
- package/lib/e2e/speculosCI.js +4 -0
- package/lib/e2e/speculosCI.js.map +1 -1
- package/lib/env.react.d.ts +1 -1
- package/lib/env.react.d.ts.map +1 -1
- package/lib/exchange/swap/getIncompatibleCurrencyKeys.d.ts.map +1 -1
- package/lib/exchange/swap/getIncompatibleCurrencyKeys.js +4 -0
- package/lib/exchange/swap/getIncompatibleCurrencyKeys.js.map +1 -1
- package/lib/exchange/swap/transactionStrategies.d.ts +3 -0
- package/lib/exchange/swap/transactionStrategies.d.ts.map +1 -1
- package/lib/exchange/swap/transactionStrategies.js +12 -2
- package/lib/exchange/swap/transactionStrategies.js.map +1 -1
- package/lib/families/canton/bridge/mock.d.ts +2 -2
- package/lib/families/canton/bridge/mock.d.ts.map +1 -1
- package/lib/families/canton/bridge/mock.js +3 -0
- package/lib/families/canton/bridge/mock.js.map +1 -1
- package/lib/families/canton/config.d.ts.map +1 -1
- package/lib/families/canton/config.js +3 -0
- package/lib/families/canton/config.js.map +1 -1
- package/lib/families/canton/setup.d.ts +3 -3
- package/lib/families/canton/setup.d.ts.map +1 -1
- package/lib/families/canton/setup.js.map +1 -1
- package/lib/families/evm/config.d.ts.map +1 -1
- package/lib/families/evm/config.js +18 -1
- package/lib/families/evm/config.js.map +1 -1
- package/lib/families/hedera/utils.d.ts +2 -0
- package/lib/families/hedera/utils.d.ts.map +1 -0
- package/lib/families/hedera/{logic.js → utils.js} +2 -2
- package/lib/families/hedera/utils.js.map +1 -0
- package/lib/families/sui/react.d.ts.map +1 -1
- package/lib/families/sui/react.js +1 -0
- package/lib/families/sui/react.js.map +1 -1
- package/lib/featureFlags/defaultFeatures.d.ts +3 -0
- package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
- package/lib/featureFlags/defaultFeatures.js +3 -1
- package/lib/featureFlags/defaultFeatures.js.map +1 -1
- package/lib/featureFlags/useFeature.d.ts +1 -1
- package/lib/featureFlags/useFeature.d.ts.map +1 -1
- package/lib/generated/bridge/js.d.ts +1 -1
- package/lib/generated/bridge/mock.d.ts +1 -1
- package/lib/generated/deviceTransactionConfig.d.ts +1 -1
- package/lib/generated/specs.d.ts +1 -0
- package/lib/generated/specs.d.ts.map +1 -1
- package/lib/hooks/useDeviceTransactionConfig.d.ts +19 -0
- package/lib/hooks/useDeviceTransactionConfig.d.ts.map +1 -0
- package/lib/hooks/useDeviceTransactionConfig.js +45 -0
- package/lib/hooks/useDeviceTransactionConfig.js.map +1 -0
- package/lib/hw/connectAppEventMapper.d.ts.map +1 -1
- package/lib/hw/connectAppEventMapper.js +2 -2
- package/lib/hw/connectAppEventMapper.js.map +1 -1
- package/lib/load/speculos.d.ts.map +1 -1
- package/lib/load/speculos.js +1 -0
- package/lib/load/speculos.js.map +1 -1
- package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.d.ts.map +1 -1
- package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js +7 -0
- package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js.map +1 -1
- package/lib/postOnboarding/hooks/useAutoDismissPostOnboardingEntryPoint.js.map +1 -1
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.d.ts.map +1 -1
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.js +7 -6
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.js.map +1 -1
- package/lib/transaction/deviceTransactionConfig.d.ts +1 -1
- package/lib/transaction/deviceTransactionConfig.d.ts.map +1 -1
- package/lib/transaction/deviceTransactionConfig.js +2 -2
- package/lib/transaction/deviceTransactionConfig.js.map +1 -1
- package/lib-es/__tests__/test-helpers/environment.js +2 -0
- package/lib-es/__tests__/test-helpers/environment.js.map +1 -1
- package/lib-es/apps/config.js +1 -1
- package/lib-es/bridge/generic-alpaca/getAccountShape.d.ts.map +1 -1
- package/lib-es/bridge/generic-alpaca/getAccountShape.js +7 -1
- package/lib-es/bridge/generic-alpaca/getAccountShape.js.map +1 -1
- package/lib-es/bridge/generic-alpaca/utils.d.ts.map +1 -1
- package/lib-es/bridge/generic-alpaca/utils.js +5 -4
- package/lib-es/bridge/generic-alpaca/utils.js.map +1 -1
- package/lib-es/dada-client/hooks/useAssetsData.d.ts +4 -10
- package/lib-es/dada-client/hooks/useAssetsData.d.ts.map +1 -1
- package/lib-es/dada-client/hooks/useAssetsData.js +2 -1
- package/lib-es/dada-client/hooks/useAssetsData.js.map +1 -1
- package/lib-es/dada-client/hooks/useInterestRatesByCurrencies.d.ts +5 -1
- package/lib-es/dada-client/hooks/useInterestRatesByCurrencies.d.ts.map +1 -1
- package/lib-es/dada-client/hooks/useMarketByCurrencies.d.ts +4 -1
- package/lib-es/dada-client/hooks/useMarketByCurrencies.d.ts.map +1 -1
- package/lib-es/dada-client/state-manager/api.d.ts.map +1 -1
- package/lib-es/dada-client/state-manager/api.js +3 -0
- package/lib-es/dada-client/state-manager/api.js.map +1 -1
- package/lib-es/dada-client/state-manager/types.d.ts +1 -0
- package/lib-es/dada-client/state-manager/types.d.ts.map +1 -1
- package/lib-es/deposit/helper.d.ts.map +1 -1
- package/lib-es/deposit/helper.js +54 -1
- package/lib-es/deposit/helper.js.map +1 -1
- package/lib-es/e2e/data/deviceLabelsData.d.ts.map +1 -1
- package/lib-es/e2e/data/deviceLabelsData.js +38 -33
- package/lib-es/e2e/data/deviceLabelsData.js.map +1 -1
- package/lib-es/e2e/deviceInteraction/TouchDeviceSimulator.d.ts.map +1 -1
- package/lib-es/e2e/deviceInteraction/TouchDeviceSimulator.js +13 -5
- package/lib-es/e2e/deviceInteraction/TouchDeviceSimulator.js.map +1 -1
- package/lib-es/e2e/enum/Account.d.ts +0 -1
- package/lib-es/e2e/enum/Account.d.ts.map +1 -1
- package/lib-es/e2e/enum/Account.js +0 -1
- package/lib-es/e2e/enum/Account.js.map +1 -1
- package/lib-es/e2e/enum/Currency.d.ts +0 -1
- package/lib-es/e2e/enum/Currency.d.ts.map +1 -1
- package/lib-es/e2e/enum/Currency.js +0 -1
- package/lib-es/e2e/enum/Currency.js.map +1 -1
- package/lib-es/e2e/enum/Device.d.ts +1 -0
- package/lib-es/e2e/enum/Device.d.ts.map +1 -1
- package/lib-es/e2e/enum/Device.js +1 -0
- package/lib-es/e2e/enum/Device.js.map +1 -1
- package/lib-es/e2e/enum/DeviceLabels.d.ts +2 -0
- package/lib-es/e2e/enum/DeviceLabels.d.ts.map +1 -1
- package/lib-es/e2e/enum/DeviceLabels.js +2 -0
- package/lib-es/e2e/enum/DeviceLabels.js.map +1 -1
- package/lib-es/e2e/families/bitcoin.js +1 -1
- package/lib-es/e2e/families/bitcoin.js.map +1 -1
- package/lib-es/e2e/families/cardano.d.ts.map +1 -1
- package/lib-es/e2e/families/cardano.js +12 -11
- package/lib-es/e2e/families/cardano.js.map +1 -1
- package/lib-es/e2e/families/evm.d.ts.map +1 -1
- package/lib-es/e2e/families/evm.js +4 -3
- package/lib-es/e2e/families/evm.js.map +1 -1
- package/lib-es/e2e/families/solana.d.ts.map +1 -1
- package/lib-es/e2e/families/solana.js +1 -1
- package/lib-es/e2e/families/solana.js.map +1 -1
- package/lib-es/e2e/index.d.ts +8 -2
- package/lib-es/e2e/index.d.ts.map +1 -1
- package/lib-es/e2e/speculos.d.ts +2 -0
- package/lib-es/e2e/speculos.d.ts.map +1 -1
- package/lib-es/e2e/speculos.js +10 -3
- package/lib-es/e2e/speculos.js.map +1 -1
- package/lib-es/e2e/speculosAppVersion.d.ts.map +1 -1
- package/lib-es/e2e/speculosAppVersion.js +5 -2
- package/lib-es/e2e/speculosAppVersion.js.map +1 -1
- package/lib-es/e2e/speculosCI.d.ts.map +1 -1
- package/lib-es/e2e/speculosCI.js +4 -0
- package/lib-es/e2e/speculosCI.js.map +1 -1
- package/lib-es/env.react.d.ts +1 -1
- package/lib-es/env.react.d.ts.map +1 -1
- package/lib-es/exchange/swap/getIncompatibleCurrencyKeys.d.ts.map +1 -1
- package/lib-es/exchange/swap/getIncompatibleCurrencyKeys.js +4 -0
- package/lib-es/exchange/swap/getIncompatibleCurrencyKeys.js.map +1 -1
- package/lib-es/exchange/swap/transactionStrategies.d.ts +3 -0
- package/lib-es/exchange/swap/transactionStrategies.d.ts.map +1 -1
- package/lib-es/exchange/swap/transactionStrategies.js +10 -1
- package/lib-es/exchange/swap/transactionStrategies.js.map +1 -1
- package/lib-es/families/canton/bridge/mock.d.ts +2 -2
- package/lib-es/families/canton/bridge/mock.d.ts.map +1 -1
- package/lib-es/families/canton/bridge/mock.js +3 -0
- package/lib-es/families/canton/bridge/mock.js.map +1 -1
- package/lib-es/families/canton/config.d.ts.map +1 -1
- package/lib-es/families/canton/config.js +3 -0
- package/lib-es/families/canton/config.js.map +1 -1
- package/lib-es/families/canton/setup.d.ts +3 -3
- package/lib-es/families/canton/setup.d.ts.map +1 -1
- package/lib-es/families/canton/setup.js.map +1 -1
- package/lib-es/families/evm/config.d.ts.map +1 -1
- package/lib-es/families/evm/config.js +18 -1
- package/lib-es/families/evm/config.js.map +1 -1
- package/lib-es/families/hedera/utils.d.ts +2 -0
- package/lib-es/families/hedera/utils.d.ts.map +1 -0
- package/lib-es/families/hedera/utils.js +3 -0
- package/lib-es/families/hedera/utils.js.map +1 -0
- package/lib-es/families/sui/react.d.ts.map +1 -1
- package/lib-es/families/sui/react.js +1 -0
- package/lib-es/families/sui/react.js.map +1 -1
- package/lib-es/featureFlags/defaultFeatures.d.ts +3 -0
- package/lib-es/featureFlags/defaultFeatures.d.ts.map +1 -1
- package/lib-es/featureFlags/defaultFeatures.js +3 -1
- package/lib-es/featureFlags/defaultFeatures.js.map +1 -1
- package/lib-es/featureFlags/useFeature.d.ts +1 -1
- package/lib-es/featureFlags/useFeature.d.ts.map +1 -1
- package/lib-es/generated/bridge/js.d.ts +1 -1
- package/lib-es/generated/bridge/mock.d.ts +1 -1
- package/lib-es/generated/deviceTransactionConfig.d.ts +1 -1
- package/lib-es/generated/specs.d.ts +1 -0
- package/lib-es/generated/specs.d.ts.map +1 -1
- package/lib-es/hooks/useDeviceTransactionConfig.d.ts +19 -0
- package/lib-es/hooks/useDeviceTransactionConfig.d.ts.map +1 -0
- package/lib-es/hooks/useDeviceTransactionConfig.js +41 -0
- package/lib-es/hooks/useDeviceTransactionConfig.js.map +1 -0
- package/lib-es/hw/connectAppEventMapper.d.ts.map +1 -1
- package/lib-es/hw/connectAppEventMapper.js +3 -3
- package/lib-es/hw/connectAppEventMapper.js.map +1 -1
- package/lib-es/load/speculos.d.ts.map +1 -1
- package/lib-es/load/speculos.js +1 -0
- package/lib-es/load/speculos.js.map +1 -1
- package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.d.ts.map +1 -1
- package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js +7 -0
- package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js.map +1 -1
- package/lib-es/postOnboarding/hooks/useAutoDismissPostOnboardingEntryPoint.js.map +1 -1
- package/lib-es/postOnboarding/hooks/usePostOnboardingHubState.d.ts.map +1 -1
- package/lib-es/postOnboarding/hooks/usePostOnboardingHubState.js +7 -6
- package/lib-es/postOnboarding/hooks/usePostOnboardingHubState.js.map +1 -1
- package/lib-es/transaction/deviceTransactionConfig.d.ts +1 -1
- package/lib-es/transaction/deviceTransactionConfig.d.ts.map +1 -1
- package/lib-es/transaction/deviceTransactionConfig.js +2 -2
- package/lib-es/transaction/deviceTransactionConfig.js.map +1 -1
- package/package.json +76 -75
- package/src/__tests__/environment.test.ts +8 -5
- package/src/__tests__/migration/account-migration.ts +1 -0
- package/src/__tests__/test-helpers/environment.ts +2 -0
- package/src/account/serialization.test.ts +1 -0
- package/src/apps/config.ts +1 -1
- package/src/bridge/generic-alpaca/getAccountShape.ts +8 -1
- package/src/bridge/generic-alpaca/tests/getAccountShape.test.ts +25 -2
- package/src/bridge/generic-alpaca/utils.test.ts +165 -0
- package/src/bridge/generic-alpaca/utils.ts +5 -4
- package/src/dada-client/hooks/useAssetsData.ts +4 -8
- package/src/dada-client/state-manager/api.ts +3 -0
- package/src/dada-client/state-manager/types.ts +1 -0
- package/src/deposit/helper.ts +65 -1
- package/src/e2e/data/deviceLabelsData.ts +39 -33
- package/src/e2e/deviceInteraction/TouchDeviceSimulator.ts +13 -5
- package/src/e2e/enum/Account.ts +0 -6
- package/src/e2e/enum/Currency.ts +0 -7
- package/src/e2e/enum/Device.ts +1 -0
- package/src/e2e/enum/DeviceLabels.ts +2 -0
- package/src/e2e/families/bitcoin.ts +1 -1
- package/src/e2e/families/cardano.ts +12 -15
- package/src/e2e/families/evm.ts +4 -3
- package/src/e2e/families/solana.ts +1 -4
- package/src/e2e/speculos.ts +20 -3
- package/src/e2e/speculosAppVersion.ts +5 -2
- package/src/e2e/speculosCI.ts +4 -0
- package/src/exchange/swap/getIncompatibleCurrencyKeys.ts +4 -0
- package/src/exchange/swap/transactionStrategies.ts +16 -1
- package/src/families/bitcoin/satstack.test.ts +1 -0
- package/src/families/canton/bridge/mock.ts +10 -7
- package/src/families/canton/config.ts +3 -0
- package/src/families/canton/setup.ts +3 -3
- package/src/families/evm/config.ts +18 -1
- package/src/families/hedera/__snapshots__/bridge.integration.test.ts.snap +222 -86
- package/src/families/hedera/utils.ts +2 -0
- package/src/families/sui/react.ts +5 -0
- package/src/featureFlags/defaultFeatures.ts +3 -1
- package/src/hooks/useDeviceTransactionConfig.test.tsx +200 -0
- package/src/hooks/useDeviceTransactionConfig.ts +65 -0
- package/src/hw/connectAppEventMapper.ts +2 -4
- package/src/load/speculos.ts +1 -0
- package/src/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.ts +7 -0
- package/src/postOnboarding/hooks/useAutoDismissPostOnboardingEntryPoint.ts +1 -1
- package/src/postOnboarding/hooks/usePostOnboardingHubState.ts +7 -9
- package/src/transaction/deviceTransactionConfig.ts +3 -3
- package/lib/families/hedera/logic.d.ts +0 -2
- package/lib/families/hedera/logic.d.ts.map +0 -1
- package/lib/families/hedera/logic.js.map +0 -1
- package/lib-es/families/hedera/logic.d.ts +0 -2
- package/lib-es/families/hedera/logic.d.ts.map +0 -1
- package/lib-es/families/hedera/logic.js +0 -3
- package/lib-es/families/hedera/logic.js.map +0 -1
- package/src/dada-client/MIGRATION_GUIDE.md +0 -187
- package/src/families/hedera/logic.ts +0 -2
- package/src/families/sui/__snapshots__/bridge.integration.test.ts.snap +0 -428
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
adaptCoreOperationToLiveOperation,
|
|
3
|
+
buildOptimisticOperation,
|
|
3
4
|
cleanedOperation,
|
|
4
5
|
extractBalance,
|
|
5
6
|
findCryptoCurrencyByNetwork,
|
|
@@ -11,6 +12,170 @@ import { Account } from "@ledgerhq/types-live";
|
|
|
11
12
|
import { GenericTransaction, OperationCommon } from "./types";
|
|
12
13
|
|
|
13
14
|
describe("Alpaca utils", () => {
|
|
15
|
+
describe("buildOptimisticOperation", () => {
|
|
16
|
+
it.each([
|
|
17
|
+
[
|
|
18
|
+
"coin",
|
|
19
|
+
"changeTrust",
|
|
20
|
+
{},
|
|
21
|
+
{
|
|
22
|
+
parentType: "OPT_IN",
|
|
23
|
+
subType: undefined,
|
|
24
|
+
parentValue: new BigNumber(50),
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
"coin",
|
|
29
|
+
"delegate",
|
|
30
|
+
{},
|
|
31
|
+
{
|
|
32
|
+
parentType: "DELEGATE",
|
|
33
|
+
subType: undefined,
|
|
34
|
+
parentValue: new BigNumber(50),
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
"coin",
|
|
39
|
+
"stake",
|
|
40
|
+
{},
|
|
41
|
+
{
|
|
42
|
+
parentType: "DELEGATE",
|
|
43
|
+
subType: undefined,
|
|
44
|
+
parentValue: new BigNumber(50),
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
"coin",
|
|
49
|
+
"undelegate",
|
|
50
|
+
{},
|
|
51
|
+
{
|
|
52
|
+
parentType: "UNDELEGATE",
|
|
53
|
+
subType: undefined,
|
|
54
|
+
parentValue: new BigNumber(50),
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
[
|
|
58
|
+
"coin",
|
|
59
|
+
"unstake",
|
|
60
|
+
{},
|
|
61
|
+
{
|
|
62
|
+
parentType: "UNDELEGATE",
|
|
63
|
+
subType: undefined,
|
|
64
|
+
parentValue: new BigNumber(50),
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
[
|
|
68
|
+
"coin",
|
|
69
|
+
"send",
|
|
70
|
+
{},
|
|
71
|
+
{
|
|
72
|
+
parentType: "OUT",
|
|
73
|
+
subType: undefined,
|
|
74
|
+
parentValue: new BigNumber(50),
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
[
|
|
78
|
+
"token",
|
|
79
|
+
"changeTrust",
|
|
80
|
+
{ subAccountId: "sub-account-id" },
|
|
81
|
+
{
|
|
82
|
+
parentType: "FEES",
|
|
83
|
+
subType: "OPT_IN",
|
|
84
|
+
parentValue: new BigNumber(12),
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
[
|
|
88
|
+
"token",
|
|
89
|
+
"delegate",
|
|
90
|
+
{ subAccountId: "sub-account-id" },
|
|
91
|
+
{
|
|
92
|
+
parentType: "FEES",
|
|
93
|
+
subType: "DELEGATE",
|
|
94
|
+
parentValue: new BigNumber(12),
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
[
|
|
98
|
+
"token",
|
|
99
|
+
"stake",
|
|
100
|
+
{ subAccountId: "sub-account-id" },
|
|
101
|
+
{
|
|
102
|
+
parentType: "FEES",
|
|
103
|
+
subType: "DELEGATE",
|
|
104
|
+
parentValue: new BigNumber(12),
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
[
|
|
108
|
+
"token",
|
|
109
|
+
"undelegate",
|
|
110
|
+
{ subAccountId: "sub-account-id" },
|
|
111
|
+
{
|
|
112
|
+
parentType: "FEES",
|
|
113
|
+
subType: "UNDELEGATE",
|
|
114
|
+
parentValue: new BigNumber(12),
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
[
|
|
118
|
+
"token",
|
|
119
|
+
"unstake",
|
|
120
|
+
{ subAccountId: "sub-account-id" },
|
|
121
|
+
{
|
|
122
|
+
parentType: "FEES",
|
|
123
|
+
subType: "UNDELEGATE",
|
|
124
|
+
parentValue: new BigNumber(12),
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
[
|
|
128
|
+
"token",
|
|
129
|
+
"send",
|
|
130
|
+
{ subAccountId: "sub-account-id" },
|
|
131
|
+
{ parentType: "FEES", subType: "OUT", parentValue: new BigNumber(12) },
|
|
132
|
+
],
|
|
133
|
+
])("builds an optimistic %s operation with %s mode ", (_s, mode, params, expected) => {
|
|
134
|
+
const operation = buildOptimisticOperation(
|
|
135
|
+
{
|
|
136
|
+
id: "parent-account-id",
|
|
137
|
+
freshAddress: "account-address",
|
|
138
|
+
subAccounts: [{ id: "sub-account-id" }],
|
|
139
|
+
} as Account,
|
|
140
|
+
{
|
|
141
|
+
mode,
|
|
142
|
+
amount: new BigNumber(50),
|
|
143
|
+
fees: new BigNumber(12),
|
|
144
|
+
recipient: "recipient-address",
|
|
145
|
+
...params,
|
|
146
|
+
} as GenericTransaction,
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
expect(operation).toMatchObject({
|
|
150
|
+
id: `parent-account-id--${expected.parentType}`,
|
|
151
|
+
type: expected.parentType,
|
|
152
|
+
value: expected.parentValue,
|
|
153
|
+
accountId: "parent-account-id",
|
|
154
|
+
senders: ["account-address"],
|
|
155
|
+
recipients: ["recipient-address"],
|
|
156
|
+
fee: new BigNumber(12),
|
|
157
|
+
blockHash: null,
|
|
158
|
+
blockHeight: null,
|
|
159
|
+
...(expected.subType
|
|
160
|
+
? {
|
|
161
|
+
subOperations: [
|
|
162
|
+
{
|
|
163
|
+
id: `sub-account-id--${expected.subType}`,
|
|
164
|
+
accountId: "sub-account-id",
|
|
165
|
+
type: expected.subType,
|
|
166
|
+
senders: ["account-address"],
|
|
167
|
+
recipients: ["recipient-address"],
|
|
168
|
+
value: new BigNumber(50),
|
|
169
|
+
blockHash: null,
|
|
170
|
+
blockHeight: null,
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
}
|
|
174
|
+
: {}),
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
|
|
14
179
|
describe("cleanedOperation", () => {
|
|
15
180
|
it("creates a cleaned version of an operation without mutating it", () => {
|
|
16
181
|
const dirty = {
|
|
@@ -241,11 +241,12 @@ export const buildOptimisticOperation = (
|
|
|
241
241
|
const fees = BigInt(transaction.fees?.toString() || "0");
|
|
242
242
|
const { subAccountId } = transaction;
|
|
243
243
|
const { subAccounts } = account;
|
|
244
|
+
const parentType = subAccountId ? "FEES" : type;
|
|
244
245
|
|
|
245
246
|
const operation: Operation = {
|
|
246
|
-
id: encodeOperationId(account.id, "",
|
|
247
|
+
id: encodeOperationId(account.id, "", parentType),
|
|
247
248
|
hash: "",
|
|
248
|
-
type:
|
|
249
|
+
type: parentType,
|
|
249
250
|
value: subAccountId ? new BigNumber(fees.toString()) : transaction.amount, // match old behavior
|
|
250
251
|
fee: new BigNumber(fees.toString()),
|
|
251
252
|
blockHash: null,
|
|
@@ -266,9 +267,9 @@ export const buildOptimisticOperation = (
|
|
|
266
267
|
if (tokenAccount && subAccountId) {
|
|
267
268
|
operation.subOperations = [
|
|
268
269
|
{
|
|
269
|
-
id: `${subAccountId}
|
|
270
|
+
id: `${subAccountId}--${type}`,
|
|
270
271
|
hash: "",
|
|
271
|
-
type
|
|
272
|
+
type,
|
|
272
273
|
value: transaction.useAllAmount ? tokenAccount.balance : transaction.amount,
|
|
273
274
|
fee: new BigNumber(0),
|
|
274
275
|
blockHash: null,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
2
|
import { useGetAssetsDataInfiniteQuery } from "../state-manager/api";
|
|
3
|
-
import { AssetsDataWithPagination } from "../state-manager/types";
|
|
3
|
+
import { AssetsDataWithPagination, GetAssetsDataParams } from "../state-manager/types";
|
|
4
4
|
|
|
5
5
|
const emptyData = () => ({
|
|
6
6
|
cryptoAssets: {},
|
|
@@ -25,14 +25,9 @@ export function useAssetsData({
|
|
|
25
25
|
product,
|
|
26
26
|
version,
|
|
27
27
|
isStaging,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
currencyIds?: string[];
|
|
31
|
-
useCase?: string;
|
|
28
|
+
includeTestNetworks,
|
|
29
|
+
}: GetAssetsDataParams & {
|
|
32
30
|
areCurrenciesFiltered?: boolean;
|
|
33
|
-
product: "llm" | "lld";
|
|
34
|
-
version: string;
|
|
35
|
-
isStaging?: boolean;
|
|
36
31
|
}) {
|
|
37
32
|
const {
|
|
38
33
|
data,
|
|
@@ -51,6 +46,7 @@ export function useAssetsData({
|
|
|
51
46
|
product,
|
|
52
47
|
version,
|
|
53
48
|
isStaging,
|
|
49
|
+
includeTestNetworks,
|
|
54
50
|
});
|
|
55
51
|
|
|
56
52
|
const joinedPages = useMemo(() => {
|
|
@@ -45,6 +45,9 @@ export const assetsDataApi = createApi({
|
|
|
45
45
|
...(queryArg?.search && { search: queryArg.search }),
|
|
46
46
|
product: queryArg.product,
|
|
47
47
|
minVersion: queryArg.version,
|
|
48
|
+
...(queryArg?.includeTestNetworks && {
|
|
49
|
+
includeTestNetworks: queryArg.includeTestNetworks,
|
|
50
|
+
}),
|
|
48
51
|
additionalData: queryArg.additionalData || [
|
|
49
52
|
AssetsAdditionalData.Apy,
|
|
50
53
|
AssetsAdditionalData.MarketTrend,
|
package/src/deposit/helper.ts
CHANGED
|
@@ -7,6 +7,66 @@ import {
|
|
|
7
7
|
hasCryptoCurrencyId,
|
|
8
8
|
} from "../currencies";
|
|
9
9
|
import { getMappedAssets } from "./api";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* WORKAROUND: Fallback mappings for currencies not yet available in getMappedAssets()
|
|
13
|
+
* TODO: Remove these entries once they are properly supported by the mapping service
|
|
14
|
+
*
|
|
15
|
+
* Each entry maps a Ledger currency ID to its provider ID.
|
|
16
|
+
* The provider ID is used to group currencies by their external provider (e.g., CoinGecko).
|
|
17
|
+
*/
|
|
18
|
+
const FALLBACK_CURRENCY_MAPPINGS: Record<string, string> = {
|
|
19
|
+
// Canton Network - using canton_network as both ledgerId and providerId
|
|
20
|
+
canton_network: "canton_network",
|
|
21
|
+
canton_network_devnet: "canton_network_devnet",
|
|
22
|
+
canton_network_testnet: "canton_network_testnet",
|
|
23
|
+
|
|
24
|
+
// Add more fallback mappings here as needed:
|
|
25
|
+
// "ledger_currency_id": "provider_id",
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Creates synthetic MappedAsset entries for currencies that are not yet available
|
|
30
|
+
* in the mapping service API but need to be supported.
|
|
31
|
+
*/
|
|
32
|
+
const createFallbackMappedAssets = (
|
|
33
|
+
currencies: CryptoOrTokenCurrency[],
|
|
34
|
+
existingAssets: MappedAsset[],
|
|
35
|
+
): MappedAsset[] => {
|
|
36
|
+
const existingLedgerIds = new Set(existingAssets.map(asset => asset.ledgerId.toLowerCase()));
|
|
37
|
+
const fallbackAssets: MappedAsset[] = [];
|
|
38
|
+
|
|
39
|
+
for (const [currencyId, providerId] of Object.entries(FALLBACK_CURRENCY_MAPPINGS)) {
|
|
40
|
+
// Skip if currency already exists in mapped assets
|
|
41
|
+
if (existingLedgerIds.has(currencyId.toLowerCase())) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Find the currency in the list
|
|
46
|
+
const currency = currencies.find(c => c.id === currencyId);
|
|
47
|
+
if (currency) {
|
|
48
|
+
fallbackAssets.push({
|
|
49
|
+
$type: currency.type === "TokenCurrency" ? "Token" : "Coin",
|
|
50
|
+
ledgerId: currency.id,
|
|
51
|
+
providerId: providerId,
|
|
52
|
+
name: currency.name,
|
|
53
|
+
ticker: currency.ticker,
|
|
54
|
+
network: currency.type === "TokenCurrency" ? currency.parentCurrency?.id : undefined,
|
|
55
|
+
contract: currency.type === "TokenCurrency" ? currency.contractAddress : undefined,
|
|
56
|
+
status: "active",
|
|
57
|
+
reason: null,
|
|
58
|
+
data: {
|
|
59
|
+
img: "",
|
|
60
|
+
marketCapRank: null,
|
|
61
|
+
},
|
|
62
|
+
ledgerCurrency: currency,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return fallbackAssets;
|
|
68
|
+
};
|
|
69
|
+
|
|
10
70
|
export const loadCurrenciesByProvider = async (
|
|
11
71
|
coinsAndTokensSupported: CryptoOrTokenCurrency[],
|
|
12
72
|
): Promise<GroupedCurrencies> => {
|
|
@@ -15,7 +75,11 @@ export const loadCurrenciesByProvider = async (
|
|
|
15
75
|
getMappedAssets(),
|
|
16
76
|
]);
|
|
17
77
|
|
|
18
|
-
|
|
78
|
+
// Merge API assets with fallback assets for currencies not yet in the API
|
|
79
|
+
const fallbackAssets = createFallbackMappedAssets(sortedCurrenciesSupported, assets);
|
|
80
|
+
const allAssets = [...assets, ...fallbackAssets];
|
|
81
|
+
|
|
82
|
+
return groupCurrenciesByProvider(allAssets, sortedCurrenciesSupported);
|
|
19
83
|
};
|
|
20
84
|
export const groupCurrenciesByProvider = (
|
|
21
85
|
assets: MappedAsset[],
|
|
@@ -35,6 +35,35 @@ type DeviceLabelsConfig = {
|
|
|
35
35
|
[key in DeviceModelId]?: LabelConfig;
|
|
36
36
|
};
|
|
37
37
|
|
|
38
|
+
const TOUCHSCREEN_DEVICE_CONFIG: LabelConfig = {
|
|
39
|
+
receiveVerify: {
|
|
40
|
+
[AppInfos.BNB_CHAIN.name]: DeviceLabels.VERIFY_BSC,
|
|
41
|
+
[AppInfos.COSMOS.name]: DeviceLabels.VERIFY_COSMOS,
|
|
42
|
+
[AppInfos.ETHEREUM.name]: DeviceLabels.VERIFY_ETHEREUM,
|
|
43
|
+
[AppInfos.POLKADOT.name]: DeviceLabels.PLEASE_REVIEW,
|
|
44
|
+
[AppInfos.POLYGON.name]: DeviceLabels.VERIFY_POLYGON,
|
|
45
|
+
[AppInfos.SOLANA.name]: DeviceLabels.VERIFY_SOLANA_ADDRESS,
|
|
46
|
+
default: DeviceLabels.ADDRESS,
|
|
47
|
+
},
|
|
48
|
+
receiveConfirm: {
|
|
49
|
+
default: DeviceLabels.CONFIRM,
|
|
50
|
+
},
|
|
51
|
+
delegateVerify: {
|
|
52
|
+
[AppInfos.NEAR.name]: DeviceLabels.VIEW_HEADER,
|
|
53
|
+
default: DeviceLabels.REVIEW_OPERATION,
|
|
54
|
+
},
|
|
55
|
+
delegateConfirm: {
|
|
56
|
+
[AppInfos.NEAR.name]: DeviceLabels.CONTINUE_TO_ACTION,
|
|
57
|
+
default: DeviceLabels.HOLD_TO_SIGN,
|
|
58
|
+
},
|
|
59
|
+
sendVerify: {
|
|
60
|
+
default: DeviceLabels.REVIEW_OPERATION,
|
|
61
|
+
},
|
|
62
|
+
sendConfirm: {
|
|
63
|
+
default: DeviceLabels.HOLD_TO_SIGN,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
|
|
38
67
|
export const DEVICE_LABELS_CONFIG: DeviceLabelsConfig = {
|
|
39
68
|
[DeviceModelId.nanoS]: {
|
|
40
69
|
receiveVerify: {
|
|
@@ -66,10 +95,11 @@ export const DEVICE_LABELS_CONFIG: DeviceLabelsConfig = {
|
|
|
66
95
|
default: DeviceLabels.CAPS_APPROVE,
|
|
67
96
|
},
|
|
68
97
|
sendVerify: {
|
|
98
|
+
[AppInfos.SOLANA.name]: DeviceLabels.TRANSFER,
|
|
69
99
|
default: DeviceLabels.REVIEW_OPERATION,
|
|
70
100
|
},
|
|
71
101
|
sendConfirm: {
|
|
72
|
-
[AppInfos.SOLANA.name]: DeviceLabels.
|
|
102
|
+
[AppInfos.SOLANA.name]: DeviceLabels.APPROVE,
|
|
73
103
|
[AppInfos.TRON.name]: DeviceLabels.SIGN,
|
|
74
104
|
[AppInfos.STELLAR.name]: DeviceLabels.SIGN,
|
|
75
105
|
[AppInfos.RIPPLE.name]: DeviceLabels.SIGN,
|
|
@@ -79,34 +109,8 @@ export const DEVICE_LABELS_CONFIG: DeviceLabelsConfig = {
|
|
|
79
109
|
default: DeviceLabels.CAPS_APPROVE,
|
|
80
110
|
},
|
|
81
111
|
},
|
|
82
|
-
[DeviceModelId.stax]:
|
|
83
|
-
|
|
84
|
-
[AppInfos.BNB_CHAIN.name]: DeviceLabels.VERIFY_BSC,
|
|
85
|
-
[AppInfos.COSMOS.name]: DeviceLabels.PLEASE_REVIEW,
|
|
86
|
-
[AppInfos.ETHEREUM.name]: DeviceLabels.VERIFY_ETHEREUM,
|
|
87
|
-
[AppInfos.POLKADOT.name]: DeviceLabels.PLEASE_REVIEW,
|
|
88
|
-
[AppInfos.POLYGON.name]: DeviceLabels.VERIFY_POLYGON,
|
|
89
|
-
[AppInfos.SOLANA.name]: DeviceLabels.VERIFY_SOLANA_ADDRESS,
|
|
90
|
-
default: DeviceLabels.ADDRESS,
|
|
91
|
-
},
|
|
92
|
-
receiveConfirm: {
|
|
93
|
-
default: DeviceLabels.CONFIRM,
|
|
94
|
-
},
|
|
95
|
-
delegateVerify: {
|
|
96
|
-
[AppInfos.NEAR.name]: DeviceLabels.VIEW_HEADER,
|
|
97
|
-
default: DeviceLabels.REVIEW_OPERATION,
|
|
98
|
-
},
|
|
99
|
-
delegateConfirm: {
|
|
100
|
-
[AppInfos.NEAR.name]: DeviceLabels.CONTINUE_TO_ACTION,
|
|
101
|
-
default: DeviceLabels.HOLD_TO_SIGN,
|
|
102
|
-
},
|
|
103
|
-
sendVerify: {
|
|
104
|
-
default: DeviceLabels.REVIEW_OPERATION,
|
|
105
|
-
},
|
|
106
|
-
sendConfirm: {
|
|
107
|
-
default: DeviceLabels.HOLD_TO_SIGN,
|
|
108
|
-
},
|
|
109
|
-
},
|
|
112
|
+
[DeviceModelId.stax]: TOUCHSCREEN_DEVICE_CONFIG,
|
|
113
|
+
[DeviceModelId.europa]: TOUCHSCREEN_DEVICE_CONFIG,
|
|
110
114
|
default: {
|
|
111
115
|
receiveVerify: {
|
|
112
116
|
[AppInfos.BNB_CHAIN.name]: DeviceLabels.VERIFY_BSC,
|
|
@@ -114,7 +118,7 @@ export const DEVICE_LABELS_CONFIG: DeviceLabelsConfig = {
|
|
|
114
118
|
[AppInfos.ETHEREUM.name]: DeviceLabels.VERIFY_ETHEREUM,
|
|
115
119
|
[AppInfos.POLKADOT.name]: DeviceLabels.PLEASE_REVIEW,
|
|
116
120
|
[AppInfos.POLYGON.name]: DeviceLabels.VERIFY_POLYGON,
|
|
117
|
-
[AppInfos.SOLANA.name]: DeviceLabels.
|
|
121
|
+
[AppInfos.SOLANA.name]: DeviceLabels.VERIFY_SOLANA_ADDRESS,
|
|
118
122
|
default: DeviceLabels.ADDRESS,
|
|
119
123
|
},
|
|
120
124
|
receiveConfirm: {
|
|
@@ -124,13 +128,14 @@ export const DEVICE_LABELS_CONFIG: DeviceLabelsConfig = {
|
|
|
124
128
|
[AppInfos.ETHEREUM.name]: DeviceLabels.CONFIRM,
|
|
125
129
|
[AppInfos.POLKADOT.name]: DeviceLabels.CAPS_APPROVE,
|
|
126
130
|
[AppInfos.POLYGON.name]: DeviceLabels.CONFIRM,
|
|
131
|
+
[AppInfos.SOLANA.name]: DeviceLabels.CONFIRM,
|
|
127
132
|
default: DeviceLabels.APPROVE,
|
|
128
133
|
},
|
|
129
134
|
delegateVerify: {
|
|
130
135
|
[AppInfos.COSMOS.name]: DeviceLabels.PLEASE_REVIEW,
|
|
131
136
|
[AppInfos.MULTIVERS_X.name]: DeviceLabels.RECEIVER,
|
|
132
137
|
[AppInfos.NEAR.name]: DeviceLabels.VIEW_HEADER,
|
|
133
|
-
[AppInfos.SOLANA.name]: DeviceLabels.
|
|
138
|
+
[AppInfos.SOLANA.name]: DeviceLabels.REVIEW_TRANSACTION_TO,
|
|
134
139
|
default: DeviceLabels.REVIEW_OPERATION,
|
|
135
140
|
},
|
|
136
141
|
delegateConfirm: {
|
|
@@ -141,15 +146,16 @@ export const DEVICE_LABELS_CONFIG: DeviceLabelsConfig = {
|
|
|
141
146
|
[AppInfos.MULTIVERS_X.name]: DeviceLabels.SIGN,
|
|
142
147
|
[AppInfos.NEAR.name]: DeviceLabels.CONTINUE_TO_ACTION,
|
|
143
148
|
[AppInfos.OSMOSIS.name]: DeviceLabels.CAPS_APPROVE,
|
|
149
|
+
[AppInfos.SOLANA.name]: DeviceLabels.SIGN,
|
|
144
150
|
default: DeviceLabels.APPROVE,
|
|
145
151
|
},
|
|
146
152
|
sendVerify: {
|
|
147
|
-
[AppInfos.SOLANA.name]: DeviceLabels.
|
|
153
|
+
[AppInfos.SOLANA.name]: DeviceLabels.REVIEW_TRANSACTION_TO,
|
|
148
154
|
[AppInfos.RIPPLE.name]: DeviceLabels.TRANSACTION_TYPE,
|
|
149
155
|
default: DeviceLabels.REVIEW_OPERATION,
|
|
150
156
|
},
|
|
151
157
|
sendConfirm: {
|
|
152
|
-
[AppInfos.SOLANA.name]: DeviceLabels.
|
|
158
|
+
[AppInfos.SOLANA.name]: DeviceLabels.SIGN_TRANSACTION,
|
|
153
159
|
[AppInfos.TRON.name]: DeviceLabels.SIGN,
|
|
154
160
|
[AppInfos.STELLAR.name]: DeviceLabels.SIGN,
|
|
155
161
|
[AppInfos.RIPPLE.name]: DeviceLabels.SIGN,
|
|
@@ -10,16 +10,24 @@ function getSpeculosInfo(): {
|
|
|
10
10
|
const speculosAddress = getSpeculosAddress();
|
|
11
11
|
return { speculosApiPort, speculosAddress };
|
|
12
12
|
}
|
|
13
|
+
|
|
13
14
|
export async function pressAndRelease(deviceLabel: string, x?: number, y?: number) {
|
|
14
15
|
const { speculosApiPort, speculosAddress } = getSpeculosInfo();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
let xCoord: number;
|
|
17
|
+
let yCoord: number;
|
|
18
|
+
if (x && y) {
|
|
19
|
+
xCoord = x;
|
|
20
|
+
yCoord = y;
|
|
21
|
+
} else {
|
|
22
|
+
const coords = await getDeviceLabelCoordinates(deviceLabel, speculosApiPort);
|
|
23
|
+
xCoord = coords.x;
|
|
24
|
+
yCoord = coords.y;
|
|
25
|
+
}
|
|
18
26
|
await retryAxiosRequest(() =>
|
|
19
27
|
axios.post(`${speculosAddress}:${speculosApiPort}/finger`, {
|
|
20
28
|
action: "press-and-release",
|
|
21
|
-
x:
|
|
22
|
-
y:
|
|
29
|
+
x: xCoord,
|
|
30
|
+
y: yCoord,
|
|
23
31
|
}),
|
|
24
32
|
);
|
|
25
33
|
}
|
package/src/e2e/enum/Account.ts
CHANGED
|
@@ -108,12 +108,6 @@ export class Account {
|
|
|
108
108
|
"0xa1baa625c5E6A9304cB7AcD86d2fee6B710eC3eB",
|
|
109
109
|
1,
|
|
110
110
|
);
|
|
111
|
-
static readonly BSC_POL = new Account(
|
|
112
|
-
Currency.BSC_POL,
|
|
113
|
-
"BNB Chain 1",
|
|
114
|
-
"0x4BE2E2B8872AA298D6d123b9211B53E41f611566",
|
|
115
|
-
0,
|
|
116
|
-
);
|
|
117
111
|
static readonly BSC_SHIBA = new Account(
|
|
118
112
|
Currency.BSC_SHIBA,
|
|
119
113
|
"BNB Chain 1",
|
package/src/e2e/enum/Currency.ts
CHANGED
|
@@ -156,13 +156,6 @@ export class Currency {
|
|
|
156
156
|
AppInfos.BNB_CHAIN,
|
|
157
157
|
[Network.BNB_CHAIN, Network.POLYGON],
|
|
158
158
|
);
|
|
159
|
-
static readonly BSC_POL = new Currency(
|
|
160
|
-
"Matic Token",
|
|
161
|
-
"MATIC",
|
|
162
|
-
"bsc/bep20/matic_token",
|
|
163
|
-
AppInfos.BNB_CHAIN,
|
|
164
|
-
[Network.BNB_CHAIN],
|
|
165
|
-
);
|
|
166
159
|
static readonly BSC_SHIBA = new Currency("Shiba Inu", "SHIB", "bsc", AppInfos.BNB_CHAIN, [
|
|
167
160
|
Network.BNB_CHAIN,
|
|
168
161
|
Network.ETHEREUM,
|
package/src/e2e/enum/Device.ts
CHANGED
|
@@ -39,6 +39,7 @@ export enum DeviceLabels {
|
|
|
39
39
|
REVIEW_OPERATION = "Review",
|
|
40
40
|
REMOVE_PHONE_OR_COMPUTER = "Remove phone or computer",
|
|
41
41
|
REVIEW_TRANSACTION = "Review transaction",
|
|
42
|
+
REVIEW_TRANSACTION_TO = "Review transaction to",
|
|
42
43
|
SEND = "Send",
|
|
43
44
|
SEND_TO_ADDRESS = "Send to address",
|
|
44
45
|
SEND_TO_ADDRESS_2 = "Send to address (2/2)",
|
|
@@ -59,6 +60,7 @@ export enum DeviceLabels {
|
|
|
59
60
|
VERIFY_BSC = "Verify BSC",
|
|
60
61
|
VERIFY_ETHEREUM = "Verify Ethereum",
|
|
61
62
|
VERIFY_POLYGON = "Verify Polygon",
|
|
63
|
+
VERIFY_COSMOS = "Verify Cosmos",
|
|
62
64
|
VERIFY_SOLANA_ADDRESS = "Verify Solana address",
|
|
63
65
|
VIEW_ACTION = "View action",
|
|
64
66
|
VIEW_HEADER = "View Header",
|
|
@@ -32,7 +32,7 @@ export async function sendBTC(tx: Transaction) {
|
|
|
32
32
|
expect(isAmountCorrect).toBeTruthy();
|
|
33
33
|
const isAddressCorrect = containsSubstringInEvent(tx.accountToCredit.address, events);
|
|
34
34
|
expect(isAddressCorrect).toBeTruthy();
|
|
35
|
-
if (
|
|
35
|
+
if (isTouchDevice()) {
|
|
36
36
|
await longPressAndRelease(DeviceLabels.HOLD_TO_SIGN, 3);
|
|
37
37
|
} else {
|
|
38
38
|
await pressBoth();
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
} from "../deviceInteraction/TouchDeviceSimulator";
|
|
11
11
|
import { DeviceLabels } from "../enum/DeviceLabels";
|
|
12
12
|
import { DeviceModelId } from "@ledgerhq/types-devices";
|
|
13
|
+
import { isTouchDevice } from "../speculosAppVersion";
|
|
13
14
|
|
|
14
15
|
type ActionType = "both" | "right" | "tap" | "swipe" | "confirm" | "hold";
|
|
15
16
|
|
|
@@ -20,7 +21,7 @@ function validateTransactionData(tx: Transaction, events: string[]) {
|
|
|
20
21
|
expect(isAmountCorrect).toBeTruthy();
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
async function
|
|
24
|
+
async function sendCardanoTouchDevices(tx: Transaction) {
|
|
24
25
|
await waitFor(DeviceLabels.REVIEW_TRANSACTION);
|
|
25
26
|
const events = await pressUntilTextFound(DeviceLabels.TO);
|
|
26
27
|
validateTransactionData(tx, events);
|
|
@@ -60,8 +61,8 @@ async function sendCardanoButtonDevice(tx: Transaction) {
|
|
|
60
61
|
|
|
61
62
|
export async function sendCardano(tx: Transaction) {
|
|
62
63
|
const speculosModel = getSpeculosModel();
|
|
63
|
-
if (
|
|
64
|
-
return
|
|
64
|
+
if (isTouchDevice()) {
|
|
65
|
+
return sendCardanoTouchDevices(tx);
|
|
65
66
|
}
|
|
66
67
|
if (speculosModel === DeviceModelId.nanoS) {
|
|
67
68
|
return sendCardanoNanoS(tx);
|
|
@@ -70,7 +71,7 @@ export async function sendCardano(tx: Transaction) {
|
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
const DELEGATE_STEPS_CONFIG = {
|
|
73
|
-
[DeviceModelId.stax]: [
|
|
74
|
+
[DeviceModelId.stax || DeviceModelId.europa]: [
|
|
74
75
|
[DeviceLabels.REVIEW_TRANSACTION, "swipe"],
|
|
75
76
|
[DeviceLabels.TAP_TO_CONTINUE, "tap"],
|
|
76
77
|
[DeviceLabels.REGISTER, "swipe"],
|
|
@@ -107,7 +108,7 @@ const DELEGATE_STEPS_CONFIG = {
|
|
|
107
108
|
] as const,
|
|
108
109
|
};
|
|
109
110
|
|
|
110
|
-
async function
|
|
111
|
+
async function delegateTouchDevicesAction(label: DeviceLabels) {
|
|
111
112
|
const CONFIRM_BUTTON_COORDS = { x: 139, y: 532 };
|
|
112
113
|
await waitFor(label);
|
|
113
114
|
switch (label) {
|
|
@@ -135,14 +136,10 @@ async function delegateNanoAction(label: DeviceLabels, action: ActionType) {
|
|
|
135
136
|
}
|
|
136
137
|
}
|
|
137
138
|
|
|
138
|
-
async function executeDelegateStep(
|
|
139
|
-
label: DeviceLabels,
|
|
140
|
-
action: ActionType,
|
|
141
|
-
speculosModel: DeviceModelId,
|
|
142
|
-
) {
|
|
139
|
+
async function executeDelegateStep(label: DeviceLabels, action: ActionType) {
|
|
143
140
|
try {
|
|
144
|
-
if (
|
|
145
|
-
await
|
|
141
|
+
if (isTouchDevice()) {
|
|
142
|
+
await delegateTouchDevicesAction(label);
|
|
146
143
|
} else {
|
|
147
144
|
await delegateNanoAction(label, action);
|
|
148
145
|
}
|
|
@@ -156,13 +153,13 @@ async function executeDelegateStep(
|
|
|
156
153
|
export async function delegateCardano() {
|
|
157
154
|
const speculosModel = getSpeculosModel();
|
|
158
155
|
const steps =
|
|
159
|
-
speculosModel === DeviceModelId.stax
|
|
160
|
-
? DELEGATE_STEPS_CONFIG[
|
|
156
|
+
speculosModel === DeviceModelId.stax || speculosModel === DeviceModelId.europa
|
|
157
|
+
? DELEGATE_STEPS_CONFIG[speculosModel]
|
|
161
158
|
: speculosModel === DeviceModelId.nanoS
|
|
162
159
|
? DELEGATE_STEPS_CONFIG[DeviceModelId.nanoS]
|
|
163
160
|
: DELEGATE_STEPS_CONFIG.default;
|
|
164
161
|
|
|
165
162
|
for (const [label, action] of steps) {
|
|
166
|
-
await executeDelegateStep(label, action
|
|
163
|
+
await executeDelegateStep(label, action);
|
|
167
164
|
}
|
|
168
165
|
}
|
package/src/e2e/families/evm.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { longPressAndRelease } from "../deviceInteraction/TouchDeviceSimulator";
|
|
|
7
7
|
import { DeviceLabels } from "../enum/DeviceLabels";
|
|
8
8
|
import { Device } from "../enum/Device";
|
|
9
9
|
import { DeviceModelId } from "@ledgerhq/types-devices";
|
|
10
|
+
import { isTouchDevice } from "../speculosAppVersion";
|
|
10
11
|
|
|
11
12
|
function validateTransactionData(tx: Transaction, events: string[]) {
|
|
12
13
|
const isAmountCorrect = containsSubstringInEvent(tx.amount, events);
|
|
@@ -20,7 +21,7 @@ function validateTransactionData(tx: Transaction, events: string[]) {
|
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
async function
|
|
24
|
+
async function sendEvmTouchDevices(tx: Transaction) {
|
|
24
25
|
const events = await pressUntilTextFound(DeviceLabels.HOLD_TO_SIGN);
|
|
25
26
|
validateTransactionData(tx, events);
|
|
26
27
|
await longPressAndRelease(DeviceLabels.HOLD_TO_SIGN, 3);
|
|
@@ -40,8 +41,8 @@ async function sendEvmNanoS(tx: Transaction) {
|
|
|
40
41
|
|
|
41
42
|
export async function sendEVM(tx: Transaction) {
|
|
42
43
|
const speculosModel = getSpeculosModel();
|
|
43
|
-
if (
|
|
44
|
-
return
|
|
44
|
+
if (isTouchDevice()) {
|
|
45
|
+
return sendEvmTouchDevices(tx);
|
|
45
46
|
}
|
|
46
47
|
if (speculosModel === DeviceModelId.nanoS) {
|
|
47
48
|
return sendEvmNanoS(tx);
|
|
@@ -22,10 +22,7 @@ export async function sendSolana(tx: Transaction) {
|
|
|
22
22
|
const isAmountCorrect = containsSubstringInEvent(tx.amount, events);
|
|
23
23
|
expect(isAmountCorrect).toBeTruthy();
|
|
24
24
|
if (process.env.SPECULOS_DEVICE !== Device.LNS.name) {
|
|
25
|
-
const isAddressCorrect = containsSubstringInEvent(
|
|
26
|
-
tx.accountToCredit.parentAccount?.address ?? tx.accountToCredit.address,
|
|
27
|
-
events,
|
|
28
|
-
);
|
|
25
|
+
const isAddressCorrect = containsSubstringInEvent(tx.accountToCredit.address, events);
|
|
29
26
|
expect(isAddressCorrect).toBeTruthy();
|
|
30
27
|
}
|
|
31
28
|
|