diff --git a/components/chainSelect/ChainSelect.tsx b/components/chainSelect/ChainSelect.tsx index ed495b3..0882bf1 100644 --- a/components/chainSelect/ChainSelect.tsx +++ b/components/chainSelect/ChainSelect.tsx @@ -9,6 +9,7 @@ import { useAppContext } from "../../context/AppContext"; import Select from "../inputs/Select"; import StackableContainer from "../layout/StackableContainer"; import { assert } from "@cosmjs/utils"; +import { ChainRegistryAsset } from "./chainregistry"; interface ChainOption { label: string; @@ -127,24 +128,26 @@ const ChainSelect = () => { const chainDisplayName = chainData["pretty_name"]; const registryName = chainOption.name; const explorerLink = getExplorerFromArray(chainData.explorers); - let asset = null; - let denom = ""; - let displayDenom = ""; - const displayDenomExponent = 6; - let gasPrice = ""; + let denom: string; + let displayDenom: string; + let displayDenomExponent: number; + let gasPrice: string; if (assetData.assets.length > 1) { denom = ""; displayDenom = ""; gasPrice = ""; + displayDenomExponent = 0; setChainError("Multiple token denoms available, enter manually"); setShowSettings(true); } else { - asset = assetData.assets[0]; + const asset: ChainRegistryAsset = assetData.assets[0]; denom = asset.base; displayDenom = asset.symbol; gasPrice = `0.03${asset.base}`; + const displayUnit = asset.denom_units.find((u) => u.denom == asset.display); + displayDenomExponent = displayUnit?.exponent ?? 6; } // test client connection diff --git a/components/chainSelect/chainregistry.ts b/components/chainSelect/chainregistry.ts new file mode 100644 index 0000000..ef1aa4a --- /dev/null +++ b/components/chainSelect/chainregistry.ts @@ -0,0 +1,25 @@ +/** + * See https://github.com/cosmos/chain-registry/blob/1e9ecde770951cab90f0853a624411d79af90b83/provenance/assetlist.json#L8-L12 + */ +export interface ChainRegistryDemonUnit { + denom: string; + exponent: number; + aliases: string[]; +} + +/** + * See https://github.com/cosmos/chain-registry/blob/1e9ecde770951cab90f0853a624411d79af90b83/provenance/assetlist.json#L5-L28 + */ +export interface ChainRegistryAsset { + description: string; + denom_units: ChainRegistryDemonUnit[]; + base: string; + name: string; + display: string; + symbol: string; + logo_URIs: { + png: string; + svg: string; + }; + coingecko_id: string; +}