diff --git a/README.md b/README.md index 43c3415c9..038482383 100644 --- a/README.md +++ b/README.md @@ -99,7 +99,7 @@ Enkrypt is a web3 wallet built from the ground up to support the multi-chain fut - Shiden - Shiden EVM - Sepolia -- Syscoin +- Syscoin NEVM - Telos EVM - Unique - Vara Network @@ -108,6 +108,7 @@ Enkrypt is a web3 wallet built from the ground up to support the multi-chain fut - ZChains - zkSync - zkSync Goerli +- 5ireChain - More coming soon! Looking to add your project? [Contact us!](https://mewwallet.typeform.com/enkrypt-inquiry?typeform-source=www.enkrypt.com) diff --git a/packages/extension/package.json b/packages/extension/package.json index e7828c5ed..b2d024229 100644 --- a/packages/extension/package.json +++ b/packages/extension/package.json @@ -1,6 +1,6 @@ { "name": "@enkryptcom/extension", - "version": "2.1.0", + "version": "2.2.0", "private": true, "type": "module", "scripts": { diff --git a/packages/extension/src/providers/common/libs/new-features.ts b/packages/extension/src/providers/common/libs/new-features.ts index 189011b41..cbaf9a139 100644 --- a/packages/extension/src/providers/common/libs/new-features.ts +++ b/packages/extension/src/providers/common/libs/new-features.ts @@ -1,6 +1,11 @@ import { NetworkNames } from '@enkryptcom/types'; -const newNetworks = [NetworkNames.Bitrock, NetworkNames.Fraxtal]; +const newNetworks = [ + NetworkNames.Form, + NetworkNames.Rollux, + NetworkNames.SyscoinNEVM, + NetworkNames.Fire, +]; const newSwaps: NetworkNames[] = []; export { newNetworks, newSwaps }; diff --git a/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts b/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts index aca1303eb..9633d5dce 100644 --- a/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts +++ b/packages/extension/src/providers/ethereum/libs/activity-handlers/providers/etherscan/configs.ts @@ -49,10 +49,11 @@ const NetworkEndpoints: Record = { [NetworkNames.Base]: 'https://api.basescan.org/', [NetworkNames.Celo]: 'https://explorer.celo.org/mainnet/', [NetworkNames.FormTestnet]: 'https://testnet-explorer.form.network/', + [NetworkNames.Form]: 'https://explorer.form.network/', [NetworkNames.ArtheraTest]: 'https://explorer-test.arthera.net/', [NetworkNames.Arthera]: 'https://explorer.arthera.net/', - [NetworkNames.SyscoinTest]: 'https://tanenbaum.io/', - [NetworkNames.Syscoin]: 'https://explorer.syscoin.org/', + [NetworkNames.SyscoinNEVMTest]: 'https://explorer.tanenbaum.io/', + [NetworkNames.SyscoinNEVM]: 'https://explorer.syscoin.org/', [NetworkNames.RolluxTest]: 'https://rollux.tanenbaum.io/', [NetworkNames.Rollux]: 'https://explorer.rollux.com/', [NetworkNames.Blast]: 'https://api.blastscan.io/', diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts index 5ff6cc7e1..b37fb82bd 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/assetinfo-mew.ts @@ -20,6 +20,7 @@ import { EvmNetwork } from '../../types/evm-network'; import { getKnownNetworkTokens } from './token-lists'; import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; import { NATIVE_TOKEN_ADDRESS } from '../common'; +import getBlockscoutBalances from './blockscout'; import getTomoBalances from './tomochain'; import getSolBalances from './solanachain'; import { CoinGeckoTokenMarket } from '@/libs/market-data/types'; @@ -120,9 +121,13 @@ const supportedNetworks: Record = { tbName: 'shib', cgPlatform: CoingeckoPlatform.Shibarium, }, + [NetworkNames.SyscoinNEVM]: { + cgPlatform: CoingeckoPlatform.Syscoin, + bsEndpoint: true, + }, [NetworkNames.Rollux]: { - tbName: 'rollux', cgPlatform: CoingeckoPlatform.Rollux, + bsEndpoint: true, }, [NetworkNames.Telos]: { tbName: 'tlos', @@ -191,6 +196,8 @@ const getTokens = ( return getTomoBalances(chain, address); } else if (chain === NetworkNames.Solana) { return getSolBalances(network, address); + } else if (supportedNetworks[chain].bsEndpoint) { + return getBlockscoutBalances(chain, address); } let url = ''; if (chain === NetworkNames.Ethereum || chain === NetworkNames.Binance) diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts new file mode 100644 index 000000000..b78b132a0 --- /dev/null +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/blockscout.ts @@ -0,0 +1,90 @@ +import { SupportedNetworkNames, TokenBalance } from './types/tokenbalance-mew'; +import { NetworkEndpoints } from '@/providers/ethereum/libs/activity-handlers/providers/etherscan/configs'; +import { NATIVE_TOKEN_ADDRESS } from '../common'; +import { numberToHex } from 'web3-utils'; + +interface TokenBalanceType { + token: string; + quantity: string; + error?: unknown; +} + +interface TokenResponseItem { + token: { + address: string; + decimals: string; + name: string; + symbol: string; + }; + value: string; +} + +interface TokenResponse { + items: TokenResponseItem[]; +} + +const getBlockscoutBalances = ( + chain: SupportedNetworkNames, + address: string, +): Promise => { + const encodedAddress = encodeURIComponent(address); + const nativeTokenUrl = `${NetworkEndpoints[chain]}api/v2/addresses/${encodedAddress}`; + const tokenBalancesUrl = `${NetworkEndpoints[chain]}api/v2/addresses/${encodedAddress}/tokens?type=ERC-20`; + + return Promise.all([ + fetch(nativeTokenUrl).then(res => res.json()), + fetch(tokenBalancesUrl).then(res => res.json()), + ]) + .then(([nativeResponse, tokenResponse]: [any, TokenResponse]) => { + if (!nativeResponse?.coin_balance || !tokenResponse?.items) { + return Promise.reject('Error fetching balance data'); + } + + if (Number.isNaN(Number(nativeResponse.coin_balance))) { + return Promise.reject('Invalid native token balance'); + } + + // Map native token balance + const nativeBalance: TokenBalanceType = { + token: NATIVE_TOKEN_ADDRESS, + quantity: nativeResponse.coin_balance, + }; + + // Map token balances + const tokenBalances: TokenBalanceType[] = Array.isArray( + tokenResponse?.items, + ) + ? tokenResponse.items + .filter( + item => + item?.token?.address && + typeof item.token.address === 'string' && + item.value !== undefined, + ) + .map(item => ({ + token: item.token.address.toLowerCase(), + quantity: item.value, + })) + : []; + + // Merge native token and token balances + const allBalances = [nativeBalance, ...tokenBalances]; + + // Convert to TokenBalance format + return allBalances.map(tb => ({ + contract: tb.token, + balance: numberToHex(tb.quantity), // Convert to hex format + })); + }) + .catch(error => { + console.error('Error fetching balances:', error); + return [ + { + contract: NATIVE_TOKEN_ADDRESS, + balance: '0x0', + }, + ]; + }); +}; + +export default getBlockscoutBalances; diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts index 82e3abfd0..545104ebb 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/token-lists.ts @@ -3,6 +3,8 @@ import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; import { CGToken, SupportedNetworkNames } from './types/tokenbalance-mew'; const TOKEN_FETCH_TTL = 1000 * 60 * 60; const TokenList: Record = { + [NetworkNames.SyscoinNEVM]: `https://tokens.coingecko.com/${CoingeckoPlatform.Syscoin}/all.json`, + [NetworkNames.Rollux]: `https://tokens.coingecko.com/${CoingeckoPlatform.Rollux}/all.json`, [NetworkNames.Binance]: `https://tokens.coingecko.com/${CoingeckoPlatform.Binance}/all.json`, [NetworkNames.Ethereum]: `https://tokens.coingecko.com/${CoingeckoPlatform.Ethereum}/all.json`, [NetworkNames.Matic]: `https://tokens.coingecko.com/${CoingeckoPlatform.Matic}/all.json`, @@ -26,7 +28,6 @@ const TokenList: Record = { [NetworkNames.Celo]: `https://tokens.coingecko.com/${CoingeckoPlatform.Celo}/all.json`, [NetworkNames.TomoChain]: `https://tokens.coingecko.com/${CoingeckoPlatform.TomoChain}/all.json`, [NetworkNames.Shibarium]: `https://tokens.coingecko.com/${CoingeckoPlatform.Shibarium}/all.json`, - [NetworkNames.Rollux]: `https://tokens.coingecko.com/${CoingeckoPlatform.Rollux}/all.json`, [NetworkNames.Telos]: `https://tokens.coingecko.com/${CoingeckoPlatform.Telos}/all.json`, [NetworkNames.Blast]: `https://tokens.coingecko.com/${CoingeckoPlatform.Blast}/all.json`, [NetworkNames.Sanko]: `https://tokens.coingecko.com/${CoingeckoPlatform.Sanko}/all.json`, diff --git a/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts b/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts index 557141bec..6e24ff7a2 100644 --- a/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts +++ b/packages/extension/src/providers/ethereum/libs/assets-handlers/types/tokenbalance-mew.ts @@ -5,8 +5,9 @@ export interface TokenBalance { balance: string; } export interface SupportedNetwork { - tbName: string; + tbName?: string; cgPlatform?: string; + bsEndpoint?: boolean; } export interface CGToken { chainId: `0x${string}`; @@ -50,6 +51,7 @@ export type SupportedNetworkNames = | NetworkNames.Celo | NetworkNames.ZkSync | NetworkNames.Telos + | NetworkNames.SyscoinNEVM | NetworkNames.Rollux | NetworkNames.Sanko | NetworkNames.Degen diff --git a/packages/extension/src/providers/ethereum/libs/transaction/index.ts b/packages/extension/src/providers/ethereum/libs/transaction/index.ts index 8936a04d0..ea173a58d 100644 --- a/packages/extension/src/providers/ethereum/libs/transaction/index.ts +++ b/packages/extension/src/providers/ethereum/libs/transaction/index.ts @@ -92,7 +92,8 @@ class Transaction { const { isFeeMarketNetwork, feeHistory } = await this.web3 .getFeeHistory(6, 'latest', GAS_PERCENTILES) .then(history => ({ - isFeeMarketNetwork: !!latestBlock.baseFeePerGas, + isFeeMarketNetwork: + !!latestBlock.baseFeePerGas && history.baseFeePerGas.length !== 0, feeHistory: history, })) .catch(() => ({ diff --git a/packages/extension/src/providers/ethereum/networks/5ire.ts b/packages/extension/src/providers/ethereum/networks/5ire.ts new file mode 100644 index 000000000..afe93c387 --- /dev/null +++ b/packages/extension/src/providers/ethereum/networks/5ire.ts @@ -0,0 +1,24 @@ +import icon from './icons/5ire.svg'; +import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; +import { NetworkNames } from '@enkryptcom/types'; +import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; + +const fireOptions: EvmNetworkOptions = { + name: NetworkNames.Fire, + name_long: '5ire Chain', + homePage: 'https://www.5ire.org', + blockExplorerTX: 'https://5irescan.io/tx/[[txHash]]', + blockExplorerAddr: 'https://5irescan.io/address/[[address]]', + chainID: '0x3e3', + isTestNetwork: false, + currencyName: '5IRE', + currencyNameLong: '5ire', + node: 'https://rpc.5ire.network', + icon, + coingeckoID: '5ire', + activityHandler: wrapActivityHandler(() => Promise.resolve([])), +}; + +const fire = new EvmNetwork(fireOptions); + +export default fire; diff --git a/packages/extension/src/providers/ethereum/networks/bsc.ts b/packages/extension/src/providers/ethereum/networks/bsc.ts index 7eaebd53c..99f78f546 100644 --- a/packages/extension/src/providers/ethereum/networks/bsc.ts +++ b/packages/extension/src/providers/ethereum/networks/bsc.ts @@ -2,7 +2,6 @@ import icon from './icons/bsc.svg'; import { CoingeckoPlatform, NetworkNames } from '@enkryptcom/types'; import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; import assetsInfoHandler from '@/providers/ethereum/libs/assets-handlers/assetinfo-mew'; -import { EtherscanActivity } from '../libs/activity-handlers'; import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; import shNFTHandler from '@/libs/nft-handlers/simplehash'; diff --git a/packages/extension/src/providers/ethereum/networks/form.ts b/packages/extension/src/providers/ethereum/networks/form.ts new file mode 100644 index 000000000..2990dd8d1 --- /dev/null +++ b/packages/extension/src/providers/ethereum/networks/form.ts @@ -0,0 +1,24 @@ +import icon from './icons/form.png'; +import { NetworkNames } from '@enkryptcom/types'; +import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; +import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; +import { EtherscanActivity } from '../libs/activity-handlers'; + +const formOptions: EvmNetworkOptions = { + name: NetworkNames.Form, + name_long: 'Form Mainnet', + homePage: 'https://docs.form.network', + blockExplorerTX: 'https://explorer.form.network/tx/[[txHash]]', + blockExplorerAddr: 'https://explorer.form.network/address/[[address]]', + chainID: '0x1de', + isTestNetwork: false, + currencyName: 'ETH', + currencyNameLong: 'Ethereum', + node: 'wss://rpc.form.network/ws', + icon, + activityHandler: wrapActivityHandler(EtherscanActivity), +}; + +const form = new EvmNetwork(formOptions); + +export default form; diff --git a/packages/extension/src/providers/ethereum/networks/icons/5ire.svg b/packages/extension/src/providers/ethereum/networks/icons/5ire.svg new file mode 100644 index 000000000..1e2c0b952 --- /dev/null +++ b/packages/extension/src/providers/ethereum/networks/icons/5ire.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/extension/src/providers/ethereum/networks/index.ts b/packages/extension/src/providers/ethereum/networks/index.ts index 8a5a6f8d1..9fa93a266 100755 --- a/packages/extension/src/providers/ethereum/networks/index.ts +++ b/packages/extension/src/providers/ethereum/networks/index.ts @@ -33,11 +33,12 @@ import celoNode from './celo'; import shibNode from './shib'; import artheraNode from './aa'; import formTestnet from './form-testnet'; +import formNode from './form'; import artheraTestNode from './aat'; -import syscoinTestNode from './tsys'; -import syscoinNode from './sys'; -import rolluxTestNode from './trlx'; -import rolluxNode from './rlx'; +import syscoinNEVMTestNode from './syscoin/nevm-testnet'; +import syscoinNEVMNode from './syscoin/nevm'; +import rolluxTestNode from './syscoin/rollux-testnet'; +import rolluxNode from './syscoin/rollux'; import cagaAnkara from './cagaAnkara'; import telosNode from './tlos'; import blastNode from './blast'; @@ -61,6 +62,7 @@ import cotiDevnetNode from './coti-devnet'; import holeskyNode from './holesky'; import bitrockNode from './bitrock'; import fraxtalNode from './fraxtal'; +import _5ireNode from './5ire'; export default { sepolia: sepoliaNode, @@ -107,9 +109,10 @@ export default { shib: shibNode, arthera: artheraNode, formTestnet: formTestnet, + form: formNode, artheraTest: artheraTestNode, - syscoinTest: syscoinTestNode, - syscoin: syscoinNode, + syscoinNEVMTest: syscoinNEVMTestNode, + syscoinNEVM: syscoinNEVMNode, rolluxTest: rolluxTestNode, rollux: rolluxNode, cagaAnkara: cagaAnkara, @@ -135,4 +138,5 @@ export default { holesky: holeskyNode, bitrock: bitrockNode, frax: fraxtalNode, + '5ire': _5ireNode, }; diff --git a/packages/extension/src/providers/ethereum/networks/sys.ts b/packages/extension/src/providers/ethereum/networks/sys.ts deleted file mode 100644 index 40a60de35..000000000 --- a/packages/extension/src/providers/ethereum/networks/sys.ts +++ /dev/null @@ -1,26 +0,0 @@ -import icon from './icons/sys_nevm.svg'; -import { NetworkNames, CoingeckoPlatform } from '@enkryptcom/types'; -import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import { EtherscanActivity } from '../libs/activity-handlers'; -import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; - -const syscoinOptions: EvmNetworkOptions = { - name: NetworkNames.Syscoin, - name_long: 'Syscoin NEVM', - homePage: 'https://www.syscoin.org/', - blockExplorerTX: 'https://explorer.syscoin.org/tx/[[txHash]]', - blockExplorerAddr: 'https://explorer.syscoin.org/address/[[address]]', - chainID: '0x39', - isTestNetwork: false, - currencyName: 'SYS', - currencyNameLong: 'Syscoin', - node: 'wss://rpc.syscoin.org/wss', - icon, - coingeckoID: 'syscoin', - coingeckoPlatform: CoingeckoPlatform.Syscoin, - activityHandler: wrapActivityHandler(EtherscanActivity), -}; - -const syscoin = new EvmNetwork(syscoinOptions); - -export default syscoin; diff --git a/packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts b/packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts new file mode 100644 index 000000000..254a541d5 --- /dev/null +++ b/packages/extension/src/providers/ethereum/networks/syscoin/nevm-testnet.ts @@ -0,0 +1,25 @@ +import icon from '../icons/tsys_nevm.svg'; +import { NetworkNames } from '@enkryptcom/types'; +import { EvmNetwork, EvmNetworkOptions } from '../../types/evm-network'; +import { EtherscanActivity } from '../../libs/activity-handlers'; +import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; + +const syscoinNEVMTestOptions: EvmNetworkOptions = { + name: NetworkNames.SyscoinNEVMTest, + name_long: 'Syscoin NEVM Testnet', + homePage: 'https://www.syscoin.org/', + blockExplorerTX: 'https://explorer.tanenbaum.io/tx/[[txHash]]', + blockExplorerAddr: 'https://explorer.tanenbaum.io/address/[[address]]', + chainID: '0x1644', + isTestNetwork: true, + currencyName: 'TSYS', + currencyNameLong: 'Test Syscoin', + node: 'wss://rpc.tanenbaum.io/wss', + icon, + buyLink: 'https://faucet.syscoin.org', + activityHandler: wrapActivityHandler(EtherscanActivity), +}; + +const syscoinNEVMTest = new EvmNetwork(syscoinNEVMTestOptions); + +export default syscoinNEVMTest; diff --git a/packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts b/packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts new file mode 100644 index 000000000..72901f021 --- /dev/null +++ b/packages/extension/src/providers/ethereum/networks/syscoin/nevm.ts @@ -0,0 +1,29 @@ +import icon from '../icons/sys_nevm.svg'; +import { CoingeckoPlatform, NetworkNames } from "@enkryptcom/types"; +import { EvmNetwork, EvmNetworkOptions } from "../../types/evm-network"; +import assetsInfoHandler from "@/providers/ethereum/libs/assets-handlers/assetinfo-mew"; +import { EtherscanActivity } from "../../libs/activity-handlers"; +import wrapActivityHandler from "@/libs/activity-state/wrap-activity-handler"; + +const syscoinNEVMOptions: EvmNetworkOptions = { + name: NetworkNames.SyscoinNEVM, + name_long: "Syscoin NEVM", + homePage: "https://www.syscoin.org/", + blockExplorerTX: "https://explorer.syscoin.org/tx/[[txHash]]", + blockExplorerAddr: "https://explorer.syscoin.org/address/[[address]]", + chainID: "0x39", + isTestNetwork: false, + currencyName: "SYS", + currencyNameLong: "Syscoin", + node: "wss://rpc.syscoin.org/wss", + coingeckoID: "syscoin", + coingeckoPlatform: CoingeckoPlatform.Syscoin, + icon, + assetsInfoHandler, + buyLink: 'https://trade.coinify.com/syscoin?defaultCryptoCurrency=SYSEVM&cryptoCurrencies=SYSROLLUX,SYSEVM,SYS&targetPage=buy', + activityHandler: wrapActivityHandler(EtherscanActivity), +}; + +const syscoinNEVM = new EvmNetwork(syscoinNEVMOptions); + +export default syscoinNEVM; diff --git a/packages/extension/src/providers/ethereum/networks/trlx.ts b/packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts similarity index 76% rename from packages/extension/src/providers/ethereum/networks/trlx.ts rename to packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts index 4ba7d93d6..933f65ace 100644 --- a/packages/extension/src/providers/ethereum/networks/trlx.ts +++ b/packages/extension/src/providers/ethereum/networks/syscoin/rollux-testnet.ts @@ -1,7 +1,7 @@ -import icon from './icons/tsys_rollux.svg'; +import icon from '../icons/tsys_rollux.svg'; import { NetworkNames } from '@enkryptcom/types'; -import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import { EtherscanActivity } from '../libs/activity-handlers'; +import { EvmNetwork, EvmNetworkOptions } from '../../types/evm-network'; +import { EtherscanActivity } from '../../libs/activity-handlers'; import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; const rolluxTestOptions: EvmNetworkOptions = { @@ -16,6 +16,7 @@ const rolluxTestOptions: EvmNetworkOptions = { currencyNameLong: 'Test Syscoin', node: 'wss://rpc-tanenbaum.rollux.com/wss', icon, + buyLink: 'https://faucet.rollux.com', activityHandler: wrapActivityHandler(EtherscanActivity), }; diff --git a/packages/extension/src/providers/ethereum/networks/rlx.ts b/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts similarity index 66% rename from packages/extension/src/providers/ethereum/networks/rlx.ts rename to packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts index 234d4953d..bf3e2e3b9 100644 --- a/packages/extension/src/providers/ethereum/networks/rlx.ts +++ b/packages/extension/src/providers/ethereum/networks/syscoin/rollux.ts @@ -1,9 +1,9 @@ -import icon from './icons/sys_rollux.svg'; +import icon from '../icons/sys_rollux.svg'; import { NetworkNames, CoingeckoPlatform } from '@enkryptcom/types'; -import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import { EtherscanActivity } from '../libs/activity-handlers'; +import { EvmNetwork, EvmNetworkOptions } from '../../types/evm-network'; +import assetsInfoHandler from "@/providers/ethereum/libs/assets-handlers/assetinfo-mew"; +import { EtherscanActivity } from '../../libs/activity-handlers'; import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; -import assetsInfoHandler from '@/providers/ethereum/libs/assets-handlers/assetinfo-mew'; const rolluxOptions: EvmNetworkOptions = { name: NetworkNames.Rollux, @@ -20,6 +20,7 @@ const rolluxOptions: EvmNetworkOptions = { coingeckoPlatform: CoingeckoPlatform.Rollux, icon, assetsInfoHandler, + buyLink: 'https://trade.coinify.com/syscoin?defaultCryptoCurrency=SYSROLLUX&cryptoCurrencies=SYSROLLUX,SYSEVM,SYS&targetPage=buy', activityHandler: wrapActivityHandler(EtherscanActivity), }; diff --git a/packages/extension/src/providers/ethereum/networks/tsys.ts b/packages/extension/src/providers/ethereum/networks/tsys.ts deleted file mode 100644 index 85c7beab6..000000000 --- a/packages/extension/src/providers/ethereum/networks/tsys.ts +++ /dev/null @@ -1,24 +0,0 @@ -import icon from './icons/tsys_nevm.svg'; -import { NetworkNames } from '@enkryptcom/types'; -import { EvmNetwork, EvmNetworkOptions } from '../types/evm-network'; -import { EtherscanActivity } from '../libs/activity-handlers'; -import wrapActivityHandler from '@/libs/activity-state/wrap-activity-handler'; - -const syscoinTestOptions: EvmNetworkOptions = { - name: NetworkNames.SyscoinTest, - name_long: 'Syscoin NEVM Testnet', - homePage: 'https://www.syscoin.org/', - blockExplorerTX: 'https://tanenbaum.io/tx/[[txHash]]', - blockExplorerAddr: 'https://tanenbaum.io/address/[[address]]', - chainID: '0x1644', - isTestNetwork: true, - currencyName: 'TSYS', - currencyNameLong: 'Test Syscoin', - node: 'wss://rpc.tanenbaum.io/wss', - icon, - activityHandler: wrapActivityHandler(EtherscanActivity), -}; - -const syscoinTest = new EvmNetwork(syscoinTestOptions); - -export default syscoinTest; diff --git a/packages/extension/src/providers/ethereum/types/evm-network.ts b/packages/extension/src/providers/ethereum/types/evm-network.ts index 10a4158f2..a584cb701 100644 --- a/packages/extension/src/providers/ethereum/types/evm-network.ts +++ b/packages/extension/src/providers/ethereum/types/evm-network.ts @@ -34,6 +34,7 @@ export interface EvmNetworkOptions { currencyNameLong: string; node: string; icon: string; + buyLink?: string | undefined; coingeckoID?: string; coingeckoPlatform?: CoingeckoPlatform; basePath?: string; @@ -98,6 +99,7 @@ export class EvmNetwork extends BaseNetwork { baseOptions.customTokens = baseOptions.customTokens ?? true; super(baseOptions); + this.options = options; this.chainID = options.chainID; this.assetsInfoHandler = options.assetsInfoHandler; diff --git a/packages/extension/src/ui/action/App.vue b/packages/extension/src/ui/action/App.vue index fabe95aeb..0ade5518e 100644 --- a/packages/extension/src/ui/action/App.vue +++ b/packages/extension/src/ui/action/App.vue @@ -362,14 +362,26 @@ const toggleDepositWindow = () => { showDepositWindow.value = !showDepositWindow.value; }; const openBuyPage = () => { - const buyLink = - currentNetwork.value.name === NetworkNames.KadenaTestnet - ? (currentNetwork.value as KadenaNetwork).options.buyLink - : `https://ccswap.myetherwallet.com/?to=${currentNetwork.value.displayAddress( + const buyLink = (() => { + switch (currentNetwork.value.name) { + case NetworkNames.KadenaTestnet: + return (currentNetwork.value as KadenaNetwork).options.buyLink; + case NetworkNames.SyscoinNEVM: + case NetworkNames.Rollux: + return `${(currentNetwork.value as EvmNetwork).options.buyLink}&address=${currentNetwork.value.displayAddress( + accountHeaderData.value.selectedAccount!.address + )}`; + case NetworkNames.SyscoinNEVMTest: + case NetworkNames.RolluxTest: + return (currentNetwork.value as EvmNetwork).options.buyLink; + default: + return `https://ccswap.myetherwallet.com/?to=${currentNetwork.value.displayAddress( accountHeaderData.value.selectedAccount!.address, )}&network=${currentNetwork.value.name}&crypto=${ currentNetwork.value.currencyName }&platform=enkrypt`; + } + })(); Browser.tabs.create({ url: buyLink, }); diff --git a/packages/types/src/networks.ts b/packages/types/src/networks.ts index a93524fa2..9b6dd4527 100755 --- a/packages/types/src/networks.ts +++ b/packages/types/src/networks.ts @@ -66,10 +66,11 @@ export enum NetworkNames { ArtheraTest = "AATest", Arthera = "AA", FormTestnet = "FormTestnet", + Form = "Form", AssetHubDOT = "AssetHubDOT", AssetHubKSM = "AssetHubKSM", - SyscoinTest = "TSYS", - Syscoin = "SYS", + SyscoinNEVMTest = "TSYS", + SyscoinNEVM = "SYS", RolluxTest = "TRLX", Rollux = "RLX", CagaAnkara = "CagaAnkara", @@ -96,6 +97,7 @@ export enum NetworkNames { Holesky = "HOLESKY", Bitrock = "bitrock", Fraxtal = "fraxtal", + Fire = "5ire", } export enum CoingeckoPlatform {