@injectivelabs/sdk-ts 1.12.0-beta.43 → 1.12.0-beta.44
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.
- package/dist/cjs/core/utils/Denom/DenomClient.d.ts +9 -36
- package/dist/cjs/core/utils/Denom/DenomClient.d.ts.map +1 -1
- package/dist/cjs/core/utils/Denom/DenomClient.js +8 -90
- package/dist/cjs/core/utils/Denom/DenomClient.js.map +1 -1
- package/dist/cjs/core/utils/Denom/DenomClientSync.d.ts +2 -0
- package/dist/cjs/core/utils/Denom/DenomClientSync.d.ts.map +1 -1
- package/dist/cjs/core/utils/Denom/DenomClientSync.js +2 -0
- package/dist/cjs/core/utils/Denom/DenomClientSync.js.map +1 -1
- package/dist/esm/core/utils/Denom/DenomClient.d.ts +9 -36
- package/dist/esm/core/utils/Denom/DenomClient.d.ts.map +1 -1
- package/dist/esm/core/utils/Denom/DenomClient.js +12 -97
- package/dist/esm/core/utils/Denom/DenomClient.js.map +1 -1
- package/dist/esm/core/utils/Denom/DenomClientSync.d.ts +2 -0
- package/dist/esm/core/utils/Denom/DenomClientSync.d.ts.map +1 -1
- package/dist/esm/core/utils/Denom/DenomClientSync.js +2 -0
- package/dist/esm/core/utils/Denom/DenomClientSync.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,51 +1,24 @@
|
|
|
1
1
|
import { Token, TokenInfo, TokenMeta, TokenFactory, TokenMetaUtils } from '@injectivelabs/token-metadata';
|
|
2
|
-
import { Network
|
|
3
|
-
import { ChainGrpcIbcApi } from '../../../client/chain/grpc/ChainGrpcIbcApi';
|
|
4
|
-
import { IbcApplicationsTransferV1Transfer } from '@injectivelabs/core-proto-ts';
|
|
2
|
+
import { Network } from '@injectivelabs/networks';
|
|
5
3
|
/**
|
|
6
|
-
* This client can be used to fetch token
|
|
7
|
-
*
|
|
4
|
+
* This client can be used to fetch token from the existing token-metadata
|
|
5
|
+
* package.
|
|
8
6
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* to find the token meta for the denom
|
|
7
|
+
* If you want to have a mode advanced version of the DenomClient
|
|
8
|
+
* (including the ability to fetch metadata from an API)
|
|
9
|
+
* use the DenomClientAsync from the @injectivelabs/sdk-ui-ts package
|
|
13
10
|
*
|
|
14
11
|
* @category Utility Classes
|
|
15
12
|
*/
|
|
16
13
|
export declare class DenomClient {
|
|
17
|
-
protected cachedDenomTraces: Record<string, IbcApplicationsTransferV1Transfer.DenomTrace>;
|
|
18
14
|
protected tokenFactory: TokenFactory;
|
|
19
15
|
protected tokenMetaUtils: TokenMetaUtils;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
getDenomTokenInfo(denom: string): Promise<TokenInfo | undefined>;
|
|
25
|
-
getDenomToken(denom: string): Promise<Token | undefined>;
|
|
16
|
+
constructor(network?: Network);
|
|
17
|
+
getDenomTokenInfo(denom: string): TokenInfo | undefined;
|
|
18
|
+
getDenomToken(denom: string): Token | undefined;
|
|
26
19
|
getTokenMetaDataBySymbol(symbol: string): TokenMeta | undefined;
|
|
27
20
|
getTokenMetaDataByAddress(address: string): TokenMeta | undefined;
|
|
28
21
|
getTokenMetaDataByName(name: string): TokenMeta | undefined;
|
|
29
22
|
getCoinGeckoId(denom: string): string;
|
|
30
|
-
/**
|
|
31
|
-
* Find token based on the hash and the base denom
|
|
32
|
-
* from the denom trace of the particular hash
|
|
33
|
-
*/
|
|
34
|
-
protected getIbcDenomToken(denom: string): Promise<{
|
|
35
|
-
ibc: import("@injectivelabs/token-metadata").IbcTokenMeta;
|
|
36
|
-
denom: string;
|
|
37
|
-
tokenType: import("@injectivelabs/token-metadata").TokenType;
|
|
38
|
-
name: string;
|
|
39
|
-
logo: string;
|
|
40
|
-
symbol: string;
|
|
41
|
-
decimals: number;
|
|
42
|
-
coinGeckoId: string;
|
|
43
|
-
spl?: import("@injectivelabs/token-metadata").SplTokenMeta | undefined;
|
|
44
|
-
cw20?: import("@injectivelabs/token-metadata").Cw20TokenMeta | undefined;
|
|
45
|
-
cw20s?: import("@injectivelabs/token-metadata").Cw20TokenMetaWithSource[] | undefined;
|
|
46
|
-
erc20?: import("@injectivelabs/token-metadata").Erc20TokenMeta | undefined;
|
|
47
|
-
evm?: import("@injectivelabs/token-metadata").EvmTokenMeta | undefined;
|
|
48
|
-
} | undefined>;
|
|
49
|
-
protected fetchAndCacheDenomTraces(): Promise<void>;
|
|
50
23
|
}
|
|
51
24
|
//# 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,YAAY,EACZ,cAAc,
|
|
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;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEjD;;;;;;;;;GASG;AACH,qBAAa,WAAW;IACtB,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"}
|
|
@@ -1,65 +1,28 @@
|
|
|
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
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.DenomClient = void 0;
|
|
13
4
|
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
5
|
const networks_1 = require("@injectivelabs/networks");
|
|
18
|
-
const ChainGrpcIbcApi_1 = require("../../../client/chain/grpc/ChainGrpcIbcApi");
|
|
19
6
|
/**
|
|
20
|
-
* This client can be used to fetch token
|
|
21
|
-
*
|
|
7
|
+
* This client can be used to fetch token from the existing token-metadata
|
|
8
|
+
* package.
|
|
22
9
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* to find the token meta for the denom
|
|
10
|
+
* If you want to have a mode advanced version of the DenomClient
|
|
11
|
+
* (including the ability to fetch metadata from an API)
|
|
12
|
+
* use the DenomClientAsync from the @injectivelabs/sdk-ui-ts package
|
|
27
13
|
*
|
|
28
14
|
* @category Utility Classes
|
|
29
15
|
*/
|
|
30
16
|
class DenomClient {
|
|
31
|
-
constructor(network = networks_1.Network.Mainnet
|
|
32
|
-
this.cachedDenomTraces = {};
|
|
17
|
+
constructor(network = networks_1.Network.Mainnet) {
|
|
33
18
|
this.tokenFactory = token_metadata_1.TokenFactory.make(network);
|
|
34
19
|
this.tokenMetaUtils = token_metadata_1.TokenMetaUtilsFactory.make(network);
|
|
35
|
-
this.ibcApi = new ChainGrpcIbcApi_1.ChainGrpcIbcApi(options && options.endpoints
|
|
36
|
-
? options.endpoints.grpc
|
|
37
|
-
: (0, networks_1.getNetworkEndpoints)(network).grpc);
|
|
38
20
|
}
|
|
39
21
|
getDenomTokenInfo(denom) {
|
|
40
|
-
return
|
|
41
|
-
const token = this.tokenFactory.toTokenInfo(denom);
|
|
42
|
-
if (token) {
|
|
43
|
-
return token;
|
|
44
|
-
}
|
|
45
|
-
if (denom.startsWith('ibc')) {
|
|
46
|
-
const token = yield this.getIbcDenomToken(denom);
|
|
47
|
-
return token ? token_metadata_1.TokenInfo.fromToken(token) : undefined;
|
|
48
|
-
}
|
|
49
|
-
return;
|
|
50
|
-
});
|
|
22
|
+
return this.tokenFactory.toTokenInfo(denom);
|
|
51
23
|
}
|
|
52
24
|
getDenomToken(denom) {
|
|
53
|
-
return
|
|
54
|
-
const token = this.tokenFactory.toToken(denom);
|
|
55
|
-
if (token) {
|
|
56
|
-
return token;
|
|
57
|
-
}
|
|
58
|
-
if (denom.startsWith('ibc')) {
|
|
59
|
-
return yield this.getIbcDenomToken(denom);
|
|
60
|
-
}
|
|
61
|
-
return;
|
|
62
|
-
});
|
|
25
|
+
return this.tokenFactory.toToken(denom);
|
|
63
26
|
}
|
|
64
27
|
getTokenMetaDataBySymbol(symbol) {
|
|
65
28
|
return this.tokenMetaUtils.getMetaBySymbol(symbol);
|
|
@@ -73,51 +36,6 @@ class DenomClient {
|
|
|
73
36
|
getCoinGeckoId(denom) {
|
|
74
37
|
return this.tokenMetaUtils.getCoinGeckoIdFromSymbol(denom);
|
|
75
38
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Find token based on the hash and the base denom
|
|
78
|
-
* from the denom trace of the particular hash
|
|
79
|
-
*/
|
|
80
|
-
getIbcDenomToken(denom) {
|
|
81
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
const hash = denom.replace('ibc/', '');
|
|
83
|
-
if (Object.keys(this.cachedDenomTraces).length === 0) {
|
|
84
|
-
yield this.fetchAndCacheDenomTraces();
|
|
85
|
-
}
|
|
86
|
-
const cachedDenomTrace = this.cachedDenomTraces[hash];
|
|
87
|
-
if (cachedDenomTrace) {
|
|
88
|
-
const token = this.tokenFactory.toToken(cachedDenomTrace.baseDenom);
|
|
89
|
-
if (!token) {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
return Object.assign(Object.assign({}, token), { ibc: (0, token_metadata_1.getIbcTokenMetaFromDenomTrace)(Object.assign(Object.assign({}, cachedDenomTrace), { decimals: token.decimals, hash })), denom });
|
|
93
|
-
}
|
|
94
|
-
try {
|
|
95
|
-
const denomTrace = yield this.ibcApi.fetchDenomTrace(hash);
|
|
96
|
-
const token = this.tokenFactory.toToken(denomTrace.baseDenom);
|
|
97
|
-
if (!token) {
|
|
98
|
-
return undefined;
|
|
99
|
-
}
|
|
100
|
-
return Object.assign(Object.assign({}, token), { ibc: (0, token_metadata_1.getIbcTokenMetaFromDenomTrace)(Object.assign(Object.assign({}, denomTrace), { decimals: token.decimals, hash })), denom });
|
|
101
|
-
}
|
|
102
|
-
catch (e) {
|
|
103
|
-
throw new exceptions_1.GeneralException(new Error(`Denom trace not found for ${denom}`), {
|
|
104
|
-
type: exceptions_1.ErrorType.NotFoundError,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
fetchAndCacheDenomTraces() {
|
|
110
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
const denomTraces = yield this.ibcApi.fetchDenomsTrace();
|
|
112
|
-
const denomHashes = denomTraces.map((trace) => {
|
|
113
|
-
return {
|
|
114
|
-
trace: trace,
|
|
115
|
-
hash: Buffer.from((0, crypto_1.sha256)((0, utf8_1.fromUtf8)(`${trace.path}/${trace.baseDenom}`))).toString('hex'),
|
|
116
|
-
};
|
|
117
|
-
});
|
|
118
|
-
this.cachedDenomTraces = denomHashes.reduce((denomTraces, denomTrace) => (Object.assign(Object.assign({}, denomTraces), { [denomTrace.hash.toUpperCase()]: denomTrace.trace })), {});
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
39
|
}
|
|
122
40
|
exports.DenomClient = DenomClient;
|
|
123
41
|
//# sourceMappingURL=DenomClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DenomClient.js","sourceRoot":"","sources":["../../../../../src/core/utils/Denom/DenomClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DenomClient.js","sourceRoot":"","sources":["../../../../../src/core/utils/Denom/DenomClient.ts"],"names":[],"mappings":";;;AAAA,kEAOsC;AACtC,sDAAiD;AAEjD;;;;;;;;;GASG;AACH,MAAa,WAAW;IAKtB,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,kCAiCC"}
|
|
@@ -5,6 +5,8 @@ import { Network } from '@injectivelabs/networks';
|
|
|
5
5
|
* denoms in a fully sync way (without API calls)
|
|
6
6
|
*
|
|
7
7
|
* @category Utility Classes
|
|
8
|
+
*
|
|
9
|
+
* @deprecated use DenomClient instead (they are the same)
|
|
8
10
|
*/
|
|
9
11
|
export declare class DenomClientSync {
|
|
10
12
|
protected tokenFactory: TokenFactory;
|
|
@@ -1 +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
|
|
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;;;;;;;GAOG;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"}
|
|
@@ -8,6 +8,8 @@ const networks_1 = require("@injectivelabs/networks");
|
|
|
8
8
|
* denoms in a fully sync way (without API calls)
|
|
9
9
|
*
|
|
10
10
|
* @category Utility Classes
|
|
11
|
+
*
|
|
12
|
+
* @deprecated use DenomClient instead (they are the same)
|
|
11
13
|
*/
|
|
12
14
|
class DenomClientSync {
|
|
13
15
|
constructor(network = networks_1.Network.Mainnet) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DenomClientSync.js","sourceRoot":"","sources":["../../../../../src/core/utils/Denom/DenomClientSync.ts"],"names":[],"mappings":";;;AAAA,kEAOsC;AACtC,sDAAiD;AAEjD
|
|
1
|
+
{"version":3,"file":"DenomClientSync.js","sourceRoot":"","sources":["../../../../../src/core/utils/Denom/DenomClientSync.ts"],"names":[],"mappings":";;;AAAA,kEAOsC;AACtC,sDAAiD;AAEjD;;;;;;;GAOG;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,51 +1,24 @@
|
|
|
1
1
|
import { Token, TokenInfo, TokenMeta, TokenFactory, TokenMetaUtils } from '@injectivelabs/token-metadata';
|
|
2
|
-
import { Network
|
|
3
|
-
import { ChainGrpcIbcApi } from '../../../client/chain/grpc/ChainGrpcIbcApi';
|
|
4
|
-
import { IbcApplicationsTransferV1Transfer } from '@injectivelabs/core-proto-ts';
|
|
2
|
+
import { Network } from '@injectivelabs/networks';
|
|
5
3
|
/**
|
|
6
|
-
* This client can be used to fetch token
|
|
7
|
-
*
|
|
4
|
+
* This client can be used to fetch token from the existing token-metadata
|
|
5
|
+
* package.
|
|
8
6
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* to find the token meta for the denom
|
|
7
|
+
* If you want to have a mode advanced version of the DenomClient
|
|
8
|
+
* (including the ability to fetch metadata from an API)
|
|
9
|
+
* use the DenomClientAsync from the @injectivelabs/sdk-ui-ts package
|
|
13
10
|
*
|
|
14
11
|
* @category Utility Classes
|
|
15
12
|
*/
|
|
16
13
|
export declare class DenomClient {
|
|
17
|
-
protected cachedDenomTraces: Record<string, IbcApplicationsTransferV1Transfer.DenomTrace>;
|
|
18
14
|
protected tokenFactory: TokenFactory;
|
|
19
15
|
protected tokenMetaUtils: TokenMetaUtils;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
getDenomTokenInfo(denom: string): Promise<TokenInfo | undefined>;
|
|
25
|
-
getDenomToken(denom: string): Promise<Token | undefined>;
|
|
16
|
+
constructor(network?: Network);
|
|
17
|
+
getDenomTokenInfo(denom: string): TokenInfo | undefined;
|
|
18
|
+
getDenomToken(denom: string): Token | undefined;
|
|
26
19
|
getTokenMetaDataBySymbol(symbol: string): TokenMeta | undefined;
|
|
27
20
|
getTokenMetaDataByAddress(address: string): TokenMeta | undefined;
|
|
28
21
|
getTokenMetaDataByName(name: string): TokenMeta | undefined;
|
|
29
22
|
getCoinGeckoId(denom: string): string;
|
|
30
|
-
/**
|
|
31
|
-
* Find token based on the hash and the base denom
|
|
32
|
-
* from the denom trace of the particular hash
|
|
33
|
-
*/
|
|
34
|
-
protected getIbcDenomToken(denom: string): Promise<{
|
|
35
|
-
ibc: import("@injectivelabs/token-metadata").IbcTokenMeta;
|
|
36
|
-
denom: string;
|
|
37
|
-
tokenType: import("@injectivelabs/token-metadata").TokenType;
|
|
38
|
-
name: string;
|
|
39
|
-
logo: string;
|
|
40
|
-
symbol: string;
|
|
41
|
-
decimals: number;
|
|
42
|
-
coinGeckoId: string;
|
|
43
|
-
spl?: import("@injectivelabs/token-metadata").SplTokenMeta | undefined;
|
|
44
|
-
cw20?: import("@injectivelabs/token-metadata").Cw20TokenMeta | undefined;
|
|
45
|
-
cw20s?: import("@injectivelabs/token-metadata").Cw20TokenMetaWithSource[] | undefined;
|
|
46
|
-
erc20?: import("@injectivelabs/token-metadata").Erc20TokenMeta | undefined;
|
|
47
|
-
evm?: import("@injectivelabs/token-metadata").EvmTokenMeta | undefined;
|
|
48
|
-
} | undefined>;
|
|
49
|
-
protected fetchAndCacheDenomTraces(): Promise<void>;
|
|
50
23
|
}
|
|
51
24
|
//# 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,YAAY,EACZ,cAAc,
|
|
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;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEjD;;;;;;;;;GASG;AACH,qBAAa,WAAW;IACtB,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"}
|
|
@@ -1,52 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { fromUtf8 } from '../../../utils/utf8';
|
|
4
|
-
import { sha256 } from '../../../utils/crypto';
|
|
5
|
-
import { Network, getNetworkEndpoints, } from '@injectivelabs/networks';
|
|
6
|
-
import { ChainGrpcIbcApi } from '../../../client/chain/grpc/ChainGrpcIbcApi';
|
|
1
|
+
import { TokenFactory, TokenMetaUtilsFactory, } from '@injectivelabs/token-metadata';
|
|
2
|
+
import { Network } from '@injectivelabs/networks';
|
|
7
3
|
/**
|
|
8
|
-
* This client can be used to fetch token
|
|
9
|
-
*
|
|
4
|
+
* This client can be used to fetch token from the existing token-metadata
|
|
5
|
+
* package.
|
|
10
6
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* to find the token meta for the denom
|
|
7
|
+
* If you want to have a mode advanced version of the DenomClient
|
|
8
|
+
* (including the ability to fetch metadata from an API)
|
|
9
|
+
* use the DenomClientAsync from the @injectivelabs/sdk-ui-ts package
|
|
15
10
|
*
|
|
16
11
|
* @category Utility Classes
|
|
17
12
|
*/
|
|
18
13
|
export class DenomClient {
|
|
19
|
-
cachedDenomTraces = {};
|
|
20
14
|
tokenFactory;
|
|
21
15
|
tokenMetaUtils;
|
|
22
|
-
|
|
23
|
-
constructor(network = Network.Mainnet, options) {
|
|
16
|
+
constructor(network = Network.Mainnet) {
|
|
24
17
|
this.tokenFactory = TokenFactory.make(network);
|
|
25
18
|
this.tokenMetaUtils = TokenMetaUtilsFactory.make(network);
|
|
26
|
-
this.ibcApi = new ChainGrpcIbcApi(options && options.endpoints
|
|
27
|
-
? options.endpoints.grpc
|
|
28
|
-
: getNetworkEndpoints(network).grpc);
|
|
29
19
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (token) {
|
|
33
|
-
return token;
|
|
34
|
-
}
|
|
35
|
-
if (denom.startsWith('ibc')) {
|
|
36
|
-
const token = await this.getIbcDenomToken(denom);
|
|
37
|
-
return token ? TokenInfo.fromToken(token) : undefined;
|
|
38
|
-
}
|
|
39
|
-
return;
|
|
20
|
+
getDenomTokenInfo(denom) {
|
|
21
|
+
return this.tokenFactory.toTokenInfo(denom);
|
|
40
22
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (token) {
|
|
44
|
-
return token;
|
|
45
|
-
}
|
|
46
|
-
if (denom.startsWith('ibc')) {
|
|
47
|
-
return await this.getIbcDenomToken(denom);
|
|
48
|
-
}
|
|
49
|
-
return;
|
|
23
|
+
getDenomToken(denom) {
|
|
24
|
+
return this.tokenFactory.toToken(denom);
|
|
50
25
|
}
|
|
51
26
|
getTokenMetaDataBySymbol(symbol) {
|
|
52
27
|
return this.tokenMetaUtils.getMetaBySymbol(symbol);
|
|
@@ -60,65 +35,5 @@ export class DenomClient {
|
|
|
60
35
|
getCoinGeckoId(denom) {
|
|
61
36
|
return this.tokenMetaUtils.getCoinGeckoIdFromSymbol(denom);
|
|
62
37
|
}
|
|
63
|
-
/**
|
|
64
|
-
* Find token based on the hash and the base denom
|
|
65
|
-
* from the denom trace of the particular hash
|
|
66
|
-
*/
|
|
67
|
-
async getIbcDenomToken(denom) {
|
|
68
|
-
const hash = denom.replace('ibc/', '');
|
|
69
|
-
if (Object.keys(this.cachedDenomTraces).length === 0) {
|
|
70
|
-
await this.fetchAndCacheDenomTraces();
|
|
71
|
-
}
|
|
72
|
-
const cachedDenomTrace = this.cachedDenomTraces[hash];
|
|
73
|
-
if (cachedDenomTrace) {
|
|
74
|
-
const token = this.tokenFactory.toToken(cachedDenomTrace.baseDenom);
|
|
75
|
-
if (!token) {
|
|
76
|
-
return undefined;
|
|
77
|
-
}
|
|
78
|
-
return {
|
|
79
|
-
...token,
|
|
80
|
-
ibc: getIbcTokenMetaFromDenomTrace({
|
|
81
|
-
...cachedDenomTrace,
|
|
82
|
-
decimals: token.decimals,
|
|
83
|
-
hash,
|
|
84
|
-
}),
|
|
85
|
-
denom,
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
try {
|
|
89
|
-
const denomTrace = await this.ibcApi.fetchDenomTrace(hash);
|
|
90
|
-
const token = this.tokenFactory.toToken(denomTrace.baseDenom);
|
|
91
|
-
if (!token) {
|
|
92
|
-
return undefined;
|
|
93
|
-
}
|
|
94
|
-
return {
|
|
95
|
-
...token,
|
|
96
|
-
ibc: getIbcTokenMetaFromDenomTrace({
|
|
97
|
-
...denomTrace,
|
|
98
|
-
decimals: token.decimals,
|
|
99
|
-
hash,
|
|
100
|
-
}),
|
|
101
|
-
denom,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
catch (e) {
|
|
105
|
-
throw new GeneralException(new Error(`Denom trace not found for ${denom}`), {
|
|
106
|
-
type: ErrorType.NotFoundError,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
async fetchAndCacheDenomTraces() {
|
|
111
|
-
const denomTraces = await this.ibcApi.fetchDenomsTrace();
|
|
112
|
-
const denomHashes = denomTraces.map((trace) => {
|
|
113
|
-
return {
|
|
114
|
-
trace: trace,
|
|
115
|
-
hash: Buffer.from(sha256(fromUtf8(`${trace.path}/${trace.baseDenom}`))).toString('hex'),
|
|
116
|
-
};
|
|
117
|
-
});
|
|
118
|
-
this.cachedDenomTraces = denomHashes.reduce((denomTraces, denomTrace) => ({
|
|
119
|
-
...denomTraces,
|
|
120
|
-
[denomTrace.hash.toUpperCase()]: denomTrace.trace,
|
|
121
|
-
}), {});
|
|
122
|
-
}
|
|
123
38
|
}
|
|
124
39
|
//# sourceMappingURL=DenomClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DenomClient.js","sourceRoot":"","sources":["../../../../../src/core/utils/Denom/DenomClient.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"DenomClient.js","sourceRoot":"","sources":["../../../../../src/core/utils/Denom/DenomClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EAEZ,qBAAqB,GACtB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEjD;;;;;;;;;GASG;AACH,MAAM,OAAO,WAAW;IACZ,YAAY,CAAc;IAE1B,cAAc,CAAgB;IAExC,YAAY,UAAmB,OAAO,CAAC,OAAO;QAC5C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC,cAAc,GAAG,qBAAqB,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"}
|
|
@@ -5,6 +5,8 @@ import { Network } from '@injectivelabs/networks';
|
|
|
5
5
|
* denoms in a fully sync way (without API calls)
|
|
6
6
|
*
|
|
7
7
|
* @category Utility Classes
|
|
8
|
+
*
|
|
9
|
+
* @deprecated use DenomClient instead (they are the same)
|
|
8
10
|
*/
|
|
9
11
|
export declare class DenomClientSync {
|
|
10
12
|
protected tokenFactory: TokenFactory;
|
|
@@ -1 +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
|
|
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;;;;;;;GAOG;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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DenomClientSync.js","sourceRoot":"","sources":["../../../../../src/core/utils/Denom/DenomClientSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EAEZ,qBAAqB,GACtB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEjD
|
|
1
|
+
{"version":3,"file":"DenomClientSync.js","sourceRoot":"","sources":["../../../../../src/core/utils/Denom/DenomClientSync.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,YAAY,EAEZ,qBAAqB,GACtB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEjD;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IAChB,YAAY,CAAc;IAE1B,cAAc,CAAgB;IAExC,YAAY,UAAmB,OAAO,CAAC,OAAO;QAC5C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC,cAAc,GAAG,qBAAqB,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"}
|
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.12.0-beta.
|
|
4
|
+
"version": "1.12.0-beta.44",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"author": {
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"shx": "^0.3.2",
|
|
70
70
|
"snakecase-keys": "^5.4.1"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "72862ddca587067131776d25fe43580c4c2d1adb",
|
|
73
73
|
"typedoc": {
|
|
74
74
|
"entryPoint": "./src/index.ts",
|
|
75
75
|
"readmeFile": "./README.md",
|