diff --git a/packages/currency/src/currencyManager.ts b/packages/currency/src/currencyManager.ts index 3bc12f63d5..e697228670 100644 --- a/packages/currency/src/currencyManager.ts +++ b/packages/currency/src/currencyManager.ts @@ -20,6 +20,8 @@ export class CurrencyManager implements CurrencyTypes.ICurrency private readonly legacyTokens: CurrencyTypes.LegacyTokenMap; private readonly conversionPairs: CurrencyTypes.AggregatorsMap; + private readonly knownCurrenciesById: Map>; + private static defaultInstance: CurrencyManager; /** @@ -41,6 +43,10 @@ export class CurrencyManager implements CurrencyTypes.ICurrency } this.knownCurrencies.push(currency); } + + this.knownCurrenciesById = new Map( + this.knownCurrencies.map((knownCurrency) => [knownCurrency.id, knownCurrency]), + ); this.legacyTokens = legacyTokens || CurrencyManager.getDefaultLegacyTokens(); this.conversionPairs = conversionPairs || CurrencyManager.getDefaultConversionPairs(); } @@ -84,7 +90,7 @@ export class CurrencyManager implements CurrencyTypes.ICurrency * Gets a supported currency from its CurrencyTypes.CurrencyDefinition id */ fromId(id: string): CurrencyTypes.CurrencyDefinition | undefined { - return this.knownCurrencies.find((knownCurrency) => knownCurrency.id === id); + return this.knownCurrenciesById.get(id); } /** diff --git a/packages/currency/test/currencyManager.test.ts b/packages/currency/test/currencyManager.test.ts index 7f2f02177f..26a0819a39 100644 --- a/packages/currency/test/currencyManager.test.ts +++ b/packages/currency/test/currencyManager.test.ts @@ -153,6 +153,13 @@ describe('CurrencyManager', () => { }); describe('Accessing currencies', () => { + it('access a common token by its id', () => { + expect(currencyManager.fromId('USDC-multichain-moonbeam')).toMatchObject({ + symbol: 'USDC-multichain', + decimals: 6, + }); + }); + it('access a common token by its symbol', () => { expect(currencyManager.from('DAI')).toMatchObject({ symbol: 'DAI',