@injectivelabs/sdk-ts 1.0.417 → 1.0.419

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,20 +1,35 @@
1
- import { Token, TokenInfo, TokenMeta, TokenMetaUtils, TokenInfoFactory } from '@injectivelabs/token-metadata';
1
+ import { Token, TokenInfo, TokenMeta, TokenFactory, TokenMetaUtils } from '@injectivelabs/token-metadata';
2
+ import { DenomTrace } from '@injectivelabs/chain-api/ibc/applications/transfer/v1/transfer_pb';
2
3
  import { Network } from '@injectivelabs/networks';
4
+ import { ChainGrpcIbcApi } from '../../../client/chain/grpc/ChainGrpcIbcApi';
3
5
  /**
4
6
  * This client can be used to fetch token
5
- * denoms in a fully sync way (without API calls)
7
+ * denoms including API calls as well
8
+ *
9
+ * Special Case:
10
+ * If IBC denom is not within the hardcoded
11
+ * IBC hashes we should query the denom traces API
12
+ * to find the token meta for the denom
6
13
  *
7
14
  * @category Utility Classes
8
15
  */
9
16
  export declare class DenomClient {
10
- protected tokenInfoFactory: TokenInfoFactory;
17
+ protected cachedDenomTraces: Record<string, DenomTrace.AsObject>;
18
+ protected tokenFactory: TokenFactory;
11
19
  protected tokenMetaUtils: TokenMetaUtils;
20
+ protected ibcApi: ChainGrpcIbcApi;
12
21
  constructor(network?: Network);
13
- getDenomTokenInfo(denom: string): TokenInfo | undefined;
14
- getDenomToken(denom: string): Token | undefined;
22
+ getDenomTokenInfo(denom: string): Promise<TokenInfo | undefined>;
23
+ getDenomToken(denom: string): Promise<Token | undefined>;
15
24
  getTokenMetaDataBySymbol(symbol: string): TokenMeta | undefined;
16
25
  getTokenMetaDataByAddress(address: string): TokenMeta | undefined;
17
26
  getTokenMetaDataByName(name: string): TokenMeta | undefined;
18
27
  getCoinGeckoId(denom: string): string;
28
+ /**
29
+ * Find token based on the hash and the base denom
30
+ * from the denom trace of the particular hash
31
+ */
32
+ private getIbcDenomToken;
33
+ private fetchAndCacheDenomTraces;
19
34
  }
20
35
  //# sourceMappingURL=DenomClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DenomClient.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/Denom/DenomClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,cAAc,EACd,gBAAgB,EAEjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEjD;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAE5C,SAAS,CAAC,cAAc,EAAE,cAAc,CAAA;gBAE5B,OAAO,GAAE,OAAyB;IAK9C,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIvD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAI/C,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI/D,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIjE,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI3D,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAGtC"}
1
+ {"version":3,"file":"DenomClient.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/Denom/DenomClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,cAAc,EAEf,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mEAAmE,CAAA;AAG9F,OAAO,EAAuB,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAE5E;;;;;;;;;;GAUG;AACH,qBAAa,WAAW;IACtB,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAK;IAErE,SAAS,CAAC,YAAY,EAAE,YAAY,CAAA;IAEpC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAA;IAExC,SAAS,CAAC,MAAM,EAAE,eAAe,CAAA;gBAErB,OAAO,GAAE,OAAyB;IAMxC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAgBhE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAc9D,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI/D,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIjE,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI3D,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIrC;;;OAGG;YACW,gBAAgB;YAyChB,wBAAwB;CAoBvC"}
@@ -1,24 +1,63 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.DenomClient = void 0;
4
13
  const token_metadata_1 = require("@injectivelabs/token-metadata");
14
+ const exceptions_1 = require("@injectivelabs/exceptions");
15
+ const utf8_1 = require("../../../utils/utf8");
16
+ const crypto_1 = require("../../../utils/crypto");
5
17
  const networks_1 = require("@injectivelabs/networks");
18
+ const ChainGrpcIbcApi_1 = require("../../../client/chain/grpc/ChainGrpcIbcApi");
6
19
  /**
7
20
  * This client can be used to fetch token
8
- * denoms in a fully sync way (without API calls)
21
+ * denoms including API calls as well
22
+ *
23
+ * Special Case:
24
+ * If IBC denom is not within the hardcoded
25
+ * IBC hashes we should query the denom traces API
26
+ * to find the token meta for the denom
9
27
  *
10
28
  * @category Utility Classes
11
29
  */
12
30
  class DenomClient {
13
31
  constructor(network = networks_1.Network.Mainnet) {
14
- this.tokenInfoFactory = token_metadata_1.TokenInfoFactory.make(network);
32
+ this.cachedDenomTraces = {};
33
+ this.tokenFactory = token_metadata_1.TokenFactory.make(network);
15
34
  this.tokenMetaUtils = token_metadata_1.TokenMetaUtilsFactory.make(network);
35
+ this.ibcApi = new ChainGrpcIbcApi_1.ChainGrpcIbcApi((0, networks_1.getNetworkEndpoints)(network).grpc);
16
36
  }
17
37
  getDenomTokenInfo(denom) {
18
- return this.tokenInfoFactory.toTokenInfo(denom);
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const token = this.tokenFactory.toTokenInfo(denom);
40
+ if (token) {
41
+ return token;
42
+ }
43
+ if (denom.startsWith('ibc')) {
44
+ const token = yield this.getIbcDenomToken(denom);
45
+ return token ? token_metadata_1.TokenInfo.fromToken(token) : undefined;
46
+ }
47
+ return;
48
+ });
19
49
  }
20
50
  getDenomToken(denom) {
21
- return this.tokenInfoFactory.toToken(denom);
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const token = this.tokenFactory.toToken(denom);
53
+ if (token) {
54
+ return token;
55
+ }
56
+ if (denom.startsWith('ibc')) {
57
+ return yield this.getIbcDenomToken(denom);
58
+ }
59
+ return;
60
+ });
22
61
  }
23
62
  getTokenMetaDataBySymbol(symbol) {
24
63
  return this.tokenMetaUtils.getMetaBySymbol(symbol);
@@ -32,6 +71,45 @@ class DenomClient {
32
71
  getCoinGeckoId(denom) {
33
72
  return this.tokenMetaUtils.getCoinGeckoIdFromSymbol(denom);
34
73
  }
74
+ /**
75
+ * Find token based on the hash and the base denom
76
+ * from the denom trace of the particular hash
77
+ */
78
+ getIbcDenomToken(denom) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ const hash = denom.replace('ibc/', '');
81
+ if (Object.keys(this.cachedDenomTraces).length === 0) {
82
+ yield this.fetchAndCacheDenomTraces();
83
+ }
84
+ const cachedDenomTrace = this.cachedDenomTraces[hash];
85
+ if (cachedDenomTrace) {
86
+ const token = this.tokenFactory.toToken(cachedDenomTrace.baseDenom);
87
+ return token
88
+ ? Object.assign(Object.assign({}, token), { denom }) : undefined;
89
+ }
90
+ const denomTrace = yield this.ibcApi.fetchDenomTrace(hash);
91
+ if (!denomTrace) {
92
+ throw new exceptions_1.GeneralException(new Error(`Denom trace not found for ${denom}`), {
93
+ type: exceptions_1.ErrorType.NotFoundError,
94
+ });
95
+ }
96
+ const token = this.tokenFactory.toToken(denomTrace.baseDenom);
97
+ return token
98
+ ? Object.assign(Object.assign({}, token), { denom }) : undefined;
99
+ });
100
+ }
101
+ fetchAndCacheDenomTraces() {
102
+ return __awaiter(this, void 0, void 0, function* () {
103
+ const denomTraces = yield this.ibcApi.fetchDenomsTrace();
104
+ const denomHashes = denomTraces.map((trace) => {
105
+ return {
106
+ trace: trace,
107
+ hash: Buffer.from((0, crypto_1.sha256)((0, utf8_1.fromUtf8)(`${trace.path}/${trace.baseDenom}`))).toString('hex'),
108
+ };
109
+ });
110
+ this.cachedDenomTraces = denomHashes.reduce((denomTraces, denomTrace) => (Object.assign(Object.assign({}, denomTraces), { [denomTrace.hash.toUpperCase()]: denomTrace.trace })), {});
111
+ });
112
+ }
35
113
  }
36
114
  exports.DenomClient = DenomClient;
37
115
  //# sourceMappingURL=DenomClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DenomClient.js","sourceRoot":"","sources":["../../../../src/core/utils/Denom/DenomClient.ts"],"names":[],"mappings":";;;AAAA,kEAOsC;AACtC,sDAAiD;AAEjD;;;;;GAKG;AACH,MAAa,WAAW;IAKtB,YAAY,UAAmB,kBAAO,CAAC,OAAO;QAC5C,IAAI,CAAC,gBAAgB,GAAG,iCAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACtD,IAAI,CAAC,cAAc,GAAG,sCAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,iBAAiB,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACjD,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAED,wBAAwB,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC;IAED,yBAAyB,CAAC,OAAe;QACvC,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,sBAAsB,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAA;IAC5D,CAAC;CACF;AAjCD,kCAiCC"}
1
+ {"version":3,"file":"DenomClient.js","sourceRoot":"","sources":["../../../../src/core/utils/Denom/DenomClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Token, TokenInfo, TokenMeta, TokenFactory, TokenMetaUtils } from '@injectivelabs/token-metadata';
2
+ import { Network } from '@injectivelabs/networks';
3
+ /**
4
+ * This client can be used to fetch token
5
+ * denoms in a fully sync way (without API calls)
6
+ *
7
+ * @category Utility Classes
8
+ */
9
+ export declare class DenomClientSync {
10
+ protected tokenFactory: TokenFactory;
11
+ protected tokenMetaUtils: TokenMetaUtils;
12
+ constructor(network?: Network);
13
+ getDenomTokenInfo(denom: string): TokenInfo | undefined;
14
+ getDenomToken(denom: string): Token | undefined;
15
+ getTokenMetaDataBySymbol(symbol: string): TokenMeta | undefined;
16
+ getTokenMetaDataByAddress(address: string): TokenMeta | undefined;
17
+ getTokenMetaDataByName(name: string): TokenMeta | undefined;
18
+ getCoinGeckoId(denom: string): string;
19
+ }
20
+ //# sourceMappingURL=DenomClientSync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DenomClientSync.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/Denom/DenomClientSync.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,cAAc,EAEf,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEjD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,SAAS,CAAC,YAAY,EAAE,YAAY,CAAA;IAEpC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAA;gBAE5B,OAAO,GAAE,OAAyB;IAK9C,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIvD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAI/C,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI/D,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIjE,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI3D,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAGtC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DenomClientSync = void 0;
4
+ const token_metadata_1 = require("@injectivelabs/token-metadata");
5
+ const networks_1 = require("@injectivelabs/networks");
6
+ /**
7
+ * This client can be used to fetch token
8
+ * denoms in a fully sync way (without API calls)
9
+ *
10
+ * @category Utility Classes
11
+ */
12
+ class DenomClientSync {
13
+ constructor(network = networks_1.Network.Mainnet) {
14
+ this.tokenFactory = token_metadata_1.TokenFactory.make(network);
15
+ this.tokenMetaUtils = token_metadata_1.TokenMetaUtilsFactory.make(network);
16
+ }
17
+ getDenomTokenInfo(denom) {
18
+ return this.tokenFactory.toTokenInfo(denom);
19
+ }
20
+ getDenomToken(denom) {
21
+ return this.tokenFactory.toToken(denom);
22
+ }
23
+ getTokenMetaDataBySymbol(symbol) {
24
+ return this.tokenMetaUtils.getMetaBySymbol(symbol);
25
+ }
26
+ getTokenMetaDataByAddress(address) {
27
+ return this.tokenMetaUtils.getMetaByAddress(address);
28
+ }
29
+ getTokenMetaDataByName(name) {
30
+ return this.tokenMetaUtils.getMetaByName(name);
31
+ }
32
+ getCoinGeckoId(denom) {
33
+ return this.tokenMetaUtils.getCoinGeckoIdFromSymbol(denom);
34
+ }
35
+ }
36
+ exports.DenomClientSync = DenomClientSync;
37
+ //# sourceMappingURL=DenomClientSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DenomClientSync.js","sourceRoot":"","sources":["../../../../src/core/utils/Denom/DenomClientSync.ts"],"names":[],"mappings":";;;AAAA,kEAOsC;AACtC,sDAAiD;AAEjD;;;;;GAKG;AACH,MAAa,eAAe;IAK1B,YAAY,UAAmB,kBAAO,CAAC,OAAO;QAC5C,IAAI,CAAC,YAAY,GAAG,6BAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC,cAAc,GAAG,sCAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,iBAAiB,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACzC,CAAC;IAED,wBAAwB,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC;IAED,yBAAyB,CAAC,OAAe;QACvC,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,sBAAsB,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAA;IAC5D,CAAC;CACF;AAjCD,0CAiCC"}
@@ -1,3 +1,3 @@
1
+ export * from './DenomClientSync';
1
2
  export * from './DenomClient';
2
- export * from './DenomClientAsync';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/Denom/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/Denom/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,eAAe,CAAA"}
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./DenomClientSync"), exports);
17
18
  __exportStar(require("./DenomClient"), exports);
18
- __exportStar(require("./DenomClientAsync"), exports);
19
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/utils/Denom/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,qDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/utils/Denom/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAiC;AACjC,gDAA6B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@injectivelabs/sdk-ts",
3
3
  "description": "SDK in TypeScript for building Injective applications in a browser, node, and react native environment.",
4
- "version": "1.0.417",
4
+ "version": "1.0.419",
5
5
  "license": "Apache-2.0",
6
6
  "author": {
7
7
  "name": "Bojan Angjelkoski",
@@ -45,7 +45,7 @@
45
45
  "@injectivelabs/indexer-api": "1.9.1",
46
46
  "@injectivelabs/networks": "^1.0.87",
47
47
  "@injectivelabs/ninja-api": "^1.0.11",
48
- "@injectivelabs/token-metadata": "^1.0.150",
48
+ "@injectivelabs/token-metadata": "^1.0.152",
49
49
  "@injectivelabs/ts-types": "^1.0.28",
50
50
  "@injectivelabs/utils": "^1.0.75",
51
51
  "@metamask/eth-sig-util": "^4.0.0",
@@ -68,7 +68,7 @@
68
68
  "shx": "^0.3.2",
69
69
  "snakecase-keys": "^5.4.1"
70
70
  },
71
- "gitHead": "295cd8310466c76b89eeaddb37e9464aee9449e8",
71
+ "gitHead": "5990e3e736f69b902ebe2a553926b86f01c3fff4",
72
72
  "typedoc": {
73
73
  "entryPoint": "./src/index.ts",
74
74
  "readmeFile": "./README.md",
@@ -1,31 +0,0 @@
1
- import { Token, TokenInfo, TokenMeta, TokenMetaUtils, TokenInfoFactory } from '@injectivelabs/token-metadata';
2
- import { DenomTrace } from '@injectivelabs/chain-api/ibc/applications/transfer/v1/transfer_pb';
3
- import { Network } from '@injectivelabs/networks';
4
- import { ChainGrpcIbcApi } from '../../../client/chain/grpc/ChainGrpcIbcApi';
5
- /**
6
- * This client can be used to fetch token
7
- * denoms including API calls as well
8
- *
9
- * Special Case:
10
- * If IBC denom is not within the hardcoded
11
- * IBC hashes we should query the denom traces API
12
- * to find the token meta for the denom
13
- *
14
- * @category Utility Classes
15
- */
16
- export declare class DenomClientAsync {
17
- protected cachedDenomTraces: Record<string, DenomTrace.AsObject>;
18
- protected tokenInfoFactory: TokenInfoFactory;
19
- protected tokenMetaUtils: TokenMetaUtils;
20
- protected ibcApi: ChainGrpcIbcApi;
21
- constructor(network?: Network);
22
- getDenomTokenInfo(denom: string): Promise<TokenInfo | undefined>;
23
- getDenomToken(denom: string): Promise<Token | undefined>;
24
- getTokenMetaDataBySymbol(symbol: string): TokenMeta | undefined;
25
- getTokenMetaDataByAddress(address: string): TokenMeta | undefined;
26
- getTokenMetaDataByName(name: string): TokenMeta | undefined;
27
- getCoinGeckoId(denom: string): string;
28
- private getIbcDenomToken;
29
- private fetchAndCacheDenomTraces;
30
- }
31
- //# sourceMappingURL=DenomClientAsync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DenomClientAsync.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/Denom/DenomClientAsync.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,cAAc,EACd,gBAAgB,EAEjB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,mEAAmE,CAAA;AAG9F,OAAO,EAAuB,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAE5E;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAK;IAErE,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAE5C,SAAS,CAAC,cAAc,EAAE,cAAc,CAAA;IAExC,SAAS,CAAC,MAAM,EAAE,eAAe,CAAA;gBAErB,OAAO,GAAE,OAAyB;IAMxC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAgBhE,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAc9D,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI/D,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIjE,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAI3D,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;YAIvB,gBAAgB;YA2BhB,wBAAwB;CAoBvC"}
@@ -1,107 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.DenomClientAsync = void 0;
13
- const token_metadata_1 = require("@injectivelabs/token-metadata");
14
- const exceptions_1 = require("@injectivelabs/exceptions");
15
- const utf8_1 = require("../../../utils/utf8");
16
- const crypto_1 = require("../../../utils/crypto");
17
- const networks_1 = require("@injectivelabs/networks");
18
- const ChainGrpcIbcApi_1 = require("../../../client/chain/grpc/ChainGrpcIbcApi");
19
- /**
20
- * This client can be used to fetch token
21
- * denoms including API calls as well
22
- *
23
- * Special Case:
24
- * If IBC denom is not within the hardcoded
25
- * IBC hashes we should query the denom traces API
26
- * to find the token meta for the denom
27
- *
28
- * @category Utility Classes
29
- */
30
- class DenomClientAsync {
31
- constructor(network = networks_1.Network.Mainnet) {
32
- this.cachedDenomTraces = {};
33
- this.tokenInfoFactory = token_metadata_1.TokenInfoFactory.make(network);
34
- this.tokenMetaUtils = token_metadata_1.TokenMetaUtilsFactory.make(network);
35
- this.ibcApi = new ChainGrpcIbcApi_1.ChainGrpcIbcApi((0, networks_1.getNetworkEndpoints)(network).grpc);
36
- }
37
- getDenomTokenInfo(denom) {
38
- return __awaiter(this, void 0, void 0, function* () {
39
- const token = this.tokenInfoFactory.toTokenInfo(denom);
40
- if (token) {
41
- return token;
42
- }
43
- if (denom.startsWith('ibc')) {
44
- const token = yield this.getIbcDenomToken(denom);
45
- return token ? token_metadata_1.TokenInfo.fromToken(token) : undefined;
46
- }
47
- return;
48
- });
49
- }
50
- getDenomToken(denom) {
51
- return __awaiter(this, void 0, void 0, function* () {
52
- const token = this.tokenInfoFactory.toToken(denom);
53
- if (token) {
54
- return token;
55
- }
56
- if (denom.startsWith('ibc')) {
57
- return yield this.getIbcDenomToken(denom);
58
- }
59
- return;
60
- });
61
- }
62
- getTokenMetaDataBySymbol(symbol) {
63
- return this.tokenMetaUtils.getMetaBySymbol(symbol);
64
- }
65
- getTokenMetaDataByAddress(address) {
66
- return this.tokenMetaUtils.getMetaByAddress(address);
67
- }
68
- getTokenMetaDataByName(name) {
69
- return this.tokenMetaUtils.getMetaByName(name);
70
- }
71
- getCoinGeckoId(denom) {
72
- return this.tokenMetaUtils.getCoinGeckoIdFromSymbol(denom);
73
- }
74
- getIbcDenomToken(denom) {
75
- return __awaiter(this, void 0, void 0, function* () {
76
- const hash = denom.replace('ibc/', '');
77
- if (Object.keys(this.cachedDenomTraces).length === 0) {
78
- yield this.fetchAndCacheDenomTraces();
79
- }
80
- const cachedDenomTrace = this.cachedDenomTraces[hash];
81
- if (cachedDenomTrace) {
82
- return this.tokenInfoFactory.toToken(cachedDenomTrace.baseDenom);
83
- }
84
- const denomTrace = yield this.ibcApi.fetchDenomTrace(hash);
85
- if (!denomTrace) {
86
- throw new exceptions_1.GeneralException(new Error(`Denom trace not found for ${denom}`), {
87
- type: exceptions_1.ErrorType.NotFoundError,
88
- });
89
- }
90
- return this.tokenInfoFactory.toToken(denomTrace.baseDenom);
91
- });
92
- }
93
- fetchAndCacheDenomTraces() {
94
- return __awaiter(this, void 0, void 0, function* () {
95
- const denomTraces = yield this.ibcApi.fetchDenomsTrace();
96
- const denomHashes = denomTraces.map((trace) => {
97
- return {
98
- trace: trace,
99
- hash: Buffer.from((0, crypto_1.sha256)((0, utf8_1.fromUtf8)(`${trace.path}/${trace.baseDenom}`))).toString('hex'),
100
- };
101
- });
102
- this.cachedDenomTraces = denomHashes.reduce((denomTraces, denomTrace) => (Object.assign(Object.assign({}, denomTraces), { [denomTrace.hash.toUpperCase()]: denomTrace.trace })), {});
103
- });
104
- }
105
- }
106
- exports.DenomClientAsync = DenomClientAsync;
107
- //# sourceMappingURL=DenomClientAsync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DenomClientAsync.js","sourceRoot":"","sources":["../../../../src/core/utils/Denom/DenomClientAsync.ts"],"names":[],"mappings":"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"}