diff --git a/.changeset/tall-knives-end.md b/.changeset/tall-knives-end.md new file mode 100644 index 000000000000..0dbae57f6a32 --- /dev/null +++ b/.changeset/tall-knives-end.md @@ -0,0 +1,15 @@ +--- +"@ledgerhq/types-cryptoassets": minor +"@ledgerhq/hw-app-exchange": minor +"@ledgerhq/cryptoassets": minor +"@ledgerhq/types-live": minor +"@ledgerhq/crypto-icons-ui": minor +"@ledgerhq/coin-evm": minor +"ledger-live-desktop": minor +"live-mobile": minor +"@ledgerhq/live-common": minor +"@ledgerhq/coin-framework": minor +"@ledgerhq/live-cli": minor +--- + +Add PulseChain evm network diff --git a/apps/cli/src/live-common-setup-base.ts b/apps/cli/src/live-common-setup-base.ts index a2fd0e238b57..d3878c27fff0 100644 --- a/apps/cli/src/live-common-setup-base.ts +++ b/apps/cli/src/live-common-setup-base.ts @@ -81,6 +81,8 @@ setSupportedCurrencies([ "klaytn", "polygon_zk_evm", "polygon_zk_evm_testnet", + "pulsechain", + "pulsechain_testnet", "base", "base_sepolia", "stacks", diff --git a/apps/ledger-live-desktop/src/live-common-set-supported-currencies.ts b/apps/ledger-live-desktop/src/live-common-set-supported-currencies.ts index f3b4a841705a..91dc9d6d7093 100644 --- a/apps/ledger-live-desktop/src/live-common-set-supported-currencies.ts +++ b/apps/ledger-live-desktop/src/live-common-set-supported-currencies.ts @@ -76,6 +76,8 @@ setSupportedCurrencies([ "klaytn", "polygon_zk_evm", "polygon_zk_evm_testnet", + "pulsechain", + "pulsechain_testnet", "base", "base_sepolia", "stacks", diff --git a/apps/ledger-live-mobile/src/live-common-setup.ts b/apps/ledger-live-mobile/src/live-common-setup.ts index 05815fd122a2..a3c4f246739e 100644 --- a/apps/ledger-live-mobile/src/live-common-setup.ts +++ b/apps/ledger-live-mobile/src/live-common-setup.ts @@ -109,6 +109,8 @@ setSupportedCurrencies([ "klaytn", "polygon_zk_evm", "polygon_zk_evm_testnet", + "pulsechain", + "pulsechain_testnet", "base", "base_sepolia", "stacks", diff --git a/apps/ledger-live-mobile/src/newArch/features/Web3Hub/utils/api/mocks/manifests.ts b/apps/ledger-live-mobile/src/newArch/features/Web3Hub/utils/api/mocks/manifests.ts index a3eb87cf2554..4d86b1067fb6 100644 --- a/apps/ledger-live-mobile/src/newArch/features/Web3Hub/utils/api/mocks/manifests.ts +++ b/apps/ledger-live-mobile/src/newArch/features/Web3Hub/utils/api/mocks/manifests.ts @@ -128,6 +128,8 @@ export const mocks: AppManifest[] = [ "klaytn", "polygon_zk_evm", "polygon_zk_evm_testnet", + "pulsechain", + "pulsechain_testnet", "base", "base_goerli", "base_sepolia", diff --git a/apps/ledger-live-mobile/src/screens/AddAccounts/01-SelectCrypto.tsx b/apps/ledger-live-mobile/src/screens/AddAccounts/01-SelectCrypto.tsx index c9f1b11a3052..bf019f791c10 100644 --- a/apps/ledger-live-mobile/src/screens/AddAccounts/01-SelectCrypto.tsx +++ b/apps/ledger-live-mobile/src/screens/AddAccounts/01-SelectCrypto.tsx @@ -87,6 +87,8 @@ export default function AddAccountsSelectCrypto({ navigation, route }: Props) { const coreum = useFeature("currencyCoreum"); const polygonZkEvm = useFeature("currencyPolygonZkEvm"); const polygonZkEvmTestnet = useFeature("currencyPolygonZkEvmTestnet"); + const pulseChain = useFeature("currencyPulseChain"); + const pulseChainTestnet = useFeature("currencyPulseChainTestnet"); const base = useFeature("currencyBase"); const baseSepolia = useFeature("currencyBaseSepolia"); const klaytn = useFeature("currencyKlaytn"); @@ -137,6 +139,8 @@ export default function AddAccountsSelectCrypto({ navigation, route }: Props) { coreum, polygon_zk_evm: polygonZkEvm, polygon_zk_evm_testnet: polygonZkEvmTestnet, + pulsechain: pulseChain, + pulsechain_testnet: pulseChainTestnet, base, base_sepolia: baseSepolia, klaytn, @@ -186,6 +190,8 @@ export default function AddAccountsSelectCrypto({ navigation, route }: Props) { coreum, polygonZkEvm, polygonZkEvmTestnet, + pulseChain, + pulseChainTestnet, base, baseSepolia, klaytn, diff --git a/libs/coin-framework/src/currencies/__snapshots__/formatCurrencyUnit.test.ts.snap b/libs/coin-framework/src/currencies/__snapshots__/formatCurrencyUnit.test.ts.snap index 520fc5d77e22..d593ea388d7b 100644 --- a/libs/coin-framework/src/currencies/__snapshots__/formatCurrencyUnit.test.ts.snap +++ b/libs/coin-framework/src/currencies/__snapshots__/formatCurrencyUnit.test.ts.snap @@ -238,6 +238,10 @@ exports[`formatCurrencyUnit with custom options with locale de-DE should correct exports[`formatCurrencyUnit with custom options with locale de-DE should correctly format PosW unit (posw) 1`] = `"123.456.789,00000000- -POSW"`; +exports[`formatCurrencyUnit with custom options with locale de-DE should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0,012345678900000000- -tPLS"`; + +exports[`formatCurrencyUnit with custom options with locale de-DE should correctly format PulseChain unit (Pulse) 1`] = `"0,012345678900000000- -PLS"`; + exports[`formatCurrencyUnit with custom options with locale de-DE should correctly format QRL unit (QRL) 1`] = `"123.456.789,00000000- -QRL"`; exports[`formatCurrencyUnit with custom options with locale de-DE should correctly format Qtum unit (qtum) 1`] = `"123.456.789,00000000- -QTUM"`; @@ -564,6 +568,10 @@ exports[`formatCurrencyUnit with custom options with locale en-US should correct exports[`formatCurrencyUnit with custom options with locale en-US should correctly format PosW unit (posw) 1`] = `"123,456,789.00000000- -POSW"`; +exports[`formatCurrencyUnit with custom options with locale en-US should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0.012345678900000000- -tPLS"`; + +exports[`formatCurrencyUnit with custom options with locale en-US should correctly format PulseChain unit (Pulse) 1`] = `"0.012345678900000000- -PLS"`; + exports[`formatCurrencyUnit with custom options with locale en-US should correctly format QRL unit (QRL) 1`] = `"123,456,789.00000000- -QRL"`; exports[`formatCurrencyUnit with custom options with locale en-US should correctly format Qtum unit (qtum) 1`] = `"123,456,789.00000000- -QTUM"`; @@ -890,6 +898,10 @@ exports[`formatCurrencyUnit with custom options with locale es-ES should correct exports[`formatCurrencyUnit with custom options with locale es-ES should correctly format PosW unit (posw) 1`] = `"123.456.789,00000000- -POSW"`; +exports[`formatCurrencyUnit with custom options with locale es-ES should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0,012345678900000000- -tPLS"`; + +exports[`formatCurrencyUnit with custom options with locale es-ES should correctly format PulseChain unit (Pulse) 1`] = `"0,012345678900000000- -PLS"`; + exports[`formatCurrencyUnit with custom options with locale es-ES should correctly format QRL unit (QRL) 1`] = `"123.456.789,00000000- -QRL"`; exports[`formatCurrencyUnit with custom options with locale es-ES should correctly format Qtum unit (qtum) 1`] = `"123.456.789,00000000- -QTUM"`; @@ -1216,6 +1228,10 @@ exports[`formatCurrencyUnit with custom options with locale fr-FR should correct exports[`formatCurrencyUnit with custom options with locale fr-FR should correctly format PosW unit (posw) 1`] = `"123 456 789,00000000- -POSW"`; +exports[`formatCurrencyUnit with custom options with locale fr-FR should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0,012345678900000000- -tPLS"`; + +exports[`formatCurrencyUnit with custom options with locale fr-FR should correctly format PulseChain unit (Pulse) 1`] = `"0,012345678900000000- -PLS"`; + exports[`formatCurrencyUnit with custom options with locale fr-FR should correctly format QRL unit (QRL) 1`] = `"123 456 789,00000000- -QRL"`; exports[`formatCurrencyUnit with custom options with locale fr-FR should correctly format Qtum unit (qtum) 1`] = `"123 456 789,00000000- -QTUM"`; @@ -1542,6 +1558,10 @@ exports[`formatCurrencyUnit with custom options with locale ja-JP should correct exports[`formatCurrencyUnit with custom options with locale ja-JP should correctly format PosW unit (posw) 1`] = `"123,456,789.00000000- -POSW"`; +exports[`formatCurrencyUnit with custom options with locale ja-JP should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0.012345678900000000- -tPLS"`; + +exports[`formatCurrencyUnit with custom options with locale ja-JP should correctly format PulseChain unit (Pulse) 1`] = `"0.012345678900000000- -PLS"`; + exports[`formatCurrencyUnit with custom options with locale ja-JP should correctly format QRL unit (QRL) 1`] = `"123,456,789.00000000- -QRL"`; exports[`formatCurrencyUnit with custom options with locale ja-JP should correctly format Qtum unit (qtum) 1`] = `"123,456,789.00000000- -QTUM"`; @@ -1868,6 +1888,10 @@ exports[`formatCurrencyUnit with custom options with locale ko-KR should correct exports[`formatCurrencyUnit with custom options with locale ko-KR should correctly format PosW unit (posw) 1`] = `"123,456,789.00000000- -POSW"`; +exports[`formatCurrencyUnit with custom options with locale ko-KR should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0.012345678900000000- -tPLS"`; + +exports[`formatCurrencyUnit with custom options with locale ko-KR should correctly format PulseChain unit (Pulse) 1`] = `"0.012345678900000000- -PLS"`; + exports[`formatCurrencyUnit with custom options with locale ko-KR should correctly format QRL unit (QRL) 1`] = `"123,456,789.00000000- -QRL"`; exports[`formatCurrencyUnit with custom options with locale ko-KR should correctly format Qtum unit (qtum) 1`] = `"123,456,789.00000000- -QTUM"`; @@ -2194,6 +2218,10 @@ exports[`formatCurrencyUnit with custom options with locale pt-BR should correct exports[`formatCurrencyUnit with custom options with locale pt-BR should correctly format PosW unit (posw) 1`] = `"123.456.789,00000000- -POSW"`; +exports[`formatCurrencyUnit with custom options with locale pt-BR should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0,012345678900000000- -tPLS"`; + +exports[`formatCurrencyUnit with custom options with locale pt-BR should correctly format PulseChain unit (Pulse) 1`] = `"0,012345678900000000- -PLS"`; + exports[`formatCurrencyUnit with custom options with locale pt-BR should correctly format QRL unit (QRL) 1`] = `"123.456.789,00000000- -QRL"`; exports[`formatCurrencyUnit with custom options with locale pt-BR should correctly format Qtum unit (qtum) 1`] = `"123.456.789,00000000- -QTUM"`; @@ -2520,6 +2548,10 @@ exports[`formatCurrencyUnit with custom options with locale ru-RU should correct exports[`formatCurrencyUnit with custom options with locale ru-RU should correctly format PosW unit (posw) 1`] = `"123 456 789,00000000- -POSW"`; +exports[`formatCurrencyUnit with custom options with locale ru-RU should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0,012345678900000000- -tPLS"`; + +exports[`formatCurrencyUnit with custom options with locale ru-RU should correctly format PulseChain unit (Pulse) 1`] = `"0,012345678900000000- -PLS"`; + exports[`formatCurrencyUnit with custom options with locale ru-RU should correctly format QRL unit (QRL) 1`] = `"123 456 789,00000000- -QRL"`; exports[`formatCurrencyUnit with custom options with locale ru-RU should correctly format Qtum unit (qtum) 1`] = `"123 456 789,00000000- -QTUM"`; @@ -2846,6 +2878,10 @@ exports[`formatCurrencyUnit with custom options with locale tr-TR should correct exports[`formatCurrencyUnit with custom options with locale tr-TR should correctly format PosW unit (posw) 1`] = `"123.456.789,00000000- -POSW"`; +exports[`formatCurrencyUnit with custom options with locale tr-TR should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0,012345678900000000- -tPLS"`; + +exports[`formatCurrencyUnit with custom options with locale tr-TR should correctly format PulseChain unit (Pulse) 1`] = `"0,012345678900000000- -PLS"`; + exports[`formatCurrencyUnit with custom options with locale tr-TR should correctly format QRL unit (QRL) 1`] = `"123.456.789,00000000- -QRL"`; exports[`formatCurrencyUnit with custom options with locale tr-TR should correctly format Qtum unit (qtum) 1`] = `"123.456.789,00000000- -QTUM"`; @@ -3172,6 +3208,10 @@ exports[`formatCurrencyUnit with custom options with locale zh-CN should correct exports[`formatCurrencyUnit with custom options with locale zh-CN should correctly format PosW unit (posw) 1`] = `"123,456,789.00000000- -POSW"`; +exports[`formatCurrencyUnit with custom options with locale zh-CN should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0.012345678900000000- -tPLS"`; + +exports[`formatCurrencyUnit with custom options with locale zh-CN should correctly format PulseChain unit (Pulse) 1`] = `"0.012345678900000000- -PLS"`; + exports[`formatCurrencyUnit with custom options with locale zh-CN should correctly format QRL unit (QRL) 1`] = `"123,456,789.00000000- -QRL"`; exports[`formatCurrencyUnit with custom options with locale zh-CN should correctly format Qtum unit (qtum) 1`] = `"123,456,789.00000000- -QTUM"`; @@ -3498,6 +3538,10 @@ exports[`formatCurrencyUnit with default options should correctly format Polygon exports[`formatCurrencyUnit with default options should correctly format PosW unit (posw) 1`] = `"123,456,789"`; +exports[`formatCurrencyUnit with default options should correctly format PulseChain Testnet unit (Test Pulse) 1`] = `"0.0123456"`; + +exports[`formatCurrencyUnit with default options should correctly format PulseChain unit (Pulse) 1`] = `"0.0123456"`; + exports[`formatCurrencyUnit with default options should correctly format QRL unit (QRL) 1`] = `"123,456,789"`; exports[`formatCurrencyUnit with default options should correctly format Qtum unit (qtum) 1`] = `"123,456,789"`; diff --git a/libs/coin-modules/coin-evm/src/__tests__/unit/editTransaction/__snapshots__/getFormattedFeeFields.test.ts.snap b/libs/coin-modules/coin-evm/src/__tests__/unit/editTransaction/__snapshots__/getFormattedFeeFields.test.ts.snap index 5b2cd68bc4d0..065dc4ef4b8f 100644 --- a/libs/coin-modules/coin-evm/src/__tests__/unit/editTransaction/__snapshots__/getFormattedFeeFields.test.ts.snap +++ b/libs/coin-modules/coin-evm/src/__tests__/unit/editTransaction/__snapshots__/getFormattedFeeFields.test.ts.snap @@ -432,6 +432,24 @@ exports[`getFormattedFeeFields with tx type 0 with locale de-DE should correctly } `; +exports[`getFormattedFeeFields with tx type 0 with locale de-DE should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000105 tPLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 0 with locale de-DE should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000105 PLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + exports[`getFormattedFeeFields with tx type 0 with locale de-DE should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0105 REOSC", @@ -972,6 +990,24 @@ exports[`getFormattedFeeFields with tx type 0 with locale en-US should correctly } `; +exports[`getFormattedFeeFields with tx type 0 with locale en-US should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0.000105 tPLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 0 with locale en-US should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0.000105 PLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + exports[`getFormattedFeeFields with tx type 0 with locale en-US should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0.0105 REOSC", @@ -1512,6 +1548,24 @@ exports[`getFormattedFeeFields with tx type 0 with locale es-ES should correctly } `; +exports[`getFormattedFeeFields with tx type 0 with locale es-ES should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000105 tPLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 0 with locale es-ES should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000105 PLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + exports[`getFormattedFeeFields with tx type 0 with locale es-ES should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0105 REOSC", @@ -2052,6 +2106,24 @@ exports[`getFormattedFeeFields with tx type 0 with locale fr-FR should correctly } `; +exports[`getFormattedFeeFields with tx type 0 with locale fr-FR should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000105 tPLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 0 with locale fr-FR should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000105 PLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + exports[`getFormattedFeeFields with tx type 0 with locale fr-FR should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0105 REOSC", @@ -2592,6 +2664,24 @@ exports[`getFormattedFeeFields with tx type 0 with locale ja-JP should correctly } `; +exports[`getFormattedFeeFields with tx type 0 with locale ja-JP should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0.000105 tPLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 0 with locale ja-JP should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0.000105 PLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + exports[`getFormattedFeeFields with tx type 0 with locale ja-JP should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0.0105 REOSC", @@ -3132,6 +3222,24 @@ exports[`getFormattedFeeFields with tx type 0 with locale ko-KR should correctly } `; +exports[`getFormattedFeeFields with tx type 0 with locale ko-KR should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0.000105 tPLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 0 with locale ko-KR should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0.000105 PLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + exports[`getFormattedFeeFields with tx type 0 with locale ko-KR should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0.0105 REOSC", @@ -3672,6 +3780,24 @@ exports[`getFormattedFeeFields with tx type 0 with locale pt-BR should correctly } `; +exports[`getFormattedFeeFields with tx type 0 with locale pt-BR should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000105 tPLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 0 with locale pt-BR should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000105 PLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + exports[`getFormattedFeeFields with tx type 0 with locale pt-BR should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0105 REOSC", @@ -4212,6 +4338,24 @@ exports[`getFormattedFeeFields with tx type 0 with locale ru-RU should correctly } `; +exports[`getFormattedFeeFields with tx type 0 with locale ru-RU should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000105 tPLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 0 with locale ru-RU should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000105 PLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + exports[`getFormattedFeeFields with tx type 0 with locale ru-RU should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0105 REOSC", @@ -4752,6 +4896,24 @@ exports[`getFormattedFeeFields with tx type 0 with locale tr-TR should correctly } `; +exports[`getFormattedFeeFields with tx type 0 with locale tr-TR should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000105 tPLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 0 with locale tr-TR should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000105 PLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + exports[`getFormattedFeeFields with tx type 0 with locale tr-TR should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0105 REOSC", @@ -5292,6 +5454,24 @@ exports[`getFormattedFeeFields with tx type 0 with locale zh-CN should correctly } `; +exports[`getFormattedFeeFields with tx type 0 with locale zh-CN should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0.000105 tPLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 0 with locale zh-CN should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0.000105 PLS", + "formattedGasPrice": "5 beat", + "formattedMaxFeePerGas": "0 beat", + "formattedMaxPriorityFeePerGas": "0 beat", +} +`; + exports[`getFormattedFeeFields with tx type 0 with locale zh-CN should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0.0105 REOSC", @@ -5832,6 +6012,24 @@ exports[`getFormattedFeeFields with tx type 2 with locale de-DE should correctly } `; +exports[`getFormattedFeeFields with tx type 2 with locale de-DE should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000042 tPLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 2 with locale de-DE should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000042 PLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + exports[`getFormattedFeeFields with tx type 2 with locale de-DE should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0042 REOSC", @@ -6372,6 +6570,24 @@ exports[`getFormattedFeeFields with tx type 2 with locale en-US should correctly } `; +exports[`getFormattedFeeFields with tx type 2 with locale en-US should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0.000042 tPLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 2 with locale en-US should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0.000042 PLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + exports[`getFormattedFeeFields with tx type 2 with locale en-US should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0.0042 REOSC", @@ -6912,6 +7128,24 @@ exports[`getFormattedFeeFields with tx type 2 with locale es-ES should correctly } `; +exports[`getFormattedFeeFields with tx type 2 with locale es-ES should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000042 tPLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 2 with locale es-ES should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000042 PLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + exports[`getFormattedFeeFields with tx type 2 with locale es-ES should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0042 REOSC", @@ -7452,6 +7686,24 @@ exports[`getFormattedFeeFields with tx type 2 with locale fr-FR should correctly } `; +exports[`getFormattedFeeFields with tx type 2 with locale fr-FR should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000042 tPLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 2 with locale fr-FR should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000042 PLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + exports[`getFormattedFeeFields with tx type 2 with locale fr-FR should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0042 REOSC", @@ -7992,6 +8244,24 @@ exports[`getFormattedFeeFields with tx type 2 with locale ja-JP should correctly } `; +exports[`getFormattedFeeFields with tx type 2 with locale ja-JP should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0.000042 tPLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 2 with locale ja-JP should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0.000042 PLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + exports[`getFormattedFeeFields with tx type 2 with locale ja-JP should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0.0042 REOSC", @@ -8532,6 +8802,24 @@ exports[`getFormattedFeeFields with tx type 2 with locale ko-KR should correctly } `; +exports[`getFormattedFeeFields with tx type 2 with locale ko-KR should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0.000042 tPLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 2 with locale ko-KR should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0.000042 PLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + exports[`getFormattedFeeFields with tx type 2 with locale ko-KR should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0.0042 REOSC", @@ -9072,6 +9360,24 @@ exports[`getFormattedFeeFields with tx type 2 with locale pt-BR should correctly } `; +exports[`getFormattedFeeFields with tx type 2 with locale pt-BR should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000042 tPLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 2 with locale pt-BR should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000042 PLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + exports[`getFormattedFeeFields with tx type 2 with locale pt-BR should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0042 REOSC", @@ -9612,6 +9918,24 @@ exports[`getFormattedFeeFields with tx type 2 with locale ru-RU should correctly } `; +exports[`getFormattedFeeFields with tx type 2 with locale ru-RU should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000042 tPLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 2 with locale ru-RU should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000042 PLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + exports[`getFormattedFeeFields with tx type 2 with locale ru-RU should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0042 REOSC", @@ -10152,6 +10476,24 @@ exports[`getFormattedFeeFields with tx type 2 with locale tr-TR should correctly } `; +exports[`getFormattedFeeFields with tx type 2 with locale tr-TR should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0,000042 tPLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 2 with locale tr-TR should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0,000042 PLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + exports[`getFormattedFeeFields with tx type 2 with locale tr-TR should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0,0042 REOSC", @@ -10692,6 +11034,24 @@ exports[`getFormattedFeeFields with tx type 2 with locale zh-CN should correctly } `; +exports[`getFormattedFeeFields with tx type 2 with locale zh-CN should correctly format fee fields for PulseChain Testnet unit 1`] = ` +{ + "formattedFeeValue": "0.000042 tPLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + +exports[`getFormattedFeeFields with tx type 2 with locale zh-CN should correctly format fee fields for PulseChain unit 1`] = ` +{ + "formattedFeeValue": "0.000042 PLS", + "formattedGasPrice": "0 beat", + "formattedMaxFeePerGas": "2 beat", + "formattedMaxPriorityFeePerGas": "1 beat", +} +`; + exports[`getFormattedFeeFields with tx type 2 with locale zh-CN should correctly format fee fields for REOSC unit 1`] = ` { "formattedFeeValue": "0.0042 REOSC", diff --git a/libs/ledger-live-common/src/apps/polyfill.ts b/libs/ledger-live-common/src/apps/polyfill.ts index f509c82ed908..7446b14e2571 100644 --- a/libs/ledger-live-common/src/apps/polyfill.ts +++ b/libs/ledger-live-common/src/apps/polyfill.ts @@ -62,6 +62,7 @@ function declareDep(name: string, dep: string): void { ["Paraswap", "Ethereum"], ["POAP", "Ethereum"], ["Polygon", "Ethereum"], + ["PulseChain", "Ethereum"], ["Rarible", "Ethereum"], ["Ricochet", "Ethereum"], ["RocketPool", "Ethereum"], diff --git a/libs/ledger-live-common/src/apps/react.test.ts b/libs/ledger-live-common/src/apps/react.test.ts index 485c66484ea3..cfea2befdce9 100644 --- a/libs/ledger-live-common/src/apps/react.test.ts +++ b/libs/ledger-live-common/src/apps/react.test.ts @@ -19,8 +19,8 @@ calculateDependencies(); const mockedState = initState( mockListAppsResult( - "Bitcoin, Bitcoin Legacy, Ethereum, Litecoin, Dogecoin, Ethereum Classic, XRP, Bitcoin Cash, Decred, Aave, Polygon, Binance Smart Chain", - "Litecoin (outdated), Ethereum, Ethereum Classic, Aave, Polygon, Binance Smart Chain", + "Bitcoin, Bitcoin Legacy, Ethereum, Litecoin, Dogecoin, Ethereum Classic, XRP, Bitcoin Cash, Decred, Aave, Polygon, Binance Smart Chain, PulseChain", + "Litecoin (outdated), Ethereum, Ethereum Classic, Aave, Polygon, Binance Smart Chain, PulseChain", deviceInfo155, ), ); @@ -57,6 +57,7 @@ test("Apps hooks - useAppUninstallNeedsDeps - Expect dep apps", () => { "Aave", "Polygon", "Binance Smart Chain", + "PulseChain", ]); }); test("Apps hooks - useAppUninstallNeedsDeps - Expect no dep apps", () => { @@ -139,7 +140,7 @@ test("Apps hooks - useAppsSections - Correct number of installed apps", () => { }, }), ); - expect(result.current.device.length).toBe(6); + expect(result.current.device.length).toBe(7); }); test("Apps hooks - useAppsSections - Correct number of catalog apps", () => { const { result } = renderHook(() => @@ -152,7 +153,7 @@ test("Apps hooks - useAppsSections - Correct number of catalog apps", () => { }, }), ); - expect(result.current.catalog.length).toBe(12); + expect(result.current.catalog.length).toBe(13); }); test("Apps hooks - useAppsSections - Correct number of catalog apps with query", () => { const { result } = renderHook(() => @@ -184,8 +185,8 @@ test("Apps hooks - useAppsSections - Correct number of installed apps with query const mockedStateWithInstallQueue = { ...initState( mockListAppsResult( - "Bitcoin, Bitcoin Legacy, Ethereum, Litecoin, Dogecoin, Ethereum Classic, XRP, Bitcoin Cash, Decred, Aave, Polygon, Binance Smart Chain", - "Litecoin (outdated), Ethereum, Ethereum Classic, Aave, Polygon, Binance Smart Chain", + "Bitcoin, Bitcoin Legacy, Ethereum, Litecoin, Dogecoin, Ethereum Classic, XRP, Bitcoin Cash, Decred, Aave, Polygon, Binance Smart Chain, PulseChain", + "Litecoin (outdated), Ethereum, Ethereum Classic, Aave, Polygon, Binance Smart Chain, PulseChain", deviceInfo155, ), ), @@ -214,6 +215,7 @@ test('Apps hooks - useAppsSections - Sort "device" category apps with installing "Aave", "Polygon", "Binance Smart Chain", + "PulseChain", ]); expect(installQueueResult.current.device.map(elt => elt.name)).toMatchObject([ // Apps being installed @@ -226,5 +228,6 @@ test('Apps hooks - useAppsSections - Sort "device" category apps with installing "Aave", "Polygon", "Binance Smart Chain", + "PulseChain", ]); }); diff --git a/libs/ledger-live-common/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap b/libs/ledger-live-common/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap index c43deb66e359..a7aa2183a0d2 100644 --- a/libs/ledger-live-common/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +++ b/libs/ledger-live-common/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap @@ -1622,6 +1622,7 @@ exports[`sortCurrenciesByIds snapshot 1`] = ` "boba", "moonriver", "polygon_zk_evm", + "pulsechain", "base", "neon_evm", "lukso", diff --git a/libs/ledger-live-common/src/families/evm/config.ts b/libs/ledger-live-common/src/families/evm/config.ts index 51bedee004cc..bad821c031d6 100644 --- a/libs/ledger-live-common/src/families/evm/config.ts +++ b/libs/ledger-live-common/src/families/evm/config.ts @@ -555,6 +555,22 @@ const evmConfig: CurrencyLiveConfigDefinition = { }, }, }, + config_currency_pulsechain: { + type: "object", + default: { + status: { + type: "active", + }, + node: { + type: "external", + uri: "https://rpc.pulsechain.com", + }, + explorer: { + type: "blockscout", + uri: "https://api.scan.pulsechain.com/api", + }, + }, + }, config_currency_base: { type: "object", default: { @@ -669,6 +685,22 @@ const evmConfig: CurrencyLiveConfigDefinition = { explorer: { type: "etherscan", uri: "https://api-testnet-zkevm.polygonscan.com/api" }, }, }, + config_currency_pulsechain_testnet: { + type: "object", + default: { + status: { + type: "active", + }, + node: { + type: "external", + uri: "https://rpc.v4.testnet.pulsechain.com", + }, + explorer: { + type: "blockscout", + uri: "https://api.scan.v4.testnet.pulsechain.com/api", + }, + }, + }, config_currency_base_sepolia: { type: "object", default: { diff --git a/libs/ledger-live-common/src/featureFlags/defaultFeatures.ts b/libs/ledger-live-common/src/featureFlags/defaultFeatures.ts index 1821b3bbbedc..beb53172fb3c 100644 --- a/libs/ledger-live-common/src/featureFlags/defaultFeatures.ts +++ b/libs/ledger-live-common/src/featureFlags/defaultFeatures.ts @@ -58,6 +58,8 @@ export const CURRENCY_DEFAULT_FEATURES = { currencyPersistence: DEFAULT_FEATURE, currencyPolygonZkEvm: DEFAULT_FEATURE, currencyPolygonZkEvmTestnet: DEFAULT_FEATURE, + currencyPulseChain: DEFAULT_FEATURE, + currencyPulseChainTestnet: DEFAULT_FEATURE, currencyQuicksilver: DEFAULT_FEATURE, currencyRsk: DEFAULT_FEATURE, currencySecretNetwork: DEFAULT_FEATURE, diff --git a/libs/ledgerjs/packages/cryptoassets/src/abandonseed.ts b/libs/ledgerjs/packages/cryptoassets/src/abandonseed.ts index 768878395194..faa03d540f89 100644 --- a/libs/ledgerjs/packages/cryptoassets/src/abandonseed.ts +++ b/libs/ledgerjs/packages/cryptoassets/src/abandonseed.ts @@ -85,6 +85,8 @@ const abandonSeedAddresses: Partial> = { klaytn: EVM_DEAD_ADDRESS, polygon_zk_evm: EVM_DEAD_ADDRESS, polygon_zk_evm_testnet: EVM_DEAD_ADDRESS, + pulsechain: EVM_DEAD_ADDRESS, + pulsechain_testnet: EVM_DEAD_ADDRESS, base: EVM_DEAD_ADDRESS, base_sepolia: EVM_DEAD_ADDRESS, stacks: "SP3KS7VMY2ZNE6SB88PHR4SKRK2EEPHS8N8MCCBR9", diff --git a/libs/ledgerjs/packages/cryptoassets/src/currencies.test.ts b/libs/ledgerjs/packages/cryptoassets/src/currencies.test.ts index 508af68c9b39..93dc9dfff3e5 100644 --- a/libs/ledgerjs/packages/cryptoassets/src/currencies.test.ts +++ b/libs/ledgerjs/packages/cryptoassets/src/currencies.test.ts @@ -63,7 +63,18 @@ currencies.forEach(c => { c.keywords?.forEach(k => { test(`should find ${c.name} with keyword ${k}`, () => { - expect(findCryptoCurrencyByKeyword(k)).toEqual(c); + const result = findCryptoCurrencyByKeyword(k); + // Check if the result matches the current currency or its mainnet/testnet counterpart + if (result === c) { + expect(result).toEqual(c); + } else if (c.isTestnetFor && result?.id === c.isTestnetFor) { + expect(result.id).toEqual(c.isTestnetFor); + } else if (result?.isTestnetFor === c.id) { + expect(result.isTestnetFor).toEqual(c.id); + } else { + // If none of the above conditions are met, the test should fail + expect(result).toEqual(c); + } }); }); }); diff --git a/libs/ledgerjs/packages/cryptoassets/src/currencies.ts b/libs/ledgerjs/packages/cryptoassets/src/currencies.ts index f58e1fe0a612..48d27f42f4a3 100644 --- a/libs/ledgerjs/packages/cryptoassets/src/currencies.ts +++ b/libs/ledgerjs/packages/cryptoassets/src/currencies.ts @@ -3967,6 +3967,89 @@ export const cryptocurrenciesById: Record = { }, ], }, + pulsechain: { + type: "CryptoCurrency", + id: "pulsechain", + coinType: CoinType.ETH, + name: "PulseChain", + managerAppName: "Ethereum", + ticker: "PLS", + scheme: "pulsechain", + color: "#a928ff", + family: "evm", + blockAvgTime: 10, + ethereumLikeInfo: { + chainId: 369, + }, + units: [ + { + name: "Pulse", + code: "PLS", + magnitude: 18, + }, + { + name: "beat", + code: "beat", + magnitude: 9, + }, + { + name: "impulse", + code: "impulse", + magnitude: 0, + }, + ], + explorerViews: [ + { + tx: "https://scan.pulsechain.com/tx/$hash", + address: "https://scan.pulsechain.com/address/$address", + token: "https://scan.pulsechain.com/token/$contractAddress", + }, + ], + keywords: ["pulse", "pls", "pulsechain", "pulse chain"], + explorerId: "pls", + }, + pulsechain_testnet: { + type: "CryptoCurrency", + id: "pulsechain_testnet", + coinType: CoinType.ETH, + name: "PulseChain Testnet", + managerAppName: "Ethereum", + ticker: "tPLS", + scheme: "pulsechain_testnet", + color: "#2894ff", + family: "evm", + blockAvgTime: 10, + isTestnetFor: "pulsechain", + ethereumLikeInfo: { + chainId: 943, + }, + units: [ + { + name: "Test Pulse", + code: "tPLS", + magnitude: 18, + }, + { + name: "beat", + code: "beat", + magnitude: 9, + }, + { + name: "impulse", + code: "impulse", + magnitude: 0, + }, + ], + explorerViews: [ + { + tx: "https://scan.v4.testnet.pulsechain.com/#/tx/$hash", + address: "https://scan.v4.testnet.pulsechain.com/#/address/$address", + token: "https://scan.v4.testnet.pulsechain.com/#/token/$contractAddress", + }, + ], + keywords: ["pulse", "pls", "pulsechain", "pulse chain", "tpls", "test pulse"], + explorerId: "pls", + }, base: { type: "CryptoCurrency", id: "base", diff --git a/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20-hash.json b/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20-hash.json new file mode 100644 index 000000000000..3cc762b5501e --- /dev/null +++ b/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20-hash.json @@ -0,0 +1 @@ +"" \ No newline at end of file diff --git a/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20-signatures-hash.json b/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20-signatures-hash.json new file mode 100644 index 000000000000..3cc762b5501e --- /dev/null +++ b/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20-signatures-hash.json @@ -0,0 +1 @@ +"" \ No newline at end of file diff --git a/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20-signatures.json b/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20-signatures.json new file mode 100644 index 000000000000..3cc762b5501e --- /dev/null +++ b/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20-signatures.json @@ -0,0 +1 @@ +"" \ No newline at end of file diff --git a/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20.json b/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20.json new file mode 100644 index 000000000000..0637a088a01e --- /dev/null +++ b/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/erc20.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/index.ts b/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/index.ts new file mode 100644 index 000000000000..9e2e69e7a7a7 --- /dev/null +++ b/libs/ledgerjs/packages/cryptoassets/src/data/evm/369/index.ts @@ -0,0 +1,4 @@ +export { default as tokens } from "./erc20.json"; +export { default as signatures } from "./erc20-signatures.json"; +export { default as hash } from "./erc20-hash.json"; +export { default as signaturesHash } from "./erc20-signatures-hash.json"; diff --git a/libs/ledgerjs/packages/types-cryptoassets/src/index.ts b/libs/ledgerjs/packages/types-cryptoassets/src/index.ts index f8555ac0510c..3a26a12ab990 100644 --- a/libs/ledgerjs/packages/types-cryptoassets/src/index.ts +++ b/libs/ledgerjs/packages/types-cryptoassets/src/index.ts @@ -85,6 +85,8 @@ export type CryptoCurrencyId = | "polkadot" | "polygon" | "poswallet" + | "pulsechain" + | "pulsechain_testnet" | "qrl" | "qtum" | "quicksilver" @@ -179,6 +181,7 @@ export type LedgerExplorerId = | "kmd" | "ltc" | "posw" + | "pls" | "qtum" | "strat" | "zec" diff --git a/libs/ledgerjs/packages/types-live/src/feature.ts b/libs/ledgerjs/packages/types-live/src/feature.ts index 408842b58745..d8491ebdb475 100644 --- a/libs/ledgerjs/packages/types-live/src/feature.ts +++ b/libs/ledgerjs/packages/types-live/src/feature.ts @@ -105,6 +105,8 @@ export type CurrencyFeatures = { currencyCoreum: DefaultFeature; currencyPolygonZkEvm: DefaultFeature; currencyPolygonZkEvmTestnet: DefaultFeature; + currencyPulseChain: DefaultFeature; + currencyPulseChainTestnet: DefaultFeature; currencyBase: DefaultFeature; currencyBaseSepolia: DefaultFeature; currencyKlaytn: DefaultFeature; diff --git a/libs/ui/packages/crypto-icons/src/svg/PLS.svg b/libs/ui/packages/crypto-icons/src/svg/PLS.svg new file mode 100644 index 000000000000..f02bff417f4b --- /dev/null +++ b/libs/ui/packages/crypto-icons/src/svg/PLS.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/libs/ui/packages/crypto-icons/src/svg/TPLS.svg b/libs/ui/packages/crypto-icons/src/svg/TPLS.svg new file mode 100644 index 000000000000..f02bff417f4b --- /dev/null +++ b/libs/ui/packages/crypto-icons/src/svg/TPLS.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +