1.54.237 • Published 8 months ago

@chain-registry/v2-client v1.54.237

Weekly downloads
-
License
SEE LICENSE IN LI...
Repository
github
Last release
8 months ago

@chain-registry/client

The @chain-registry/client package provides a client for dynamically fetching and managing chain and asset data from the Cosmos chain registry. This tool is essential for developers who need to access up-to-date blockchain information, including asset lists and IBC data.

Installation

npm install @chain-registry/client

Usage

We recommend using the ChainRegistryClient directly, the ChainRegistryFetcher is lower-level if you don't need a higher-level class.

ChainRegistryClient

ChainRegistryClient dynamically fetches and manages chain and asset data from the chain-registry.

Initializing the Client

import { ChainRegistryClient } from '@chain-registry/client';

const client = new ChainRegistryClient({
  chainNames: ['osmosis', 'juno']
});

After instantiation, you can use client to access chain and asset information, along with IBC data.

ChainRegistryClient Options

While the default usage above is simple, you can customize it.

The ChainRegistryClient constructor accepts an options object you can specify:

  • chainNames (required): An array of strings representing the names of the chains you want to fetch data for. This option is essential to determine which chains' data will be managed by the client.

  • assetListNames (optional): An array of strings specifying the names of the chains for which asset lists should be fetched. If not provided, the client uses the chainNames array as the default list.

  • ibcNamePairs (optional): An array of string arrays, where each nested array contains two elements representing a pair of chain names. This setting specifies the Inter-Blockchain Communication (IBC) connections between the chains for which data should be considered. It is particularly useful for limiting the scope of IBC-related data processing.

  • baseUrl (optional): A string representing the base URL for fetching the chain registry data. If not specified, the client defaults to the official Cosmos chain registry on GitHub (https://raw.githubusercontent.com/cosmos/chain-registry/master).

Initialization Examples

Here is a client with specified chain names and limited IBC name pairs, and custom baseUrl:

const client = new ChainRegistryClient({
  chainNames: ['osmosis', 'juno', 'stargaze', 'cosmoshub'],
  ibcNamePairs: [['osmosis', 'stargaze']],
  baseUrl: 'https://yourregistry.com/'
});

Here is a client with specified chain names and limited asset list, and limited IBC name pairs:

const clientWithAssetLists = new ChainRegistryClient({
  chainNames: ['osmosis', 'juno', 'stargaze'],
  assetListNames: ['osmosis', 'juno'],
  ibcNamePairs: [['osmosis', 'juno']]
});

Let's walk through this example where you can specify which IBC connections you're interested in:

import { ChainRegistryClient } from '@chain-registry/client';

const client = new ChainRegistryClient({
  chainNames: ['osmosis', 'juno', 'stargaze', 'cosmoshub'],
  ibcNamePairs: [['osmosis', 'stargaze']]
});

In this example, the chainNames option includes four chains, but ibcNamePairs only includes a pair between osmosis and stargaze. This configuration means that the client will fetch and manage data for all four specified chains, but when it comes to generating asset lists with getGeneratedAssetLists(), it will only consider the IBC connections between osmosis and stargaze for IBC-connected assets.

Methods

  • fetchUrls(): Asynchronously fetches the data for all the configured URLs and stores the results internally within the client instance.
  • getChain(chainName): Returns the Chain object for the specified chain name.
  • getChainInfo(chainName): Retrieves ChainInfo, an object with detailed information about the specified chain, including its configuration, assets, and IBC connections.
  • getAssetList(chainName): Obtains a list of assets available on the specified chain.
  • getChainAssetList(chainName): Returns the AssetList for the specified chain.
  • getGeneratedAssetLists(chainName): Generates and returns AssetList[] for the specified chain, including IBC-connected assets.
  • getChainIbcData(chainName): Retrieves IBC data related to the specified chain.

Fetching chain and asset data

To initiate the data fetching process, the ChainRegistryClient must first execute the fetchUrls method. This method asynchronously retrieves data from the predefined URLs based on the configuration provided during the client's instantiation.

await client.fetchUrls();

In this line, client.fetchUrls() asynchronously fetches the chain and asset data for the chains specified in the client's configuration. This process involves making HTTP requests to the URLs constructed from the base URL and the chain names, asset list names, and IBC name pairs provided in the ChainRegistryClientOptions.

Accessing Chain Information

After fetching the data, you can access detailed information about a specific chain using the getChainInfo method. This method returns a ChainInfo object, which contains data about the requested chain, including its assets, IBC connections, and other metadata.

const osmosisInfo = client.getChainInfo('osmosis');
 // returns ChainInfo, which is an object containing everything

if you just want the Chain object, you can do:

const osmosisInfo = client.getChain('osmosis');
 // returns Chain from `@chain-registry/types`

Retrieving Asset Lists

Here, client.getAssetList('juno') fetches the asset list for the Juno chain. The junoAssets variable will hold an array of assets defined on the Juno chain, detailing each asset's properties such as its name, symbol, and other asset-specific information.

const junoAssets = client.getAssetList('juno');
// returns AssetList from '@chain-registry/types'

If you want to get the IBC denominations, and the asset lists based on the IBC connections, you can use getGeneratedAssetLists():

const generatedOsmosisAssets = client.getGeneratedAssetLists('osmosis');
// returns AssetList from '@chain-registry/types' — including generated IBC assets based on IBC connections

ChainRegistryFetcher

ChainRegistryFetcher is a lower-level component used by ChainRegistryClient for fetching data from specified URLs.

Fetching data

import { ChainRegistryFetcher, ChainRegistryFetcherOptions } from '@chain-registry/client';

const options: ChainRegistryFetcherOptions = {
  urls: [
    'https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/chain.json',
    'https://raw.githubusercontent.com/cosmos/chain-registry/master/osmosis/assetlist.json',
    'https://raw.githubusercontent.com/cosmos/chain-registry/master/juno/assetlist.json',
    'https://raw.githubusercontent.com/cosmos/chain-registry/master/secretnetwork/assetlist.json',
    'https://raw.githubusercontent.com/cosmos/chain-registry/master/_IBC/juno-osmosis.json',
    'https://raw.githubusercontent.com/cosmos/chain-registry/master/_IBC/osmosis-secretnetwork.json'
  ]
};
const registry = new ChainRegistryFetcher(options);
await registry.fetchUrls();

Fetching Schemata

We currently only support fetching JSON schemas as defined in https://github.com/cosmos/chain-registry. Supported are assetlist.schema.json, chain.schema.json and ibc_data.schema.json.

fetchUrls

You can set the ChainRegistryFetcher.urls property and call ChainRegistryFetcher.fetchUrls()

registry.urls = [
  // urls to fetch
];
await registry.fetchUrls();

fetch

Or, you can simply call ChainRegistryFetcher.fetch()

await registry.fetch('https://some-json-schema.com/some-schema.json');

Asset lists

You can get generated asset lists directly from the registry:

// generated asset lists
const generated: AssetList[] = registry.getGeneratedAssetLists('osmosis');

You can get generated AssetList[] objects directly from the ChainRegistry via the assetLists method:

// you can also get generated assets from ChainInfo object
const chainInfo: Chain = registry.getChainInfo('osmosis');
const generatedAssets: AssetList[] = chainInfo.assetLists;

Chain info

You can get Chain object directly from the ChainRegistry via the getChain method:

// get Chain from registry
const chain: Chain = registry.getChain('osmosis');

or get the ChainInfo object:

const chainInfo: ChainInfo = registry.getChainInfo('osmosis');

// AssetList[] of the generated assets
const assets: AssetList[] = chainInfo.assetLists;

// Chain 
const chain: Chain = chainInfo.chain;

// Native asset list
const nativeAssetList: AssetList = chainInfo.nativeAssetList;

Related

Checkout these related projects:

  • @cosmology/telescope Your Frontend Companion for Building with TypeScript with Cosmos SDK Modules.
  • @cosmwasm/ts-codegen Convert your CosmWasm smart contracts into dev-friendly TypeScript classes.
  • chain-registry Everything from token symbols, logos, and IBC denominations for all assets you want to support in your application.
  • cosmos-kit Experience the convenience of connecting with a variety of web3 wallets through a single, streamlined interface.
  • create-cosmos-app Set up a modern Cosmos app by running one command.
  • interchain-ui The Interchain Design System, empowering developers with a flexible, easy-to-use UI kit.
  • starship Unified Testing and Development for the Interchain.

Credits

🛠 Built by Cosmology — if you like our tools, please consider delegating to our validator ⚛️

Disclaimer

AS DESCRIBED IN THE LICENSES, THE SOFTWARE IS PROVIDED “AS IS”, AT YOUR OWN RISK, AND WITHOUT WARRANTIES OF ANY KIND.

No developer or entity involved in creating this software will be liable for any claims or damages whatsoever associated with your use, inability to use, or your interaction with other users of the code, including any direct, indirect, incidental, special, exemplary, punitive or consequential damages, or loss of profits, cryptocurrencies, tokens, or anything else of value.

1.54.156

10 months ago

1.54.157

10 months ago

1.54.158

10 months ago

1.54.159

10 months ago

1.54.163

10 months ago

1.54.164

10 months ago

1.54.165

10 months ago

1.54.166

10 months ago

1.54.160

10 months ago

1.54.161

10 months ago

1.54.162

10 months ago

1.54.149

11 months ago

1.54.145

11 months ago

1.54.146

11 months ago

1.54.147

11 months ago

1.54.148

11 months ago

1.54.152

11 months ago

1.54.153

11 months ago

1.54.154

11 months ago

1.54.155

11 months ago

1.54.150

11 months ago

1.54.151

11 months ago

1.54.179

10 months ago

1.54.180

10 months ago

1.54.185

9 months ago

1.54.186

9 months ago

1.54.187

9 months ago

1.54.188

9 months ago

1.54.181

10 months ago

1.54.182

10 months ago

1.54.183

10 months ago

1.54.184

10 months ago

1.54.167

10 months ago

1.54.168

10 months ago

1.54.169

10 months ago

1.54.174

10 months ago

1.54.175

10 months ago

1.54.176

10 months ago

1.54.177

10 months ago

1.54.170

10 months ago

1.54.171

10 months ago

1.54.172

10 months ago

1.54.173

10 months ago

1.54.189

9 months ago

1.54.190

9 months ago

1.54.191

9 months ago

1.54.196

9 months ago

1.54.197

9 months ago

1.54.198

9 months ago

1.54.199

9 months ago

1.54.192

9 months ago

1.54.193

9 months ago

1.54.194

9 months ago

1.54.195

9 months ago

1.54.215

8 months ago

1.54.216

8 months ago

1.54.217

8 months ago

1.54.218

8 months ago

1.54.211

9 months ago

1.54.212

9 months ago

1.54.213

9 months ago

1.54.214

9 months ago

1.54.219

8 months ago

1.54.220

8 months ago

1.54.221

8 months ago

1.54.100

1 year ago

1.54.204

9 months ago

1.54.205

9 months ago

1.54.206

9 months ago

1.54.207

9 months ago

1.54.200

9 months ago

1.54.201

9 months ago

1.54.202

9 months ago

1.54.203

9 months ago

1.54.208

9 months ago

1.54.209

9 months ago

1.54.210

9 months ago

1.54.237

8 months ago

1.54.116

12 months ago

1.54.117

12 months ago

1.54.118

12 months ago

1.54.119

12 months ago

1.54.233

8 months ago

1.54.112

12 months ago

1.54.234

8 months ago

1.54.113

12 months ago

1.54.235

8 months ago

1.54.114

12 months ago

1.54.236

8 months ago

1.54.115

12 months ago

1.54.28

1 year ago

1.54.29

1 year ago

1.54.24

1 year ago

1.54.120

12 months ago

1.54.25

1 year ago

1.54.121

12 months ago

1.54.26

1 year ago

1.54.122

12 months ago

1.54.27

1 year ago

1.54.20

1 year ago

1.54.21

1 year ago

1.54.22

1 year ago

1.54.23

1 year ago

1.54.226

8 months ago

1.54.105

1 year ago

1.54.227

8 months ago

1.54.106

12 months ago

1.54.228

8 months ago

1.54.107

12 months ago

1.54.229

8 months ago

1.54.108

12 months ago

1.54.222

8 months ago

1.54.101

1 year ago

1.54.223

8 months ago

1.54.102

1 year ago

1.54.224

8 months ago

1.54.103

1 year ago

1.54.225

8 months ago

1.54.104

1 year ago

1.54.109

12 months ago

1.54.230

8 months ago

1.54.231

8 months ago

1.54.110

12 months ago

1.54.232

8 months ago

1.54.111

12 months ago

1.54.138

11 months ago

1.54.139

11 months ago

1.54.134

11 months ago

1.54.135

11 months ago

1.54.136

11 months ago

1.54.137

11 months ago

1.54.141

11 months ago

1.54.142

11 months ago

1.54.143

11 months ago

1.54.144

11 months ago

1.54.140

11 months ago

1.54.127

11 months ago

1.54.128

11 months ago

1.54.129

11 months ago

1.54.123

12 months ago

1.54.124

12 months ago

1.54.125

12 months ago

1.54.126

11 months ago

1.54.130

11 months ago

1.54.131

11 months ago

1.54.132

11 months ago

1.54.133

11 months ago

1.54.60

1 year ago

1.54.61

1 year ago

1.54.62

1 year ago

1.54.63

1 year ago

1.54.68

1 year ago

1.54.69

1 year ago

1.54.64

1 year ago

1.54.65

1 year ago

1.54.66

1 year ago

1.54.67

1 year ago

1.54.50

1 year ago

1.54.51

1 year ago

1.54.52

1 year ago

1.54.57

1 year ago

1.54.58

1 year ago

1.54.59

1 year ago

1.54.53

1 year ago

1.54.54

1 year ago

1.54.55

1 year ago

1.54.56

1 year ago

1.54.40

1 year ago

1.54.41

1 year ago

1.54.46

1 year ago

1.54.47

1 year ago

1.54.48

1 year ago

1.54.49

1 year ago

1.54.42

1 year ago

1.54.43

1 year ago

1.54.44

1 year ago

1.54.45

1 year ago

1.54.30

1 year ago

1.54.39

1 year ago

1.54.35

1 year ago

1.54.36

1 year ago

1.54.37

1 year ago

1.54.38

1 year ago

1.54.31

1 year ago

1.54.32

1 year ago

1.54.33

1 year ago

1.54.34

1 year ago

1.54.93

1 year ago

1.54.94

1 year ago

1.54.95

1 year ago

1.54.96

1 year ago

1.54.90

1 year ago

1.54.91

1 year ago

1.54.92

1 year ago

1.54.97

1 year ago

1.54.98

1 year ago

1.54.99

1 year ago

1.54.82

1 year ago

1.54.83

1 year ago

1.54.84

1 year ago

1.54.85

1 year ago

1.54.80

1 year ago

1.54.81

1 year ago

1.54.86

1 year ago

1.54.87

1 year ago

1.54.88

1 year ago

1.54.89

1 year ago

1.54.71

1 year ago

1.54.72

1 year ago

1.54.73

1 year ago

1.54.74

1 year ago

1.54.70

1 year ago

1.54.79

1 year ago

1.54.75

1 year ago

1.54.76

1 year ago

1.54.77

1 year ago

1.54.78

1 year ago

1.54.19

1 year ago

1.54.18

1 year ago

1.54.17

1 year ago

1.54.13

1 year ago

1.54.14

1 year ago

1.54.15

1 year ago

1.54.16

1 year ago

1.54.12

1 year ago

1.54.10

1 year ago

1.54.11

1 year ago

1.54.9

1 year ago

1.54.8

1 year ago

1.54.3

1 year ago

1.54.5

1 year ago

1.54.4

1 year ago

1.54.7

1 year ago

1.54.6

1 year ago

1.54.2

1 year ago

1.54.1

1 year ago

1.51.0

1 year ago

1.49.15

1 year ago

1.49.10

1 year ago

1.49.11

1 year ago

1.49.12

1 year ago

1.49.13

1 year ago

1.49.14

1 year ago

1.49.1

1 year ago

1.49.0

1 year ago

1.49.3

1 year ago

1.49.2

1 year ago

1.49.5

1 year ago

1.49.4

1 year ago

1.49.7

1 year ago

1.49.6

1 year ago

1.49.9

1 year ago

1.49.8

1 year ago

1.52.0

1 year ago

1.53.0

1 year ago

1.48.83

1 year ago

1.48.84

1 year ago

1.48.85

1 year ago

1.48.86

1 year ago

1.48.82

1 year ago

1.50.0

1 year ago

1.54.0

1 year ago

1.48.81

1 year ago

1.48.69

1 year ago

1.48.61

1 year ago

1.48.62

1 year ago

1.48.63

1 year ago

1.48.64

1 year ago

1.48.65

1 year ago

1.48.66

1 year ago

1.48.67

1 year ago

1.48.68

1 year ago

1.48.60

1 year ago

1.48.58

1 year ago

1.48.59

1 year ago

1.48.80

1 year ago

1.48.72

1 year ago

1.48.73

1 year ago

1.48.74

1 year ago

1.48.75

1 year ago

1.48.76

1 year ago

1.48.77

1 year ago

1.48.78

1 year ago

1.48.79

1 year ago

1.48.70

1 year ago

1.48.71

1 year ago

1.47.10

2 years ago

1.47.11

2 years ago

1.48.0

2 years ago

1.44.4

2 years ago

1.44.3

2 years ago

1.48.2

2 years ago

1.48.1

2 years ago

1.48.4

2 years ago

1.48.3

2 years ago

1.48.6

2 years ago

1.48.5

2 years ago

1.48.8

2 years ago

1.48.7

2 years ago

1.48.9

2 years ago

1.48.50

1 year ago

1.48.51

1 year ago

1.48.52

1 year ago

1.48.53

1 year ago

1.48.54

1 year ago

1.48.55

1 year ago

1.48.56

1 year ago

1.48.57

1 year ago

1.48.47

1 year ago

1.48.48

1 year ago

1.48.49

1 year ago

1.48.40

1 year ago

1.48.41

1 year ago

1.48.42

1 year ago

1.48.43

1 year ago

1.48.44

1 year ago

1.48.45

1 year ago

1.48.46

1 year ago

1.45.0

2 years ago

1.48.36

1 year ago

1.48.37

1 year ago

1.48.38

1 year ago

1.48.39

1 year ago

1.48.30

2 years ago

1.48.31

2 years ago

1.48.32

2 years ago

1.48.33

2 years ago

1.48.34

2 years ago

1.48.35

2 years ago

1.46.10

2 years ago

1.48.25

2 years ago

1.48.26

2 years ago

1.48.27

2 years ago

1.48.28

2 years ago

1.48.29

2 years ago

1.48.20

2 years ago

1.48.21

2 years ago

1.48.22

2 years ago

1.48.23

2 years ago

1.48.24

2 years ago

1.46.0

2 years ago

1.46.2

2 years ago

1.46.1

2 years ago

1.46.4

2 years ago

1.46.3

2 years ago

1.46.6

2 years ago

1.46.5

2 years ago

1.48.14

2 years ago

1.46.8

2 years ago

1.48.15

2 years ago

1.46.7

2 years ago

1.48.16

2 years ago

1.48.17

2 years ago

1.46.9

2 years ago

1.48.18

2 years ago

1.48.19

2 years ago

1.48.10

2 years ago

1.48.11

2 years ago

1.48.12

2 years ago

1.48.13

2 years ago

1.47.1

2 years ago

1.47.0

2 years ago

1.47.3

2 years ago

1.47.2

2 years ago

1.47.5

2 years ago

1.47.4

2 years ago

1.47.7

2 years ago

1.47.6

2 years ago

1.47.9

2 years ago

1.47.8

2 years ago

1.44.2

2 years ago

1.36.0

2 years ago

1.44.1

2 years ago

1.37.0

2 years ago

1.36.1

2 years ago

1.34.0

2 years ago

1.35.0

2 years ago

1.38.0

2 years ago

1.39.0

2 years ago

1.40.0

2 years ago

1.42.0

2 years ago

1.41.0

2 years ago

1.33.0

2 years ago

1.44.0

2 years ago

1.43.0

2 years ago

1.32.2

2 years ago

1.32.1

2 years ago

1.32.0

2 years ago