@ledgerhq/live-common 34.55.0-nightly.20251216024112 → 34.55.0-nightly.20251218023953
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 +1 -1
- package/lib/__tests__/test-helpers/environment.js.map +1 -1
- package/lib/apps/listApps.d.ts.map +1 -1
- package/lib/apps/listApps.js +10 -0
- package/lib/apps/listApps.js.map +1 -1
- package/lib/apps/polyfill.d.ts +2 -2
- package/lib/apps/polyfill.d.ts.map +1 -1
- package/lib/apps/types.d.ts +4 -0
- package/lib/apps/types.d.ts.map +1 -1
- package/lib/apps/types.js.map +1 -1
- package/lib/bridge/descriptor.d.ts +72 -0
- package/lib/bridge/descriptor.d.ts.map +1 -0
- package/lib/bridge/descriptor.js +187 -0
- package/lib/bridge/descriptor.js.map +1 -0
- package/lib/dada-client/hooks/useAssetsData.d.ts +1 -0
- package/lib/dada-client/hooks/useAssetsData.d.ts.map +1 -1
- package/lib/dada-client/hooks/useAssetsData.js +3 -0
- package/lib/dada-client/hooks/useAssetsData.js.map +1 -1
- package/lib/dada-client/hooks/useInterestRatesByCurrencies.d.ts +1 -5
- package/lib/dada-client/hooks/useInterestRatesByCurrencies.d.ts.map +1 -1
- package/lib/dada-client/hooks/useMarketByCurrencies.d.ts +1 -4
- package/lib/dada-client/hooks/useMarketByCurrencies.d.ts.map +1 -1
- package/lib/dada-client/utils/errorUtils.d.ts +28 -0
- package/lib/dada-client/utils/errorUtils.d.ts.map +1 -0
- package/lib/dada-client/utils/errorUtils.js +53 -0
- package/lib/dada-client/utils/errorUtils.js.map +1 -0
- package/lib/e2e/index.d.ts +4 -0
- package/lib/e2e/index.d.ts.map +1 -1
- package/lib/e2e/swap.js +2 -2
- package/lib/e2e/swap.js.map +1 -1
- package/lib/env.react.d.ts +1 -1
- package/lib/env.react.d.ts.map +1 -1
- package/lib/exchange/providers/swap.d.ts.map +1 -1
- package/lib/exchange/providers/swap.js +14 -0
- package/lib/exchange/providers/swap.js.map +1 -1
- package/lib/families/algorand/config.d.ts.map +1 -1
- package/lib/families/algorand/config.js +1 -0
- package/lib/families/algorand/config.js.map +1 -1
- package/lib/families/algorand/descriptor.d.ts +3 -0
- package/lib/families/algorand/descriptor.d.ts.map +1 -0
- package/lib/families/algorand/descriptor.js +18 -0
- package/lib/families/algorand/descriptor.js.map +1 -0
- package/lib/families/aptos/config.d.ts.map +1 -1
- package/lib/families/aptos/config.js +7 -1
- package/lib/families/aptos/config.js.map +1 -1
- package/lib/families/aptos/descriptor.d.ts +3 -0
- package/lib/families/aptos/descriptor.d.ts.map +1 -0
- package/lib/families/aptos/descriptor.js +13 -0
- package/lib/families/aptos/descriptor.js.map +1 -0
- package/lib/families/bitcoin/config.d.ts.map +1 -1
- package/lib/families/bitcoin/config.js +26 -0
- package/lib/families/bitcoin/config.js.map +1 -1
- package/lib/families/bitcoin/descriptor.d.ts +3 -0
- package/lib/families/bitcoin/descriptor.d.ts.map +1 -0
- package/lib/families/bitcoin/descriptor.js +14 -0
- package/lib/families/bitcoin/descriptor.js.map +1 -0
- 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/descriptor.d.ts +3 -0
- package/lib/families/canton/descriptor.d.ts.map +1 -0
- package/lib/families/canton/descriptor.js +13 -0
- package/lib/families/canton/descriptor.js.map +1 -0
- package/lib/families/cardano/config.d.ts.map +1 -1
- package/lib/families/cardano/config.js +4 -0
- package/lib/families/cardano/config.js.map +1 -1
- package/lib/families/cardano/descriptor.d.ts +3 -0
- package/lib/families/cardano/descriptor.d.ts.map +1 -0
- package/lib/families/cardano/descriptor.js +13 -0
- package/lib/families/cardano/descriptor.js.map +1 -0
- package/lib/families/casper/config.d.ts.map +1 -1
- package/lib/families/casper/config.js +4 -0
- package/lib/families/casper/config.js.map +1 -1
- package/lib/families/casper/descriptor.d.ts +3 -0
- package/lib/families/casper/descriptor.d.ts.map +1 -0
- package/lib/families/casper/descriptor.js +17 -0
- package/lib/families/casper/descriptor.js.map +1 -0
- package/lib/families/celo/descriptor.d.ts +3 -0
- package/lib/families/celo/descriptor.d.ts.map +1 -0
- package/lib/families/celo/descriptor.js +13 -0
- package/lib/families/celo/descriptor.js.map +1 -0
- package/lib/families/cosmos/descriptor.d.ts +3 -0
- package/lib/families/cosmos/descriptor.d.ts.map +1 -0
- package/lib/families/cosmos/descriptor.js +18 -0
- package/lib/families/cosmos/descriptor.js.map +1 -0
- package/lib/families/evm/config.d.ts.map +1 -1
- package/lib/families/evm/config.js +116 -16
- package/lib/families/evm/config.js.map +1 -1
- package/lib/families/evm/descriptor.d.ts +3 -0
- package/lib/families/evm/descriptor.d.ts.map +1 -0
- package/lib/families/evm/descriptor.js +15 -0
- package/lib/families/evm/descriptor.js.map +1 -0
- package/lib/families/filecoin/config.d.ts.map +1 -1
- package/lib/families/filecoin/config.js +1 -0
- package/lib/families/filecoin/config.js.map +1 -1
- package/lib/families/filecoin/descriptor.d.ts +3 -0
- package/lib/families/filecoin/descriptor.d.ts.map +1 -0
- package/lib/families/filecoin/descriptor.js +13 -0
- package/lib/families/filecoin/descriptor.js.map +1 -0
- package/lib/families/hedera/config.d.ts.map +1 -1
- package/lib/families/hedera/config.js +1 -0
- package/lib/families/hedera/config.js.map +1 -1
- package/lib/families/hedera/descriptor.d.ts +3 -0
- package/lib/families/hedera/descriptor.d.ts.map +1 -0
- package/lib/families/hedera/descriptor.js +18 -0
- package/lib/families/hedera/descriptor.js.map +1 -0
- package/lib/families/icon/config.d.ts.map +1 -1
- package/lib/families/icon/config.js +4 -0
- package/lib/families/icon/config.js.map +1 -1
- package/lib/families/icon/descriptor.d.ts +3 -0
- package/lib/families/icon/descriptor.d.ts.map +1 -0
- package/lib/families/icon/descriptor.js +13 -0
- package/lib/families/icon/descriptor.js.map +1 -0
- package/lib/families/internet_computer/config.d.ts.map +1 -1
- package/lib/families/internet_computer/config.js +1 -0
- package/lib/families/internet_computer/config.js.map +1 -1
- package/lib/families/internet_computer/descriptor.d.ts +3 -0
- package/lib/families/internet_computer/descriptor.d.ts.map +1 -0
- package/lib/families/internet_computer/descriptor.js +17 -0
- package/lib/families/internet_computer/descriptor.js.map +1 -0
- package/lib/families/kaspa/config.d.ts.map +1 -1
- package/lib/families/kaspa/config.js +1 -0
- package/lib/families/kaspa/config.js.map +1 -1
- package/lib/families/kaspa/descriptor.d.ts +3 -0
- package/lib/families/kaspa/descriptor.d.ts.map +1 -0
- package/lib/families/kaspa/descriptor.js +13 -0
- package/lib/families/kaspa/descriptor.js.map +1 -0
- package/lib/families/mina/config.d.ts.map +1 -1
- package/lib/families/mina/config.js +7 -1
- package/lib/families/mina/config.js.map +1 -1
- package/lib/families/mina/descriptor.d.ts +3 -0
- package/lib/families/mina/descriptor.d.ts.map +1 -0
- package/lib/families/mina/descriptor.js +18 -0
- package/lib/families/mina/descriptor.js.map +1 -0
- package/lib/families/multiversx/config.d.ts.map +1 -1
- package/lib/families/multiversx/config.js +4 -0
- package/lib/families/multiversx/config.js.map +1 -1
- package/lib/families/multiversx/descriptor.d.ts +3 -0
- package/lib/families/multiversx/descriptor.d.ts.map +1 -0
- package/lib/families/multiversx/descriptor.js +13 -0
- package/lib/families/multiversx/descriptor.js.map +1 -0
- package/lib/families/near/config.d.ts.map +1 -1
- package/lib/families/near/config.js +7 -1
- package/lib/families/near/config.js.map +1 -1
- package/lib/families/near/descriptor.d.ts +3 -0
- package/lib/families/near/descriptor.d.ts.map +1 -0
- package/lib/families/near/descriptor.js +13 -0
- package/lib/families/near/descriptor.js.map +1 -0
- package/lib/families/polkadot/config.d.ts.map +1 -1
- package/lib/families/polkadot/config.js +16 -0
- package/lib/families/polkadot/config.js.map +1 -1
- package/lib/families/polkadot/descriptor.d.ts +3 -0
- package/lib/families/polkadot/descriptor.d.ts.map +1 -0
- package/lib/families/polkadot/descriptor.js +13 -0
- package/lib/families/polkadot/descriptor.js.map +1 -0
- package/lib/families/solana/bridge/mock.d.ts +1 -0
- package/lib/families/solana/bridge/mock.d.ts.map +1 -1
- package/lib/families/solana/config.d.ts.map +1 -1
- package/lib/families/solana/config.js +4 -0
- package/lib/families/solana/config.js.map +1 -1
- package/lib/families/solana/descriptor.d.ts +3 -0
- package/lib/families/solana/descriptor.d.ts.map +1 -0
- package/lib/families/solana/descriptor.js +18 -0
- package/lib/families/solana/descriptor.js.map +1 -0
- package/lib/families/stacks/config.d.ts.map +1 -1
- package/lib/families/stacks/config.js +1 -0
- package/lib/families/stacks/config.js.map +1 -1
- package/lib/families/stacks/descriptor.d.ts +3 -0
- package/lib/families/stacks/descriptor.d.ts.map +1 -0
- package/lib/families/stacks/descriptor.js +18 -0
- package/lib/families/stacks/descriptor.js.map +1 -0
- package/lib/families/stellar/config.d.ts.map +1 -1
- package/lib/families/stellar/config.js +1 -0
- package/lib/families/stellar/config.js.map +1 -1
- package/lib/families/stellar/descriptor.d.ts +3 -0
- package/lib/families/stellar/descriptor.d.ts.map +1 -0
- package/lib/families/stellar/descriptor.js +19 -0
- package/lib/families/stellar/descriptor.js.map +1 -0
- package/lib/families/sui/config.d.ts.map +1 -1
- package/lib/families/sui/config.js +1 -0
- package/lib/families/sui/config.js.map +1 -1
- package/lib/families/sui/descriptor.d.ts +3 -0
- package/lib/families/sui/descriptor.d.ts.map +1 -0
- package/lib/families/sui/descriptor.js +13 -0
- package/lib/families/sui/descriptor.js.map +1 -0
- package/lib/families/tezos/config.d.ts.map +1 -1
- package/lib/families/tezos/config.js +4 -0
- package/lib/families/tezos/config.js.map +1 -1
- package/lib/families/tezos/descriptor.d.ts +3 -0
- package/lib/families/tezos/descriptor.d.ts.map +1 -0
- package/lib/families/tezos/descriptor.js +13 -0
- package/lib/families/tezos/descriptor.js.map +1 -0
- package/lib/families/ton/config.d.ts.map +1 -1
- package/lib/families/ton/config.js +4 -1
- package/lib/families/ton/config.js.map +1 -1
- package/lib/families/ton/descriptor.d.ts +3 -0
- package/lib/families/ton/descriptor.d.ts.map +1 -0
- package/lib/families/ton/descriptor.js +17 -0
- package/lib/families/ton/descriptor.js.map +1 -0
- package/lib/families/tron/config.d.ts.map +1 -1
- package/lib/families/tron/config.js +4 -0
- package/lib/families/tron/config.js.map +1 -1
- package/lib/families/tron/descriptor.d.ts +3 -0
- package/lib/families/tron/descriptor.d.ts.map +1 -0
- package/lib/families/tron/descriptor.js +13 -0
- package/lib/families/tron/descriptor.js.map +1 -0
- package/lib/families/vechain/config.d.ts.map +1 -1
- package/lib/families/vechain/config.js +4 -1
- package/lib/families/vechain/config.js.map +1 -1
- package/lib/families/vechain/descriptor.d.ts +3 -0
- package/lib/families/vechain/descriptor.d.ts.map +1 -0
- package/lib/families/vechain/descriptor.js +13 -0
- package/lib/families/vechain/descriptor.js.map +1 -0
- package/lib/families/xrp/config.d.ts.map +1 -1
- package/lib/families/xrp/config.js +1 -0
- package/lib/families/xrp/config.js.map +1 -1
- package/lib/families/xrp/descriptor.d.ts +3 -0
- package/lib/families/xrp/descriptor.d.ts.map +1 -0
- package/lib/families/xrp/descriptor.js +18 -0
- package/lib/families/xrp/descriptor.js.map +1 -0
- package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
- package/lib/featureFlags/defaultFeatures.js +7 -0
- 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/mock.d.ts +1 -0
- package/lib/generated/bridge/mock.d.ts.map +1 -1
- package/lib/hw/actions/app.d.ts +2 -0
- package/lib/hw/actions/app.d.ts.map +1 -1
- package/lib/hw/actions/app.js +8 -2
- package/lib/hw/actions/app.js.map +1 -1
- package/lib/hw/actions/manager.d.ts +2 -0
- package/lib/hw/actions/manager.d.ts.map +1 -1
- package/lib/hw/actions/manager.js +6 -0
- package/lib/hw/actions/manager.js.map +1 -1
- package/lib/hw/connectApp.d.ts +4 -0
- package/lib/hw/connectApp.d.ts.map +1 -1
- package/lib/hw/connectApp.js +1 -1
- package/lib/hw/connectApp.js.map +1 -1
- package/lib/hw/connectAppEventMapper.d.ts +1 -0
- package/lib/hw/connectAppEventMapper.d.ts.map +1 -1
- package/lib/hw/connectAppEventMapper.js +12 -0
- package/lib/hw/connectAppEventMapper.js.map +1 -1
- package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js +1 -1
- package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js.map +1 -1
- package/lib/modularDrawer/utils/getLoadingStatus.d.ts +1 -1
- package/lib/modularDrawer/utils/getLoadingStatus.d.ts.map +1 -1
- package/lib/socket/index.d.ts.map +1 -1
- package/lib/socket/index.js +28 -0
- package/lib/socket/index.js.map +1 -1
- package/lib/wallet-api/logic.d.ts +1 -1
- package/lib/wallet-api/logic.d.ts.map +1 -1
- package/lib/wallet-api/logic.js +5 -5
- package/lib/wallet-api/logic.js.map +1 -1
- package/lib/wallet-api/react.d.ts.map +1 -1
- package/lib/wallet-api/react.js +7 -6
- package/lib/wallet-api/react.js.map +1 -1
- package/lib/wallet-api/tracking.d.ts +5 -5
- package/lib/wallet-api/tracking.d.ts.map +1 -1
- package/lib/wallet-api/tracking.js +10 -5
- package/lib/wallet-api/tracking.js.map +1 -1
- package/lib-es/__tests__/test-helpers/environment.js +1 -1
- package/lib-es/__tests__/test-helpers/environment.js.map +1 -1
- package/lib-es/apps/listApps.d.ts.map +1 -1
- package/lib-es/apps/listApps.js +10 -0
- package/lib-es/apps/listApps.js.map +1 -1
- package/lib-es/apps/polyfill.d.ts +2 -2
- package/lib-es/apps/polyfill.d.ts.map +1 -1
- package/lib-es/apps/types.d.ts +4 -0
- package/lib-es/apps/types.d.ts.map +1 -1
- package/lib-es/apps/types.js.map +1 -1
- package/lib-es/bridge/descriptor.d.ts +72 -0
- package/lib-es/bridge/descriptor.d.ts.map +1 -0
- package/lib-es/bridge/descriptor.js +181 -0
- package/lib-es/bridge/descriptor.js.map +1 -0
- package/lib-es/dada-client/hooks/useAssetsData.d.ts +1 -0
- package/lib-es/dada-client/hooks/useAssetsData.d.ts.map +1 -1
- package/lib-es/dada-client/hooks/useAssetsData.js +3 -0
- package/lib-es/dada-client/hooks/useAssetsData.js.map +1 -1
- package/lib-es/dada-client/hooks/useInterestRatesByCurrencies.d.ts +1 -5
- package/lib-es/dada-client/hooks/useInterestRatesByCurrencies.d.ts.map +1 -1
- package/lib-es/dada-client/hooks/useMarketByCurrencies.d.ts +1 -4
- package/lib-es/dada-client/hooks/useMarketByCurrencies.d.ts.map +1 -1
- package/lib-es/dada-client/utils/errorUtils.d.ts +28 -0
- package/lib-es/dada-client/utils/errorUtils.d.ts.map +1 -0
- package/lib-es/dada-client/utils/errorUtils.js +45 -0
- package/lib-es/dada-client/utils/errorUtils.js.map +1 -0
- package/lib-es/e2e/index.d.ts +4 -0
- package/lib-es/e2e/index.d.ts.map +1 -1
- package/lib-es/e2e/swap.js +2 -2
- package/lib-es/e2e/swap.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/providers/swap.d.ts.map +1 -1
- package/lib-es/exchange/providers/swap.js +14 -0
- package/lib-es/exchange/providers/swap.js.map +1 -1
- package/lib-es/families/algorand/config.d.ts.map +1 -1
- package/lib-es/families/algorand/config.js +1 -0
- package/lib-es/families/algorand/config.js.map +1 -1
- package/lib-es/families/algorand/descriptor.d.ts +3 -0
- package/lib-es/families/algorand/descriptor.d.ts.map +1 -0
- package/lib-es/families/algorand/descriptor.js +15 -0
- package/lib-es/families/algorand/descriptor.js.map +1 -0
- package/lib-es/families/aptos/config.d.ts.map +1 -1
- package/lib-es/families/aptos/config.js +7 -1
- package/lib-es/families/aptos/config.js.map +1 -1
- package/lib-es/families/aptos/descriptor.d.ts +3 -0
- package/lib-es/families/aptos/descriptor.d.ts.map +1 -0
- package/lib-es/families/aptos/descriptor.js +10 -0
- package/lib-es/families/aptos/descriptor.js.map +1 -0
- package/lib-es/families/bitcoin/config.d.ts.map +1 -1
- package/lib-es/families/bitcoin/config.js +26 -0
- package/lib-es/families/bitcoin/config.js.map +1 -1
- package/lib-es/families/bitcoin/descriptor.d.ts +3 -0
- package/lib-es/families/bitcoin/descriptor.d.ts.map +1 -0
- package/lib-es/families/bitcoin/descriptor.js +11 -0
- package/lib-es/families/bitcoin/descriptor.js.map +1 -0
- 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/descriptor.d.ts +3 -0
- package/lib-es/families/canton/descriptor.d.ts.map +1 -0
- package/lib-es/families/canton/descriptor.js +10 -0
- package/lib-es/families/canton/descriptor.js.map +1 -0
- package/lib-es/families/cardano/config.d.ts.map +1 -1
- package/lib-es/families/cardano/config.js +4 -0
- package/lib-es/families/cardano/config.js.map +1 -1
- package/lib-es/families/cardano/descriptor.d.ts +3 -0
- package/lib-es/families/cardano/descriptor.d.ts.map +1 -0
- package/lib-es/families/cardano/descriptor.js +10 -0
- package/lib-es/families/cardano/descriptor.js.map +1 -0
- package/lib-es/families/casper/config.d.ts.map +1 -1
- package/lib-es/families/casper/config.js +4 -0
- package/lib-es/families/casper/config.js.map +1 -1
- package/lib-es/families/casper/descriptor.d.ts +3 -0
- package/lib-es/families/casper/descriptor.d.ts.map +1 -0
- package/lib-es/families/casper/descriptor.js +14 -0
- package/lib-es/families/casper/descriptor.js.map +1 -0
- package/lib-es/families/celo/descriptor.d.ts +3 -0
- package/lib-es/families/celo/descriptor.d.ts.map +1 -0
- package/lib-es/families/celo/descriptor.js +10 -0
- package/lib-es/families/celo/descriptor.js.map +1 -0
- package/lib-es/families/cosmos/descriptor.d.ts +3 -0
- package/lib-es/families/cosmos/descriptor.d.ts.map +1 -0
- package/lib-es/families/cosmos/descriptor.js +15 -0
- package/lib-es/families/cosmos/descriptor.js.map +1 -0
- package/lib-es/families/evm/config.d.ts.map +1 -1
- package/lib-es/families/evm/config.js +116 -16
- package/lib-es/families/evm/config.js.map +1 -1
- package/lib-es/families/evm/descriptor.d.ts +3 -0
- package/lib-es/families/evm/descriptor.d.ts.map +1 -0
- package/lib-es/families/evm/descriptor.js +12 -0
- package/lib-es/families/evm/descriptor.js.map +1 -0
- package/lib-es/families/filecoin/config.d.ts.map +1 -1
- package/lib-es/families/filecoin/config.js +1 -0
- package/lib-es/families/filecoin/config.js.map +1 -1
- package/lib-es/families/filecoin/descriptor.d.ts +3 -0
- package/lib-es/families/filecoin/descriptor.d.ts.map +1 -0
- package/lib-es/families/filecoin/descriptor.js +10 -0
- package/lib-es/families/filecoin/descriptor.js.map +1 -0
- package/lib-es/families/hedera/config.d.ts.map +1 -1
- package/lib-es/families/hedera/config.js +1 -0
- package/lib-es/families/hedera/config.js.map +1 -1
- package/lib-es/families/hedera/descriptor.d.ts +3 -0
- package/lib-es/families/hedera/descriptor.d.ts.map +1 -0
- package/lib-es/families/hedera/descriptor.js +15 -0
- package/lib-es/families/hedera/descriptor.js.map +1 -0
- package/lib-es/families/icon/config.d.ts.map +1 -1
- package/lib-es/families/icon/config.js +4 -0
- package/lib-es/families/icon/config.js.map +1 -1
- package/lib-es/families/icon/descriptor.d.ts +3 -0
- package/lib-es/families/icon/descriptor.d.ts.map +1 -0
- package/lib-es/families/icon/descriptor.js +10 -0
- package/lib-es/families/icon/descriptor.js.map +1 -0
- package/lib-es/families/internet_computer/config.d.ts.map +1 -1
- package/lib-es/families/internet_computer/config.js +1 -0
- package/lib-es/families/internet_computer/config.js.map +1 -1
- package/lib-es/families/internet_computer/descriptor.d.ts +3 -0
- package/lib-es/families/internet_computer/descriptor.d.ts.map +1 -0
- package/lib-es/families/internet_computer/descriptor.js +14 -0
- package/lib-es/families/internet_computer/descriptor.js.map +1 -0
- package/lib-es/families/kaspa/config.d.ts.map +1 -1
- package/lib-es/families/kaspa/config.js +1 -0
- package/lib-es/families/kaspa/config.js.map +1 -1
- package/lib-es/families/kaspa/descriptor.d.ts +3 -0
- package/lib-es/families/kaspa/descriptor.d.ts.map +1 -0
- package/lib-es/families/kaspa/descriptor.js +10 -0
- package/lib-es/families/kaspa/descriptor.js.map +1 -0
- package/lib-es/families/mina/config.d.ts.map +1 -1
- package/lib-es/families/mina/config.js +7 -1
- package/lib-es/families/mina/config.js.map +1 -1
- package/lib-es/families/mina/descriptor.d.ts +3 -0
- package/lib-es/families/mina/descriptor.d.ts.map +1 -0
- package/lib-es/families/mina/descriptor.js +15 -0
- package/lib-es/families/mina/descriptor.js.map +1 -0
- package/lib-es/families/multiversx/config.d.ts.map +1 -1
- package/lib-es/families/multiversx/config.js +4 -0
- package/lib-es/families/multiversx/config.js.map +1 -1
- package/lib-es/families/multiversx/descriptor.d.ts +3 -0
- package/lib-es/families/multiversx/descriptor.d.ts.map +1 -0
- package/lib-es/families/multiversx/descriptor.js +10 -0
- package/lib-es/families/multiversx/descriptor.js.map +1 -0
- package/lib-es/families/near/config.d.ts.map +1 -1
- package/lib-es/families/near/config.js +7 -1
- package/lib-es/families/near/config.js.map +1 -1
- package/lib-es/families/near/descriptor.d.ts +3 -0
- package/lib-es/families/near/descriptor.d.ts.map +1 -0
- package/lib-es/families/near/descriptor.js +10 -0
- package/lib-es/families/near/descriptor.js.map +1 -0
- package/lib-es/families/polkadot/config.d.ts.map +1 -1
- package/lib-es/families/polkadot/config.js +16 -0
- package/lib-es/families/polkadot/config.js.map +1 -1
- package/lib-es/families/polkadot/descriptor.d.ts +3 -0
- package/lib-es/families/polkadot/descriptor.d.ts.map +1 -0
- package/lib-es/families/polkadot/descriptor.js +10 -0
- package/lib-es/families/polkadot/descriptor.js.map +1 -0
- package/lib-es/families/solana/bridge/mock.d.ts +1 -0
- package/lib-es/families/solana/bridge/mock.d.ts.map +1 -1
- package/lib-es/families/solana/config.d.ts.map +1 -1
- package/lib-es/families/solana/config.js +4 -0
- package/lib-es/families/solana/config.js.map +1 -1
- package/lib-es/families/solana/descriptor.d.ts +3 -0
- package/lib-es/families/solana/descriptor.d.ts.map +1 -0
- package/lib-es/families/solana/descriptor.js +15 -0
- package/lib-es/families/solana/descriptor.js.map +1 -0
- package/lib-es/families/stacks/config.d.ts.map +1 -1
- package/lib-es/families/stacks/config.js +1 -0
- package/lib-es/families/stacks/config.js.map +1 -1
- package/lib-es/families/stacks/descriptor.d.ts +3 -0
- package/lib-es/families/stacks/descriptor.d.ts.map +1 -0
- package/lib-es/families/stacks/descriptor.js +15 -0
- package/lib-es/families/stacks/descriptor.js.map +1 -0
- package/lib-es/families/stellar/config.d.ts.map +1 -1
- package/lib-es/families/stellar/config.js +1 -0
- package/lib-es/families/stellar/config.js.map +1 -1
- package/lib-es/families/stellar/descriptor.d.ts +3 -0
- package/lib-es/families/stellar/descriptor.d.ts.map +1 -0
- package/lib-es/families/stellar/descriptor.js +16 -0
- package/lib-es/families/stellar/descriptor.js.map +1 -0
- package/lib-es/families/sui/config.d.ts.map +1 -1
- package/lib-es/families/sui/config.js +1 -0
- package/lib-es/families/sui/config.js.map +1 -1
- package/lib-es/families/sui/descriptor.d.ts +3 -0
- package/lib-es/families/sui/descriptor.d.ts.map +1 -0
- package/lib-es/families/sui/descriptor.js +10 -0
- package/lib-es/families/sui/descriptor.js.map +1 -0
- package/lib-es/families/tezos/config.d.ts.map +1 -1
- package/lib-es/families/tezos/config.js +4 -0
- package/lib-es/families/tezos/config.js.map +1 -1
- package/lib-es/families/tezos/descriptor.d.ts +3 -0
- package/lib-es/families/tezos/descriptor.d.ts.map +1 -0
- package/lib-es/families/tezos/descriptor.js +10 -0
- package/lib-es/families/tezos/descriptor.js.map +1 -0
- package/lib-es/families/ton/config.d.ts.map +1 -1
- package/lib-es/families/ton/config.js +4 -1
- package/lib-es/families/ton/config.js.map +1 -1
- package/lib-es/families/ton/descriptor.d.ts +3 -0
- package/lib-es/families/ton/descriptor.d.ts.map +1 -0
- package/lib-es/families/ton/descriptor.js +14 -0
- package/lib-es/families/ton/descriptor.js.map +1 -0
- package/lib-es/families/tron/config.d.ts.map +1 -1
- package/lib-es/families/tron/config.js +4 -0
- package/lib-es/families/tron/config.js.map +1 -1
- package/lib-es/families/tron/descriptor.d.ts +3 -0
- package/lib-es/families/tron/descriptor.d.ts.map +1 -0
- package/lib-es/families/tron/descriptor.js +10 -0
- package/lib-es/families/tron/descriptor.js.map +1 -0
- package/lib-es/families/vechain/config.d.ts.map +1 -1
- package/lib-es/families/vechain/config.js +4 -1
- package/lib-es/families/vechain/config.js.map +1 -1
- package/lib-es/families/vechain/descriptor.d.ts +3 -0
- package/lib-es/families/vechain/descriptor.d.ts.map +1 -0
- package/lib-es/families/vechain/descriptor.js +10 -0
- package/lib-es/families/vechain/descriptor.js.map +1 -0
- package/lib-es/families/xrp/config.d.ts.map +1 -1
- package/lib-es/families/xrp/config.js +1 -0
- package/lib-es/families/xrp/config.js.map +1 -1
- package/lib-es/families/xrp/descriptor.d.ts +3 -0
- package/lib-es/families/xrp/descriptor.d.ts.map +1 -0
- package/lib-es/families/xrp/descriptor.js +15 -0
- package/lib-es/families/xrp/descriptor.js.map +1 -0
- package/lib-es/featureFlags/defaultFeatures.d.ts.map +1 -1
- package/lib-es/featureFlags/defaultFeatures.js +7 -0
- 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/mock.d.ts +1 -0
- package/lib-es/generated/bridge/mock.d.ts.map +1 -1
- package/lib-es/hw/actions/app.d.ts +2 -0
- package/lib-es/hw/actions/app.d.ts.map +1 -1
- package/lib-es/hw/actions/app.js +8 -2
- package/lib-es/hw/actions/app.js.map +1 -1
- package/lib-es/hw/actions/manager.d.ts +2 -0
- package/lib-es/hw/actions/manager.d.ts.map +1 -1
- package/lib-es/hw/actions/manager.js +6 -0
- package/lib-es/hw/actions/manager.js.map +1 -1
- package/lib-es/hw/connectApp.d.ts +4 -0
- package/lib-es/hw/connectApp.d.ts.map +1 -1
- package/lib-es/hw/connectApp.js +1 -1
- package/lib-es/hw/connectApp.js.map +1 -1
- package/lib-es/hw/connectAppEventMapper.d.ts +1 -0
- package/lib-es/hw/connectAppEventMapper.d.ts.map +1 -1
- package/lib-es/hw/connectAppEventMapper.js +12 -0
- package/lib-es/hw/connectAppEventMapper.js.map +1 -1
- package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js +1 -1
- package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js.map +1 -1
- package/lib-es/modularDrawer/utils/getLoadingStatus.d.ts +1 -1
- package/lib-es/modularDrawer/utils/getLoadingStatus.d.ts.map +1 -1
- package/lib-es/socket/index.d.ts.map +1 -1
- package/lib-es/socket/index.js +28 -0
- package/lib-es/socket/index.js.map +1 -1
- package/lib-es/wallet-api/logic.d.ts +1 -1
- package/lib-es/wallet-api/logic.d.ts.map +1 -1
- package/lib-es/wallet-api/logic.js +5 -5
- package/lib-es/wallet-api/logic.js.map +1 -1
- package/lib-es/wallet-api/react.d.ts.map +1 -1
- package/lib-es/wallet-api/react.js +7 -6
- package/lib-es/wallet-api/react.js.map +1 -1
- package/lib-es/wallet-api/tracking.d.ts +5 -5
- package/lib-es/wallet-api/tracking.d.ts.map +1 -1
- package/lib-es/wallet-api/tracking.js +10 -5
- package/lib-es/wallet-api/tracking.js.map +1 -1
- package/package.json +81 -77
- package/src/__tests__/migration/account-migration.ts +1 -1
- package/src/__tests__/test-helpers/environment.ts +1 -1
- package/src/apps/listApps.ts +11 -0
- package/src/apps/types.ts +5 -0
- package/src/bridge/descriptor.test.ts +211 -0
- package/src/bridge/descriptor.ts +256 -0
- package/src/dada-client/hooks/useAssetsData.ts +4 -0
- package/src/dada-client/utils/__test__/errorUtils.test.ts +222 -0
- package/src/dada-client/utils/errorUtils.ts +57 -0
- package/src/e2e/swap.ts +2 -2
- package/src/exchange/providers/swap.ts +20 -0
- package/src/families/algorand/config.ts +1 -0
- package/src/families/algorand/descriptor.ts +16 -0
- package/src/families/aptos/config.ts +7 -1
- package/src/families/aptos/descriptor.ts +11 -0
- package/src/families/bitcoin/config.ts +26 -0
- package/src/families/bitcoin/descriptor.ts +12 -0
- package/src/families/canton/config.ts +3 -0
- package/src/families/canton/descriptor.ts +11 -0
- package/src/families/cardano/config.ts +4 -0
- package/src/families/cardano/descriptor.ts +11 -0
- package/src/families/casper/config.ts +4 -0
- package/src/families/casper/descriptor.ts +15 -0
- package/src/families/celo/descriptor.ts +11 -0
- package/src/families/cosmos/descriptor.ts +16 -0
- package/src/families/evm/config.ts +116 -16
- package/src/families/evm/descriptor.ts +13 -0
- package/src/families/filecoin/config.ts +1 -0
- package/src/families/filecoin/descriptor.ts +11 -0
- package/src/families/hedera/config.ts +1 -0
- package/src/families/hedera/descriptor.ts +16 -0
- package/src/families/icon/config.ts +4 -0
- package/src/families/icon/descriptor.ts +11 -0
- package/src/families/internet_computer/config.ts +1 -0
- package/src/families/internet_computer/descriptor.ts +15 -0
- package/src/families/kaspa/config.ts +1 -0
- package/src/families/kaspa/descriptor.ts +11 -0
- package/src/families/mina/config.ts +7 -1
- package/src/families/mina/descriptor.ts +16 -0
- package/src/families/multiversx/config.ts +4 -0
- package/src/families/multiversx/descriptor.ts +11 -0
- package/src/families/near/config.ts +7 -1
- package/src/families/near/descriptor.ts +11 -0
- package/src/families/polkadot/config.ts +16 -0
- package/src/families/polkadot/descriptor.ts +11 -0
- package/src/families/solana/config.ts +4 -0
- package/src/families/solana/descriptor.ts +16 -0
- package/src/families/stacks/config.ts +1 -0
- package/src/families/stacks/descriptor.ts +16 -0
- package/src/families/stellar/config.ts +1 -0
- package/src/families/stellar/descriptor.ts +17 -0
- package/src/families/sui/config.ts +1 -0
- package/src/families/sui/descriptor.ts +11 -0
- package/src/families/tezos/config.ts +4 -0
- package/src/families/tezos/descriptor.ts +11 -0
- package/src/families/ton/config.ts +4 -1
- package/src/families/ton/descriptor.ts +15 -0
- package/src/families/tron/config.ts +4 -0
- package/src/families/tron/descriptor.ts +11 -0
- package/src/families/vechain/config.ts +4 -1
- package/src/families/vechain/descriptor.ts +11 -0
- package/src/families/xrp/config.ts +1 -0
- package/src/families/xrp/descriptor.ts +16 -0
- package/src/featureFlags/defaultFeatures.ts +8 -0
- package/src/hw/actions/app.ts +12 -3
- package/src/hw/actions/manager.ts +13 -0
- package/src/hw/connectApp.ts +6 -1
- package/src/hw/connectAppEventMapper.ts +12 -0
- package/src/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.ts +1 -1
- package/src/modularDrawer/utils/getLoadingStatus.ts +1 -1
- package/src/platform/react.ts +1 -1
- package/src/socket/index.ts +35 -0
- package/src/wallet-api/logic.ts +5 -4
- package/src/wallet-api/react.ts +8 -6
- package/src/wallet-api/tracking.test.ts +29 -0
- package/src/wallet-api/tracking.ts +14 -5
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import type { CryptoOrTokenCurrency, CryptoCurrency } from "@ledgerhq/types-cryptoassets";
|
|
2
|
+
import type { FeatureId, FeatureConfig } from "@ledgerhq/coin-framework/features/types";
|
|
3
|
+
import { getCurrencyBridge } from "./impl";
|
|
4
|
+
import { getCurrencyConfiguration } from "../config/index";
|
|
5
|
+
import { descriptor as algorandDescriptor } from "../families/algorand/descriptor";
|
|
6
|
+
import { descriptor as aptosDescriptor } from "../families/aptos/descriptor";
|
|
7
|
+
import { descriptor as bitcoinDescriptor } from "../families/bitcoin/descriptor";
|
|
8
|
+
import { descriptor as cantonDescriptor } from "../families/canton/descriptor";
|
|
9
|
+
import { descriptor as cardanoDescriptor } from "../families/cardano/descriptor";
|
|
10
|
+
import { descriptor as casperDescriptor } from "../families/casper/descriptor";
|
|
11
|
+
import { descriptor as celoDescriptor } from "../families/celo/descriptor";
|
|
12
|
+
import { descriptor as cosmosDescriptor } from "../families/cosmos/descriptor";
|
|
13
|
+
import { descriptor as evmDescriptor } from "../families/evm/descriptor";
|
|
14
|
+
import { descriptor as filecoinDescriptor } from "../families/filecoin/descriptor";
|
|
15
|
+
import { descriptor as hederaDescriptor } from "../families/hedera/descriptor";
|
|
16
|
+
import { descriptor as iconDescriptor } from "../families/icon/descriptor";
|
|
17
|
+
import { descriptor as internetComputerDescriptor } from "../families/internet_computer/descriptor";
|
|
18
|
+
import { descriptor as kaspaDescriptor } from "../families/kaspa/descriptor";
|
|
19
|
+
import { descriptor as minaDescriptor } from "../families/mina/descriptor";
|
|
20
|
+
import { descriptor as multiversxDescriptor } from "../families/multiversx/descriptor";
|
|
21
|
+
import { descriptor as nearDescriptor } from "../families/near/descriptor";
|
|
22
|
+
import { descriptor as polkadotDescriptor } from "../families/polkadot/descriptor";
|
|
23
|
+
import { descriptor as solanaDescriptor } from "../families/solana/descriptor";
|
|
24
|
+
import { descriptor as stacksDescriptor } from "../families/stacks/descriptor";
|
|
25
|
+
import { descriptor as stellarDescriptor } from "../families/stellar/descriptor";
|
|
26
|
+
import { descriptor as suiDescriptor } from "../families/sui/descriptor";
|
|
27
|
+
import { descriptor as tezosDescriptor } from "../families/tezos/descriptor";
|
|
28
|
+
import { descriptor as tonDescriptor } from "../families/ton/descriptor";
|
|
29
|
+
import { descriptor as tronDescriptor } from "../families/tron/descriptor";
|
|
30
|
+
import { descriptor as vechainDescriptor } from "../families/vechain/descriptor";
|
|
31
|
+
import { descriptor as xrpDescriptor } from "../families/xrp/descriptor";
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Memo field type configuration
|
|
35
|
+
*/
|
|
36
|
+
export type MemoType =
|
|
37
|
+
| "text" // Simple text memo (cosmos, solana, algorand)
|
|
38
|
+
| "tag" // Numeric tag (xrp destination tag, casper transfer id)
|
|
39
|
+
| "typed"; // Typed memo with predefined options (stellar)
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Input field types for descriptors
|
|
43
|
+
*/
|
|
44
|
+
export type InputFieldType = "text" | "number" | "tag" | "typed";
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Input field descriptor for a transaction flow
|
|
48
|
+
*/
|
|
49
|
+
export type InputDescriptor = Readonly<{
|
|
50
|
+
type: InputFieldType;
|
|
51
|
+
maxLength?: number;
|
|
52
|
+
maxValue?: number;
|
|
53
|
+
options?: readonly string[];
|
|
54
|
+
supportsDomain?: boolean; // Whether the field supports domain names (ENS for EVM)
|
|
55
|
+
}>;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Fee input options
|
|
59
|
+
*/
|
|
60
|
+
export type FeeDescriptor = {
|
|
61
|
+
hasPresets: boolean;
|
|
62
|
+
hasCustom: boolean;
|
|
63
|
+
hasCoinControl?: boolean;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Send flow descriptor defining inputs for the send transaction
|
|
68
|
+
*/
|
|
69
|
+
export type SendDescriptor = {
|
|
70
|
+
inputs: {
|
|
71
|
+
recipientSupportsDomain?: boolean; // Whether recipient field supports domain names (ENS for EVM)
|
|
72
|
+
memo?: InputDescriptor;
|
|
73
|
+
};
|
|
74
|
+
fees: FeeDescriptor;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Complete flow descriptors for a coin
|
|
79
|
+
*/
|
|
80
|
+
export type CoinDescriptor = {
|
|
81
|
+
send: SendDescriptor;
|
|
82
|
+
// Future: stake, swap, etc.
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export const newFlowsConfig: Record<
|
|
86
|
+
string,
|
|
87
|
+
{ send?: boolean; staking?: boolean; receive?: boolean }
|
|
88
|
+
> = {
|
|
89
|
+
algorand: { send: false },
|
|
90
|
+
aptos: { send: false },
|
|
91
|
+
bitcoin: { send: false },
|
|
92
|
+
canton: { send: false },
|
|
93
|
+
cardano: { send: false },
|
|
94
|
+
casper: { send: false },
|
|
95
|
+
celo: { send: false },
|
|
96
|
+
cosmos: { send: false },
|
|
97
|
+
evm: { send: false },
|
|
98
|
+
filecoin: { send: false },
|
|
99
|
+
hedera: { send: false },
|
|
100
|
+
icon: { send: false },
|
|
101
|
+
internet_computer: { send: false },
|
|
102
|
+
kaspa: { send: false },
|
|
103
|
+
mina: { send: false },
|
|
104
|
+
multiversx: { send: false },
|
|
105
|
+
near: { send: false },
|
|
106
|
+
polkadot: { send: false },
|
|
107
|
+
solana: { send: false },
|
|
108
|
+
stacks: { send: false },
|
|
109
|
+
stellar: { send: false },
|
|
110
|
+
sui: { send: false },
|
|
111
|
+
tezos: { send: false },
|
|
112
|
+
ton: { send: false },
|
|
113
|
+
tron: { send: false },
|
|
114
|
+
vechain: { send: false },
|
|
115
|
+
xrp: { send: false },
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const descriptorRegistry: Record<string, CoinDescriptor> = {
|
|
119
|
+
algorand: algorandDescriptor,
|
|
120
|
+
aptos: aptosDescriptor,
|
|
121
|
+
bitcoin: bitcoinDescriptor,
|
|
122
|
+
canton: cantonDescriptor,
|
|
123
|
+
cardano: cardanoDescriptor,
|
|
124
|
+
casper: casperDescriptor,
|
|
125
|
+
celo: celoDescriptor,
|
|
126
|
+
cosmos: cosmosDescriptor,
|
|
127
|
+
evm: evmDescriptor,
|
|
128
|
+
filecoin: filecoinDescriptor,
|
|
129
|
+
hedera: hederaDescriptor,
|
|
130
|
+
icon: iconDescriptor,
|
|
131
|
+
internet_computer: internetComputerDescriptor,
|
|
132
|
+
kaspa: kaspaDescriptor,
|
|
133
|
+
mina: minaDescriptor,
|
|
134
|
+
multiversx: multiversxDescriptor,
|
|
135
|
+
near: nearDescriptor,
|
|
136
|
+
polkadot: polkadotDescriptor,
|
|
137
|
+
solana: solanaDescriptor,
|
|
138
|
+
stacks: stacksDescriptor,
|
|
139
|
+
stellar: stellarDescriptor,
|
|
140
|
+
sui: suiDescriptor,
|
|
141
|
+
tezos: tezosDescriptor,
|
|
142
|
+
ton: tonDescriptor,
|
|
143
|
+
tron: tronDescriptor,
|
|
144
|
+
vechain: vechainDescriptor,
|
|
145
|
+
xrp: xrpDescriptor,
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
function isFeatureActive(currency: CryptoCurrency, featureId: FeatureId): boolean {
|
|
149
|
+
try {
|
|
150
|
+
const currencyConfig = getCurrencyConfiguration(currency);
|
|
151
|
+
|
|
152
|
+
if (currencyConfig.status.type !== "active") {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Type guard
|
|
157
|
+
const features = (currencyConfig.status as { type: "active"; features?: FeatureConfig[] })
|
|
158
|
+
.features;
|
|
159
|
+
return features?.find(f => f.id === featureId)?.status === "active";
|
|
160
|
+
} catch {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Get the full descriptor for a given currency via the CurrencyBridge
|
|
167
|
+
*/
|
|
168
|
+
export function getDescriptor(currency: CryptoOrTokenCurrency | undefined): CoinDescriptor | null {
|
|
169
|
+
if (!currency) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const cryptoCurrency = currency.type === "TokenCurrency" ? currency.parentCurrency : currency;
|
|
174
|
+
const bridge = getCurrencyBridge(cryptoCurrency);
|
|
175
|
+
|
|
176
|
+
// Check if bridge implements getDescriptor directly
|
|
177
|
+
if ("getDescriptor" in bridge && typeof bridge.getDescriptor === "function") {
|
|
178
|
+
return bridge.getDescriptor(cryptoCurrency) as CoinDescriptor;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Fallback: use the descriptor registry and check feature flags
|
|
182
|
+
const fullDescriptor = descriptorRegistry[cryptoCurrency.family];
|
|
183
|
+
|
|
184
|
+
if (!fullDescriptor) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (fullDescriptor.send && isFeatureActive(cryptoCurrency, "blockchain_txs")) {
|
|
189
|
+
return fullDescriptor;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Get the send flow descriptor for a given currency
|
|
197
|
+
*/
|
|
198
|
+
export function getSendDescriptor(
|
|
199
|
+
currency: CryptoOrTokenCurrency | undefined,
|
|
200
|
+
): SendDescriptor | null {
|
|
201
|
+
const descriptor = getDescriptor(currency);
|
|
202
|
+
return descriptor?.send ?? null;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/*
|
|
206
|
+
* Check if the currency supports the new flows
|
|
207
|
+
*/
|
|
208
|
+
export function supportsNewFlows(
|
|
209
|
+
currency: CryptoOrTokenCurrency,
|
|
210
|
+
flow: "send" | "staking" | "receive",
|
|
211
|
+
): boolean {
|
|
212
|
+
const cryptoCurrency = currency.type === "TokenCurrency" ? currency.parentCurrency : currency;
|
|
213
|
+
return newFlowsConfig[cryptoCurrency.family]?.[flow] ?? false;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Helper functions to check send flow capabilities
|
|
218
|
+
*/
|
|
219
|
+
export const sendFeatures = {
|
|
220
|
+
hasMemo: (currency: CryptoOrTokenCurrency | undefined): boolean => {
|
|
221
|
+
const descriptor = getSendDescriptor(currency);
|
|
222
|
+
return descriptor?.inputs.memo !== undefined;
|
|
223
|
+
},
|
|
224
|
+
hasFeePresets: (currency: CryptoOrTokenCurrency | undefined): boolean => {
|
|
225
|
+
const descriptor = getSendDescriptor(currency);
|
|
226
|
+
return descriptor?.fees.hasPresets ?? false;
|
|
227
|
+
},
|
|
228
|
+
hasCustomFees: (currency: CryptoOrTokenCurrency | undefined): boolean => {
|
|
229
|
+
const descriptor = getSendDescriptor(currency);
|
|
230
|
+
return descriptor?.fees.hasCustom ?? false;
|
|
231
|
+
},
|
|
232
|
+
hasCoinControl: (currency: CryptoOrTokenCurrency | undefined): boolean => {
|
|
233
|
+
const descriptor = getSendDescriptor(currency);
|
|
234
|
+
return descriptor?.fees.hasCoinControl ?? false;
|
|
235
|
+
},
|
|
236
|
+
getMemoType: (currency: CryptoOrTokenCurrency | undefined) => {
|
|
237
|
+
const descriptor = getSendDescriptor(currency);
|
|
238
|
+
return descriptor?.inputs.memo?.type;
|
|
239
|
+
},
|
|
240
|
+
getMemoMaxLength: (currency: CryptoOrTokenCurrency | undefined) => {
|
|
241
|
+
const descriptor = getSendDescriptor(currency);
|
|
242
|
+
return descriptor?.inputs.memo?.maxLength;
|
|
243
|
+
},
|
|
244
|
+
getMemoMaxValue: (currency: CryptoOrTokenCurrency | undefined) => {
|
|
245
|
+
const descriptor = getSendDescriptor(currency);
|
|
246
|
+
return descriptor?.inputs.memo?.maxValue;
|
|
247
|
+
},
|
|
248
|
+
getMemoOptions: (currency: CryptoOrTokenCurrency | undefined) => {
|
|
249
|
+
const descriptor = getSendDescriptor(currency);
|
|
250
|
+
return descriptor?.inputs.memo?.options;
|
|
251
|
+
},
|
|
252
|
+
supportsDomain: (currency: CryptoOrTokenCurrency | undefined): boolean => {
|
|
253
|
+
const descriptor = getSendDescriptor(currency);
|
|
254
|
+
return descriptor?.inputs.recipientSupportsDomain ?? false;
|
|
255
|
+
},
|
|
256
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useMemo } from "react";
|
|
2
2
|
import { useGetAssetsDataInfiniteQuery } from "../state-manager/api";
|
|
3
3
|
import { AssetsDataWithPagination, GetAssetsDataParams } from "../state-manager/types";
|
|
4
|
+
import { parseError } from "../utils/errorUtils";
|
|
4
5
|
|
|
5
6
|
const emptyData = () => ({
|
|
6
7
|
cryptoAssets: {},
|
|
@@ -77,11 +78,14 @@ export function useAssetsData({
|
|
|
77
78
|
|
|
78
79
|
const isInitialLoading = isLoading || (isFetching && !isFetchingNextPage);
|
|
79
80
|
|
|
81
|
+
const errorInfo = useMemo(() => parseError(error), [error]);
|
|
82
|
+
|
|
80
83
|
return {
|
|
81
84
|
data: joinedPages,
|
|
82
85
|
isLoading: isInitialLoading,
|
|
83
86
|
isFetchingNextPage,
|
|
84
87
|
error,
|
|
88
|
+
errorInfo,
|
|
85
89
|
loadNext: hasMore ? fetchNextPage : undefined,
|
|
86
90
|
isSuccess,
|
|
87
91
|
isError,
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isFetchBaseQueryError,
|
|
3
|
+
isNetworkError,
|
|
4
|
+
isApiError,
|
|
5
|
+
getApiErrorStatus,
|
|
6
|
+
parseError,
|
|
7
|
+
} from "../errorUtils";
|
|
8
|
+
|
|
9
|
+
describe("errorUtils", () => {
|
|
10
|
+
describe("isFetchBaseQueryError", () => {
|
|
11
|
+
it("should return true for FetchBaseQueryError with FETCH_ERROR status", () => {
|
|
12
|
+
const error = { status: "FETCH_ERROR", error: "Failed to fetch" };
|
|
13
|
+
expect(isFetchBaseQueryError(error)).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it("should return true for FetchBaseQueryError with numeric status", () => {
|
|
17
|
+
const error = { status: 500, data: { message: "Internal Server Error" } };
|
|
18
|
+
expect(isFetchBaseQueryError(error)).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it("should return false for null", () => {
|
|
22
|
+
expect(isFetchBaseQueryError(null)).toBe(false);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("should return false for undefined", () => {
|
|
26
|
+
expect(isFetchBaseQueryError(undefined)).toBe(false);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("should return false for object without status", () => {
|
|
30
|
+
const error = { message: "Some error" };
|
|
31
|
+
expect(isFetchBaseQueryError(error)).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it("should return false for primitive values", () => {
|
|
35
|
+
expect(isFetchBaseQueryError("error")).toBe(false);
|
|
36
|
+
expect(isFetchBaseQueryError(123)).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
describe("isNetworkError", () => {
|
|
41
|
+
it("should return true for FETCH_ERROR", () => {
|
|
42
|
+
const error = { status: "FETCH_ERROR", error: "Failed to fetch" };
|
|
43
|
+
expect(isNetworkError(error)).toBe(true);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("should return true for TIMEOUT_ERROR", () => {
|
|
47
|
+
const error = { status: "TIMEOUT_ERROR", error: "Request timed out" };
|
|
48
|
+
expect(isNetworkError(error)).toBe(true);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("should return false for PARSING_ERROR", () => {
|
|
52
|
+
const error = { status: "PARSING_ERROR", error: "Invalid JSON" };
|
|
53
|
+
expect(isNetworkError(error)).toBe(false);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("should return false for numeric status (API error)", () => {
|
|
57
|
+
const error = { status: 500, data: { message: "Server error" } };
|
|
58
|
+
expect(isNetworkError(error)).toBe(false);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it("should return false for undefined", () => {
|
|
62
|
+
expect(isNetworkError(undefined)).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it("should return false for non-FetchBaseQueryError", () => {
|
|
66
|
+
const error = { message: "Some error" };
|
|
67
|
+
expect(isNetworkError(error)).toBe(false);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe("isApiError", () => {
|
|
72
|
+
it("should return true for 4xx status codes", () => {
|
|
73
|
+
expect(isApiError({ status: 400, data: {} })).toBe(true);
|
|
74
|
+
expect(isApiError({ status: 401, data: {} })).toBe(true);
|
|
75
|
+
expect(isApiError({ status: 404, data: {} })).toBe(true);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it("should return true for 5xx status codes", () => {
|
|
79
|
+
expect(isApiError({ status: 500, data: {} })).toBe(true);
|
|
80
|
+
expect(isApiError({ status: 502, data: {} })).toBe(true);
|
|
81
|
+
expect(isApiError({ status: 503, data: {} })).toBe(true);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it("should return false for FETCH_ERROR", () => {
|
|
85
|
+
const error = { status: "FETCH_ERROR", error: "Failed to fetch" };
|
|
86
|
+
expect(isApiError(error)).toBe(false);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it("should return false for TIMEOUT_ERROR", () => {
|
|
90
|
+
const error = { status: "TIMEOUT_ERROR", error: "Request timed out" };
|
|
91
|
+
expect(isApiError(error)).toBe(false);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it("should return false for undefined", () => {
|
|
95
|
+
expect(isApiError(undefined)).toBe(false);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it("should return false for non-FetchBaseQueryError", () => {
|
|
99
|
+
expect(isApiError({ message: "error" })).toBe(false);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
describe("getApiErrorStatus", () => {
|
|
104
|
+
it("should return status code for API errors", () => {
|
|
105
|
+
expect(getApiErrorStatus({ status: 400, data: {} })).toBe(400);
|
|
106
|
+
expect(getApiErrorStatus({ status: 500, data: {} })).toBe(500);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it("should return undefined for FETCH_ERROR", () => {
|
|
110
|
+
const error = { status: "FETCH_ERROR", error: "Failed to fetch" };
|
|
111
|
+
expect(getApiErrorStatus(error)).toBeUndefined();
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it("should return undefined for TIMEOUT_ERROR", () => {
|
|
115
|
+
const error = { status: "TIMEOUT_ERROR", error: "Request timed out" };
|
|
116
|
+
expect(getApiErrorStatus(error)).toBeUndefined();
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
it("should return undefined for undefined error", () => {
|
|
120
|
+
expect(getApiErrorStatus(undefined)).toBeUndefined();
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it("should return undefined for non-FetchBaseQueryError", () => {
|
|
124
|
+
expect(getApiErrorStatus({ message: "error" })).toBeUndefined();
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
describe("parseError", () => {
|
|
129
|
+
it("should return correct ErrorInfo for network error (FETCH_ERROR)", () => {
|
|
130
|
+
const error = { status: "FETCH_ERROR", error: "Failed to fetch" };
|
|
131
|
+
const result = parseError(error);
|
|
132
|
+
|
|
133
|
+
expect(result).toEqual({
|
|
134
|
+
hasError: true,
|
|
135
|
+
isNetworkError: true,
|
|
136
|
+
isApiError: false,
|
|
137
|
+
apiStatus: undefined,
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
it("should return correct ErrorInfo for network error (TIMEOUT_ERROR)", () => {
|
|
142
|
+
const error = { status: "TIMEOUT_ERROR", error: "Request timed out" };
|
|
143
|
+
const result = parseError(error);
|
|
144
|
+
|
|
145
|
+
expect(result).toEqual({
|
|
146
|
+
hasError: true,
|
|
147
|
+
isNetworkError: true,
|
|
148
|
+
isApiError: false,
|
|
149
|
+
apiStatus: undefined,
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
it("should return correct ErrorInfo for API error", () => {
|
|
154
|
+
const error = { status: 500, data: { message: "Internal Server Error" } };
|
|
155
|
+
const result = parseError(error);
|
|
156
|
+
|
|
157
|
+
expect(result).toEqual({
|
|
158
|
+
hasError: true,
|
|
159
|
+
isNetworkError: false,
|
|
160
|
+
isApiError: true,
|
|
161
|
+
apiStatus: 500,
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
it("should return correct ErrorInfo for 404 error", () => {
|
|
166
|
+
const error = { status: 404, data: { message: "Not Found" } };
|
|
167
|
+
const result = parseError(error);
|
|
168
|
+
|
|
169
|
+
expect(result).toEqual({
|
|
170
|
+
hasError: true,
|
|
171
|
+
isNetworkError: false,
|
|
172
|
+
isApiError: true,
|
|
173
|
+
apiStatus: 404,
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
it("should return default ErrorInfo for undefined error", () => {
|
|
178
|
+
const result = parseError(undefined);
|
|
179
|
+
|
|
180
|
+
expect(result).toEqual({
|
|
181
|
+
hasError: false,
|
|
182
|
+
isNetworkError: false,
|
|
183
|
+
isApiError: false,
|
|
184
|
+
apiStatus: undefined,
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
it("should return default ErrorInfo for null error", () => {
|
|
189
|
+
const result = parseError(null);
|
|
190
|
+
|
|
191
|
+
expect(result).toEqual({
|
|
192
|
+
hasError: false,
|
|
193
|
+
isNetworkError: false,
|
|
194
|
+
isApiError: false,
|
|
195
|
+
apiStatus: undefined,
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
it("should return ErrorInfo with hasError true for non-FetchBaseQueryError", () => {
|
|
200
|
+
const result = parseError({ message: "Some generic error" });
|
|
201
|
+
|
|
202
|
+
expect(result).toEqual({
|
|
203
|
+
hasError: true,
|
|
204
|
+
isNetworkError: false,
|
|
205
|
+
isApiError: false,
|
|
206
|
+
apiStatus: undefined,
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
it("should return ErrorInfo with hasError true for PARSING_ERROR", () => {
|
|
211
|
+
const error = { status: "PARSING_ERROR", error: "Invalid JSON" };
|
|
212
|
+
const result = parseError(error);
|
|
213
|
+
|
|
214
|
+
expect(result).toEqual({
|
|
215
|
+
hasError: true,
|
|
216
|
+
isNetworkError: false,
|
|
217
|
+
isApiError: false,
|
|
218
|
+
apiStatus: undefined,
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
});
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { FetchBaseQueryError } from "@reduxjs/toolkit/query";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Type guard to check if error is a FetchBaseQueryError
|
|
5
|
+
*/
|
|
6
|
+
export function isFetchBaseQueryError(error: unknown): error is FetchBaseQueryError {
|
|
7
|
+
return typeof error === "object" && error !== null && "status" in error;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Check if the error is a network connectivity error (no internet, timeout, etc.)
|
|
12
|
+
*/
|
|
13
|
+
export function isNetworkError(error: unknown): boolean {
|
|
14
|
+
if (!isFetchBaseQueryError(error)) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return error.status === "FETCH_ERROR" || error.status === "TIMEOUT_ERROR";
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Check if the error is an API error with HTTP status code (4xx, 5xx)
|
|
22
|
+
*/
|
|
23
|
+
export function isApiError(error: unknown): boolean {
|
|
24
|
+
if (!isFetchBaseQueryError(error)) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return typeof error.status === "number";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Get HTTP status code from API error, or undefined if not an API error
|
|
32
|
+
*/
|
|
33
|
+
export function getApiErrorStatus(error: unknown): number | undefined {
|
|
34
|
+
if (!isFetchBaseQueryError(error) || typeof error.status !== "number") {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
return error.status;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type ErrorInfo = {
|
|
41
|
+
hasError: boolean;
|
|
42
|
+
isNetworkError: boolean;
|
|
43
|
+
isApiError: boolean;
|
|
44
|
+
apiStatus: number | undefined;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Parse error into a structured ErrorInfo object
|
|
49
|
+
*/
|
|
50
|
+
export function parseError(error: unknown): ErrorInfo {
|
|
51
|
+
return {
|
|
52
|
+
hasError: !!error,
|
|
53
|
+
isNetworkError: isNetworkError(error),
|
|
54
|
+
isApiError: isApiError(error),
|
|
55
|
+
apiStatus: getApiErrorStatus(error),
|
|
56
|
+
};
|
|
57
|
+
}
|
package/src/e2e/swap.ts
CHANGED
|
@@ -29,8 +29,8 @@ export async function getMinimumSwapAmount(AccountFrom: Account, AccountTo: Acco
|
|
|
29
29
|
|
|
30
30
|
const minimumAmounts = data
|
|
31
31
|
.filter((item: any) => item.parameter?.minAmount !== undefined)
|
|
32
|
-
.map((item: any) => parseFloat(item.parameter.minAmount))
|
|
33
|
-
.filter((amount: number) => !isNaN(amount));
|
|
32
|
+
.map((item: any) => Number.parseFloat(item.parameter.minAmount))
|
|
33
|
+
.filter((amount: number) => !Number.isNaN(amount));
|
|
34
34
|
|
|
35
35
|
if (minimumAmounts.length === 0) {
|
|
36
36
|
throw new Error("No valid minimum amounts returned from swap quote API.");
|
|
@@ -115,6 +115,26 @@ const DEFAULT_SWAP_PROVIDERS: Record<string, ProviderConfig & Partial<Additional
|
|
|
115
115
|
supportUrl: "https://criptointercambio.com/en/about",
|
|
116
116
|
mainUrl: "https://criptointercambio.com/",
|
|
117
117
|
},
|
|
118
|
+
cic_v2: {
|
|
119
|
+
name: "CIC",
|
|
120
|
+
publicKey: {
|
|
121
|
+
curve: "secp256k1",
|
|
122
|
+
data: Buffer.from(
|
|
123
|
+
"0444a71652995d15ef0d4d6fe8de21a0c8ad48bdbfea7f789319973669785ca96abca9fd0c504c3074d9b654f0e3a76dde642a03efe4ccdee3af3ca4ba4afa202d",
|
|
124
|
+
"hex",
|
|
125
|
+
),
|
|
126
|
+
},
|
|
127
|
+
signature: Buffer.from(
|
|
128
|
+
"3044022078a73433ab6289027b7a169a260f180d16346f7ab55b06a22109f68a756d691d0220190edd6e1214c3309dc1b0afe90d217b728377491561383f2ee543e2c90188eb",
|
|
129
|
+
"hex",
|
|
130
|
+
),
|
|
131
|
+
needsKYC: false,
|
|
132
|
+
needsBearerToken: false,
|
|
133
|
+
type: "CEX",
|
|
134
|
+
termsOfUseUrl: "https://criptointercambio.com/terms-of-use",
|
|
135
|
+
supportUrl: "https://criptointercambio.com/en/about",
|
|
136
|
+
mainUrl: "https://criptointercambio.com/",
|
|
137
|
+
},
|
|
118
138
|
moonpay: {
|
|
119
139
|
name: "moonpay",
|
|
120
140
|
publicKey: {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CoinDescriptor } from "../../bridge/descriptor";
|
|
2
|
+
|
|
3
|
+
export const descriptor: CoinDescriptor = {
|
|
4
|
+
send: {
|
|
5
|
+
inputs: {
|
|
6
|
+
memo: {
|
|
7
|
+
type: "text",
|
|
8
|
+
maxLength: 1000,
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
fees: {
|
|
12
|
+
hasPresets: false,
|
|
13
|
+
hasCustom: false,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
};
|
|
@@ -4,7 +4,13 @@ const aptosConfig: CurrencyLiveConfigDefinition = {
|
|
|
4
4
|
config_currency_aptos: {
|
|
5
5
|
type: "object",
|
|
6
6
|
default: {
|
|
7
|
-
status: {
|
|
7
|
+
status: {
|
|
8
|
+
type: "active",
|
|
9
|
+
features: [
|
|
10
|
+
{ id: "blockchain_txs", status: "active" },
|
|
11
|
+
{ id: "staking_txs", status: "active" },
|
|
12
|
+
],
|
|
13
|
+
},
|
|
8
14
|
},
|
|
9
15
|
},
|
|
10
16
|
};
|