From 83830c22a8596647614d9d57b07a4be4ecb74001 Mon Sep 17 00:00:00 2001 From: Manas Ladha Date: Wed, 1 Apr 2026 18:07:52 +0530 Subject: [PATCH] feat(statics): add CoinFeature[] overload to getFilteredFeatures Allow callers with an existing CoinFeature[] to pass it directly to getFilteredFeatures, bypassing the coin map lookup. Also add ofcFeatures field to Erc20WithOfcConfig so generateERC20 callers can explicitly control OFC coin features. Jira: CSHLD-559 Co-Authored-By: Claude Sonnet 4.6 --- modules/statics/src/coins/generateERC20.ts | 11 ++++++----- modules/statics/src/ofc.ts | 17 +++++++++-------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/modules/statics/src/coins/generateERC20.ts b/modules/statics/src/coins/generateERC20.ts index 63fe31f117..4b5519a129 100644 --- a/modules/statics/src/coins/generateERC20.ts +++ b/modules/statics/src/coins/generateERC20.ts @@ -1,7 +1,7 @@ import { erc20, erc20Token, terc20 } from '../account'; import { BaseCoin, CoinFeature, UnderlyingAsset } from '../base'; import { AccountNetwork, EthereumNetwork, Networks } from '../networks'; -import { ofcerc20, tofcerc20 } from '../ofc'; +import { getFilteredFeatures, ofcerc20, tofcerc20 } from '../ofc'; // --- Shared config interfaces --- @@ -20,6 +20,7 @@ interface BaseErc20Config { interface Erc20WithOfcConfig extends BaseErc20Config { ofcId: string; ofcName: string; + ofcFeatures: CoinFeature[]; ofcAddressCoin?: string; skipOfc?: false; } @@ -35,7 +36,7 @@ type Erc20TokenConfig = Erc20Config & { network: AccountNetwork }; function createOfcCoin( config: Erc20WithOfcConfig, - onchainFeatures: CoinFeature[], + features: CoinFeature[], defaultAddressCoin: string, isTestnet: boolean ) { @@ -48,7 +49,7 @@ function createOfcCoin( config.decimalPlaces, config.asset, undefined, // kind - undefined, + getFilteredFeatures(features), undefined, // prefix undefined, // suffix undefined, // network @@ -75,7 +76,7 @@ export function generateErc20Coin(config: Erc20CoinConfig): Readonly[] if (config.skipOfc) return [onChain]; - return [onChain, createOfcCoin(config, onChain.features, 'eth', false)]; + return [onChain, createOfcCoin(config, config.ofcFeatures ?? onChain.features, 'eth', false)]; } export function generateTestErc20Coin(config: Erc20CoinConfig): Readonly[] { @@ -94,7 +95,7 @@ export function generateTestErc20Coin(config: Erc20CoinConfig): Readonly !DISALLOWED_FEATURES.includes(feature)); + return [...filteredFeatures, ...REQUIRED_FEATURES]; + } const coinsMap = getAllCoinsAndTokensMap(); - if (coinsMap.has(suffix.toLowerCase())) { + if (coinsMap.has(input.toLowerCase())) { const filteredFeatures = coinsMap - .get(suffix.toLowerCase()) + .get(input.toLowerCase()) .features.filter((feature) => !DISALLOWED_FEATURES.includes(feature)); return [...filteredFeatures, ...REQUIRED_FEATURES]; }