UNPKG

@hyperlane-xyz/sdk

Version:

The official SDK for the Hyperlane Network

51 lines 1.74 kB
import { assert } from '@hyperlane-xyz/utils'; import { verifyScale } from '../utils/decimals.js'; export class TokenMetadataMap { tokenMetadataMap; constructor() { this.tokenMetadataMap = new Map(); } set(chain, metadata) { this.tokenMetadataMap.set(chain, metadata); } getDecimals(chain) { const config = this.tokenMetadataMap.get(chain); if (config) return config.decimals; return [...this.tokenMetadataMap.values()].find((config) => config?.decimals)?.decimals; } getMetadataForChain(chain) { return this.tokenMetadataMap.get(chain); } getName(chain) { const config = this.tokenMetadataMap.get(chain); if (config?.name) return config.name; for (const [, meta] of this.tokenMetadataMap) { if (meta.name) return meta.name; } return undefined; } getScale(chain) { return this.tokenMetadataMap.get(chain)?.scale; } getSymbol(chain) { const symbol = this.tokenMetadataMap.get(chain)?.symbol; if (symbol) return symbol; return this.getDefaultSymbol(); } getDefaultSymbol() { for (const [, metadata] of this.tokenMetadataMap) { if (metadata.symbol) return metadata.symbol; } throw new Error('No symbol found in token metadata map.'); } finalize() { assert([...this.tokenMetadataMap.values()].every((config) => !!config.decimals), 'All decimals must be defined'); assert(verifyScale(this.tokenMetadataMap), `Found invalid or missing scale for inconsistent decimals`); } } //# sourceMappingURL=TokenMetadataMap.js.map