@@ -31,7 +31,7 @@ import {
3131} from './account' ;
3232import { ofcToken } from './ofc' ;
3333import { BaseCoin , CoinFeature , DynamicCoin } from './base' ;
34- import { AmsTokenConfig , TrimmedAmsTokenConfig } from './tokenConfig' ;
34+ import { AmsNetworkConfigMap , AmsTokenConfig , TrimmedAmsTokenConfig } from './tokenConfig' ;
3535import { CoinMap } from './map' ;
3636import { BaseNetwork , getNetwork , getNetworksMap , NetworkType } from './networks' ;
3737import { networkFeatureMapForTokens } from './networkFeatureMapForTokens' ;
@@ -471,6 +471,35 @@ export function createTokenMapUsingConfigDetails(tokenConfigMap: Record<string,
471471 return CoinMap . fromCoins ( Array . from ( BaseCoins . values ( ) ) ) ;
472472}
473473
474+ /**
475+ * Enrich base chain coins (isToken=false) with features from the AMS networks map.
476+ *
477+ * createTokenMapUsingTrimmedConfigDetails reads features for base chains from
478+ * TrimmedAmsTokenConfig.additionalFeatures. The assetsList endpoint returns base chains with no features;
479+ * features are in the networks endpoint (/api/v1/networks/:network), matched by coin.network.name === networksEntry.name.
480+ *
481+ * Coins that already have additionalFeatures defined are left unchanged.
482+ * Coins whose network.name has no match in networksMap are left unchanged (empty features).
483+ */
484+ export function enrichBaseChainFeatures (
485+ coinTokenMap : Record < string , TrimmedAmsTokenConfig [ ] > ,
486+ networksMap : AmsNetworkConfigMap
487+ ) : Record < string , TrimmedAmsTokenConfig [ ] > {
488+ const featuresByNetworkName = new Map < string , string [ ] > (
489+ Object . values ( networksMap ) . map ( ( net ) : [ string , string [ ] ] => [ net . name , net . features ] )
490+ ) ;
491+ return Object . fromEntries (
492+ Object . entries ( coinTokenMap ) . map ( ( [ key , coins ] ) => [
493+ key ,
494+ coins . map ( ( coin ) => {
495+ if ( coin . isToken || coin . additionalFeatures !== undefined ) return coin ;
496+ const features = featuresByNetworkName . get ( coin . network . name ) ;
497+ return features !== undefined ? { ...coin , additionalFeatures : features } : coin ;
498+ } ) ,
499+ ] )
500+ ) ;
501+ }
502+
474503export function createTokenMapUsingTrimmedConfigDetails (
475504 reducedTokenConfigMap : Record < string , TrimmedAmsTokenConfig [ ] >
476505) : CoinMap {
0 commit comments