diff --git a/modules/statics/src/coins.ts b/modules/statics/src/coins.ts index bfa400acff..98804b437f 100644 --- a/modules/statics/src/coins.ts +++ b/modules/statics/src/coins.ts @@ -31,7 +31,7 @@ import { } from './account'; import { ofcToken } from './ofc'; import { BaseCoin, CoinFeature, DynamicCoin } from './base'; -import { AmsTokenConfig, TrimmedAmsTokenConfig } from './tokenConfig'; +import { AmsNetworkConfigMap, AmsTokenConfig, TrimmedAmsTokenConfig } from './tokenConfig'; import { CoinMap } from './map'; import { BaseNetwork, getNetwork, getNetworksMap, NetworkType } from './networks'; import { networkFeatureMapForTokens } from './networkFeatureMapForTokens'; @@ -471,6 +471,35 @@ export function createTokenMapUsingConfigDetails(tokenConfigMap: Record, + networksMap: AmsNetworkConfigMap +): Record { + const featuresByNetworkName = new Map( + Object.values(networksMap).map((net): [string, string[]] => [net.name, net.features]) + ); + return Object.fromEntries( + Object.entries(coinTokenMap).map(([key, coins]) => [ + key, + coins.map((coin) => { + if (coin.isToken || coin.additionalFeatures !== undefined) return coin; + const features = featuresByNetworkName.get(coin.network.name); + return features !== undefined ? { ...coin, additionalFeatures: features } : coin; + }), + ]) + ); +} + export function createTokenMapUsingTrimmedConfigDetails( reducedTokenConfigMap: Record ): CoinMap { diff --git a/modules/statics/src/tokenConfig.ts b/modules/statics/src/tokenConfig.ts index 4f96c3269b..b76b11592f 100644 --- a/modules/statics/src/tokenConfig.ts +++ b/modules/statics/src/tokenConfig.ts @@ -42,7 +42,7 @@ import { } from './account'; import { CoinFamily, CoinKind, BaseCoin, CoinFeature } from './base'; import { coins } from './coins'; -import { EthereumNetwork, Networks, NetworkType } from './networks'; +import { DynamicNetworkOptions, EthereumNetwork, Networks, NetworkType } from './networks'; import { OfcCoin } from './ofc'; export interface BaseTokenConfig { @@ -289,6 +289,12 @@ export interface AmsTokenConfig { policyId?: string; } +export interface AmsNetworkConfig extends DynamicNetworkOptions { + features: CoinFeature[]; +} + +export type AmsNetworkConfigMap = Record; + export interface TrimmedAmsNetworkConfig { name: string; }