@chain-registry/client
Version:
Chain Registry Client
37 lines (36 loc) • 1.18 kB
JavaScript
import { getAssetLists } from '@chain-registry/utils';
export class ChainInfo {
chainName;
fetcher;
_chain;
_assetList;
_assetLists;
_ibcData = [];
constructor(options) {
this.chainName = options.chainName;
this.fetcher = options.fetcher;
this.refresh();
}
refresh() {
this._assetList = this.fetcher.getChainAssetList(this.chainName);
this._ibcData = this.fetcher.getChainIbcData(this.chainName);
this._chain = this.fetcher.getChain(this.chainName);
const supportedChains = this._ibcData.reduce((m, v) => {
if (!m.includes(v.chain_1.chain_name))
m.push(v.chain_1.chain_name);
if (!m.includes(v.chain_2.chain_name))
m.push(v.chain_2.chain_name);
return m;
}, []);
this._assetLists = this.fetcher.assetLists.filter((list) => supportedChains.includes(list.chain_name));
}
get chain() {
return this._chain;
}
get nativeAssetList() {
return this._assetList;
}
get assetLists() {
return getAssetLists(this.chainName, this._ibcData, this._assetLists);
}
}