@shapeshiftoss/unchained-client 10.14.10 → 10.14.11
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/LICENSE.md +21 -0
- package/README.md +2 -2
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/evm/ethereum/parser/__tests__/ethereum.test.js +29 -0
- package/dist/cjs/generated/arbitrum/apis/V1Api.d.ts +1 -14
- package/dist/cjs/generated/arbitrum/apis/V1Api.js +0 -39
- package/dist/cjs/generated/arbitrum/models/index.d.ts +0 -3
- package/dist/cjs/generated/arbitrum/models/index.js +0 -3
- package/dist/cjs/generated/avalanche/apis/V1Api.d.ts +1 -14
- package/dist/cjs/generated/avalanche/apis/V1Api.js +0 -39
- package/dist/cjs/generated/avalanche/models/index.d.ts +0 -3
- package/dist/cjs/generated/avalanche/models/index.js +0 -3
- package/dist/cjs/generated/base/apis/V1Api.d.ts +1 -14
- package/dist/cjs/generated/base/apis/V1Api.js +0 -39
- package/dist/cjs/generated/base/models/index.d.ts +0 -3
- package/dist/cjs/generated/base/models/index.js +0 -3
- package/dist/cjs/generated/bitcoin/models/Address.d.ts +7 -0
- package/dist/cjs/generated/bitcoin/models/Address.js +3 -0
- package/dist/cjs/generated/bitcoincash/models/Address.d.ts +7 -0
- package/dist/cjs/generated/bitcoincash/models/Address.js +3 -0
- package/dist/cjs/generated/bnbsmartchain/apis/V1Api.d.ts +1 -14
- package/dist/cjs/generated/bnbsmartchain/apis/V1Api.js +0 -39
- package/dist/cjs/generated/bnbsmartchain/models/index.d.ts +0 -3
- package/dist/cjs/generated/bnbsmartchain/models/index.js +0 -3
- package/dist/cjs/generated/dogecoin/models/Address.d.ts +7 -0
- package/dist/cjs/generated/dogecoin/models/Address.js +3 -0
- package/dist/cjs/generated/ethereum/apis/V1Api.d.ts +1 -14
- package/dist/cjs/generated/ethereum/apis/V1Api.js +0 -39
- package/dist/cjs/generated/ethereum/models/index.d.ts +0 -3
- package/dist/cjs/generated/ethereum/models/index.js +0 -3
- package/dist/cjs/generated/gnosis/apis/V1Api.d.ts +1 -14
- package/dist/cjs/generated/gnosis/apis/V1Api.js +0 -39
- package/dist/cjs/generated/gnosis/models/index.d.ts +0 -3
- package/dist/cjs/generated/gnosis/models/index.js +0 -3
- package/dist/cjs/generated/litecoin/models/Address.d.ts +7 -0
- package/dist/cjs/generated/litecoin/models/Address.js +3 -0
- package/dist/cjs/generated/mayachain/apis/ProxyApi.d.ts +18 -2
- package/dist/cjs/generated/mayachain/apis/ProxyApi.js +42 -2
- package/dist/cjs/generated/optimism/apis/V1Api.d.ts +1 -14
- package/dist/cjs/generated/optimism/apis/V1Api.js +0 -39
- package/dist/cjs/generated/optimism/models/index.d.ts +0 -3
- package/dist/cjs/generated/optimism/models/index.js +0 -3
- package/dist/cjs/generated/polygon/apis/V1Api.d.ts +1 -14
- package/dist/cjs/generated/polygon/apis/V1Api.js +0 -39
- package/dist/cjs/generated/polygon/models/index.d.ts +0 -3
- package/dist/cjs/generated/polygon/models/index.js +0 -3
- package/dist/cjs/generated/zcash/models/Address.d.ts +7 -0
- package/dist/cjs/generated/zcash/models/Address.js +3 -0
- package/dist/cjs/solana/parser/__tests__/solana.test.js +5 -3
- package/dist/cjs/solana/parser/index.js +1 -0
- package/dist/cjs/solana/parser/thorchain.d.ts +9 -0
- package/dist/cjs/solana/parser/thorchain.js +54 -0
- package/dist/cjs/solana/parser/types.d.ts +4 -1
- package/dist/cjs/tron/api.d.ts +3 -0
- package/dist/cjs/tron/api.js +55 -6
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/evm/ethereum/parser/__tests__/ethereum.test.js +29 -0
- package/dist/esm/generated/arbitrum/apis/V1Api.d.ts +1 -14
- package/dist/esm/generated/arbitrum/apis/V1Api.js +1 -40
- package/dist/esm/generated/arbitrum/models/index.d.ts +0 -3
- package/dist/esm/generated/arbitrum/models/index.js +0 -3
- package/dist/esm/generated/avalanche/apis/V1Api.d.ts +1 -14
- package/dist/esm/generated/avalanche/apis/V1Api.js +1 -40
- package/dist/esm/generated/avalanche/models/index.d.ts +0 -3
- package/dist/esm/generated/avalanche/models/index.js +0 -3
- package/dist/esm/generated/base/apis/V1Api.d.ts +1 -14
- package/dist/esm/generated/base/apis/V1Api.js +1 -40
- package/dist/esm/generated/base/models/index.d.ts +0 -3
- package/dist/esm/generated/base/models/index.js +0 -3
- package/dist/esm/generated/bitcoin/models/Address.d.ts +7 -0
- package/dist/esm/generated/bitcoin/models/Address.js +3 -0
- package/dist/esm/generated/bitcoincash/models/Address.d.ts +7 -0
- package/dist/esm/generated/bitcoincash/models/Address.js +3 -0
- package/dist/esm/generated/bnbsmartchain/apis/V1Api.d.ts +1 -14
- package/dist/esm/generated/bnbsmartchain/apis/V1Api.js +1 -40
- package/dist/esm/generated/bnbsmartchain/models/index.d.ts +0 -3
- package/dist/esm/generated/bnbsmartchain/models/index.js +0 -3
- package/dist/esm/generated/dogecoin/models/Address.d.ts +7 -0
- package/dist/esm/generated/dogecoin/models/Address.js +3 -0
- package/dist/esm/generated/ethereum/apis/V1Api.d.ts +1 -14
- package/dist/esm/generated/ethereum/apis/V1Api.js +1 -40
- package/dist/esm/generated/ethereum/models/index.d.ts +0 -3
- package/dist/esm/generated/ethereum/models/index.js +0 -3
- package/dist/esm/generated/gnosis/apis/V1Api.d.ts +1 -14
- package/dist/esm/generated/gnosis/apis/V1Api.js +1 -40
- package/dist/esm/generated/gnosis/models/index.d.ts +0 -3
- package/dist/esm/generated/gnosis/models/index.js +0 -3
- package/dist/esm/generated/litecoin/models/Address.d.ts +7 -0
- package/dist/esm/generated/litecoin/models/Address.js +3 -0
- package/dist/esm/generated/mayachain/apis/ProxyApi.d.ts +18 -2
- package/dist/esm/generated/mayachain/apis/ProxyApi.js +42 -2
- package/dist/esm/generated/optimism/apis/V1Api.d.ts +1 -14
- package/dist/esm/generated/optimism/apis/V1Api.js +1 -40
- package/dist/esm/generated/optimism/models/index.d.ts +0 -3
- package/dist/esm/generated/optimism/models/index.js +0 -3
- package/dist/esm/generated/polygon/apis/V1Api.d.ts +1 -14
- package/dist/esm/generated/polygon/apis/V1Api.js +1 -40
- package/dist/esm/generated/polygon/models/index.d.ts +0 -3
- package/dist/esm/generated/polygon/models/index.js +0 -3
- package/dist/esm/generated/zcash/models/Address.d.ts +7 -0
- package/dist/esm/generated/zcash/models/Address.js +3 -0
- package/dist/esm/solana/parser/__tests__/solana.test.js +5 -3
- package/dist/esm/solana/parser/index.js +1 -0
- package/dist/esm/solana/parser/thorchain.d.ts +9 -0
- package/dist/esm/solana/parser/thorchain.js +24 -0
- package/dist/esm/solana/parser/types.d.ts +4 -1
- package/dist/esm/tron/api.d.ts +3 -0
- package/dist/esm/tron/api.js +55 -6
- package/package.json +15 -16
- package/CHANGELOG.md +0 -409
- package/dist/cjs/generated/arbitrum/models/TokenMetadata.d.ts +0 -62
- package/dist/cjs/generated/arbitrum/models/TokenMetadata.js +0 -67
- package/dist/cjs/generated/arbitrum/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/cjs/generated/arbitrum/models/TokenMetadataMedia.js +0 -61
- package/dist/cjs/generated/arbitrum/models/TokenType.d.ts +0 -23
- package/dist/cjs/generated/arbitrum/models/TokenType.js +0 -37
- package/dist/cjs/generated/avalanche/models/TokenMetadata.d.ts +0 -62
- package/dist/cjs/generated/avalanche/models/TokenMetadata.js +0 -67
- package/dist/cjs/generated/avalanche/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/cjs/generated/avalanche/models/TokenMetadataMedia.js +0 -61
- package/dist/cjs/generated/avalanche/models/TokenType.d.ts +0 -23
- package/dist/cjs/generated/avalanche/models/TokenType.js +0 -37
- package/dist/cjs/generated/base/models/TokenMetadata.d.ts +0 -62
- package/dist/cjs/generated/base/models/TokenMetadata.js +0 -67
- package/dist/cjs/generated/base/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/cjs/generated/base/models/TokenMetadataMedia.js +0 -61
- package/dist/cjs/generated/base/models/TokenType.d.ts +0 -23
- package/dist/cjs/generated/base/models/TokenType.js +0 -37
- package/dist/cjs/generated/bnbsmartchain/models/TokenMetadata.d.ts +0 -62
- package/dist/cjs/generated/bnbsmartchain/models/TokenMetadata.js +0 -67
- package/dist/cjs/generated/bnbsmartchain/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/cjs/generated/bnbsmartchain/models/TokenMetadataMedia.js +0 -61
- package/dist/cjs/generated/bnbsmartchain/models/TokenType.d.ts +0 -23
- package/dist/cjs/generated/bnbsmartchain/models/TokenType.js +0 -37
- package/dist/cjs/generated/ethereum/models/TokenMetadata.d.ts +0 -62
- package/dist/cjs/generated/ethereum/models/TokenMetadata.js +0 -67
- package/dist/cjs/generated/ethereum/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/cjs/generated/ethereum/models/TokenMetadataMedia.js +0 -61
- package/dist/cjs/generated/ethereum/models/TokenType.d.ts +0 -23
- package/dist/cjs/generated/ethereum/models/TokenType.js +0 -37
- package/dist/cjs/generated/gnosis/models/TokenMetadata.d.ts +0 -62
- package/dist/cjs/generated/gnosis/models/TokenMetadata.js +0 -67
- package/dist/cjs/generated/gnosis/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/cjs/generated/gnosis/models/TokenMetadataMedia.js +0 -61
- package/dist/cjs/generated/gnosis/models/TokenType.d.ts +0 -23
- package/dist/cjs/generated/gnosis/models/TokenType.js +0 -37
- package/dist/cjs/generated/optimism/models/TokenMetadata.d.ts +0 -62
- package/dist/cjs/generated/optimism/models/TokenMetadata.js +0 -67
- package/dist/cjs/generated/optimism/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/cjs/generated/optimism/models/TokenMetadataMedia.js +0 -61
- package/dist/cjs/generated/optimism/models/TokenType.d.ts +0 -23
- package/dist/cjs/generated/optimism/models/TokenType.js +0 -37
- package/dist/cjs/generated/polygon/models/TokenMetadata.d.ts +0 -62
- package/dist/cjs/generated/polygon/models/TokenMetadata.js +0 -67
- package/dist/cjs/generated/polygon/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/cjs/generated/polygon/models/TokenMetadataMedia.js +0 -61
- package/dist/cjs/generated/polygon/models/TokenType.d.ts +0 -23
- package/dist/cjs/generated/polygon/models/TokenType.js +0 -37
- package/dist/esm/generated/arbitrum/models/TokenMetadata.d.ts +0 -62
- package/dist/esm/generated/arbitrum/models/TokenMetadata.js +0 -60
- package/dist/esm/generated/arbitrum/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/esm/generated/arbitrum/models/TokenMetadataMedia.js +0 -54
- package/dist/esm/generated/arbitrum/models/TokenType.d.ts +0 -23
- package/dist/esm/generated/arbitrum/models/TokenType.js +0 -31
- package/dist/esm/generated/avalanche/models/TokenMetadata.d.ts +0 -62
- package/dist/esm/generated/avalanche/models/TokenMetadata.js +0 -60
- package/dist/esm/generated/avalanche/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/esm/generated/avalanche/models/TokenMetadataMedia.js +0 -54
- package/dist/esm/generated/avalanche/models/TokenType.d.ts +0 -23
- package/dist/esm/generated/avalanche/models/TokenType.js +0 -31
- package/dist/esm/generated/base/models/TokenMetadata.d.ts +0 -62
- package/dist/esm/generated/base/models/TokenMetadata.js +0 -60
- package/dist/esm/generated/base/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/esm/generated/base/models/TokenMetadataMedia.js +0 -54
- package/dist/esm/generated/base/models/TokenType.d.ts +0 -23
- package/dist/esm/generated/base/models/TokenType.js +0 -31
- package/dist/esm/generated/bnbsmartchain/models/TokenMetadata.d.ts +0 -62
- package/dist/esm/generated/bnbsmartchain/models/TokenMetadata.js +0 -60
- package/dist/esm/generated/bnbsmartchain/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/esm/generated/bnbsmartchain/models/TokenMetadataMedia.js +0 -54
- package/dist/esm/generated/bnbsmartchain/models/TokenType.d.ts +0 -23
- package/dist/esm/generated/bnbsmartchain/models/TokenType.js +0 -31
- package/dist/esm/generated/ethereum/models/TokenMetadata.d.ts +0 -62
- package/dist/esm/generated/ethereum/models/TokenMetadata.js +0 -60
- package/dist/esm/generated/ethereum/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/esm/generated/ethereum/models/TokenMetadataMedia.js +0 -54
- package/dist/esm/generated/ethereum/models/TokenType.d.ts +0 -23
- package/dist/esm/generated/ethereum/models/TokenType.js +0 -31
- package/dist/esm/generated/gnosis/models/TokenMetadata.d.ts +0 -62
- package/dist/esm/generated/gnosis/models/TokenMetadata.js +0 -60
- package/dist/esm/generated/gnosis/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/esm/generated/gnosis/models/TokenMetadataMedia.js +0 -54
- package/dist/esm/generated/gnosis/models/TokenType.d.ts +0 -23
- package/dist/esm/generated/gnosis/models/TokenType.js +0 -31
- package/dist/esm/generated/optimism/models/TokenMetadata.d.ts +0 -62
- package/dist/esm/generated/optimism/models/TokenMetadata.js +0 -60
- package/dist/esm/generated/optimism/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/esm/generated/optimism/models/TokenMetadataMedia.js +0 -54
- package/dist/esm/generated/optimism/models/TokenType.d.ts +0 -23
- package/dist/esm/generated/optimism/models/TokenType.js +0 -31
- package/dist/esm/generated/polygon/models/TokenMetadata.d.ts +0 -62
- package/dist/esm/generated/polygon/models/TokenMetadata.js +0 -60
- package/dist/esm/generated/polygon/models/TokenMetadataMedia.d.ts +0 -45
- package/dist/esm/generated/polygon/models/TokenMetadataMedia.js +0 -54
- package/dist/esm/generated/polygon/models/TokenType.d.ts +0 -23
- package/dist/esm/generated/polygon/models/TokenType.js +0 -31
package/dist/cjs/tron/api.js
CHANGED
|
@@ -4,15 +4,23 @@ exports.TronApi = void 0;
|
|
|
4
4
|
const tronweb_1 = require("tronweb");
|
|
5
5
|
class TronApi {
|
|
6
6
|
rpcUrl;
|
|
7
|
+
apiKey;
|
|
7
8
|
tronWeb = null;
|
|
8
9
|
requestQueue = Promise.resolve();
|
|
9
10
|
minRequestInterval = 1_500;
|
|
10
11
|
constructor(config) {
|
|
11
12
|
this.rpcUrl = config.rpcUrl;
|
|
13
|
+
this.apiKey = config.apiKey ?? '';
|
|
12
14
|
}
|
|
13
15
|
getRpcUrl() {
|
|
14
16
|
return this.rpcUrl;
|
|
15
17
|
}
|
|
18
|
+
get tronGridHeaders() {
|
|
19
|
+
return {
|
|
20
|
+
'Content-Type': 'application/json',
|
|
21
|
+
...(this.apiKey ? { 'TRON-PRO-API-KEY': this.apiKey } : {}),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
16
24
|
async throttle() {
|
|
17
25
|
// Queue the request and wait for all previous requests to complete
|
|
18
26
|
const currentRequest = this.requestQueue.then(async () => {
|
|
@@ -23,7 +31,10 @@ class TronApi {
|
|
|
23
31
|
}
|
|
24
32
|
getTronWeb() {
|
|
25
33
|
if (!this.tronWeb) {
|
|
26
|
-
this.tronWeb = new tronweb_1.TronWeb({
|
|
34
|
+
this.tronWeb = new tronweb_1.TronWeb({
|
|
35
|
+
fullHost: this.rpcUrl,
|
|
36
|
+
headers: this.apiKey ? { 'TRON-PRO-API-KEY': this.apiKey } : {},
|
|
37
|
+
});
|
|
27
38
|
}
|
|
28
39
|
return this.tronWeb;
|
|
29
40
|
}
|
|
@@ -31,7 +42,7 @@ class TronApi {
|
|
|
31
42
|
await this.throttle();
|
|
32
43
|
const response = await fetch(`${this.rpcUrl}/wallet/getaccount`, {
|
|
33
44
|
method: 'POST',
|
|
34
|
-
headers:
|
|
45
|
+
headers: this.tronGridHeaders,
|
|
35
46
|
body: JSON.stringify({ address: params.pubkey, visible: true }),
|
|
36
47
|
});
|
|
37
48
|
const data = await response.json();
|
|
@@ -48,7 +59,9 @@ class TronApi {
|
|
|
48
59
|
// Get TRC20 tokens from TronGrid API
|
|
49
60
|
try {
|
|
50
61
|
await this.throttle();
|
|
51
|
-
const trc20Response = await fetch(`${this.rpcUrl}/v1/accounts/${params.pubkey}
|
|
62
|
+
const trc20Response = await fetch(`${this.rpcUrl}/v1/accounts/${params.pubkey}`, {
|
|
63
|
+
headers: this.tronGridHeaders,
|
|
64
|
+
});
|
|
52
65
|
const trc20Data = await trc20Response.json();
|
|
53
66
|
if (trc20Data.data?.[0]?.trc20 && Array.isArray(trc20Data.data[0].trc20)) {
|
|
54
67
|
// trc20 is an array of objects like [{contractAddress: balance}, ...]
|
|
@@ -61,6 +74,42 @@ class TronApi {
|
|
|
61
74
|
}
|
|
62
75
|
});
|
|
63
76
|
}
|
|
77
|
+
else if (!trc20Data.data || trc20Data.data.length === 0) {
|
|
78
|
+
// Non-activated account: /v1/accounts returns data:[] for addresses that have never sent TRX.
|
|
79
|
+
// Fall back to discovering TRC20 balances via received transactions + hardcoded top tokens.
|
|
80
|
+
try {
|
|
81
|
+
await this.throttle();
|
|
82
|
+
const HARDCODED_TOP_TOKENS = [
|
|
83
|
+
'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t',
|
|
84
|
+
'TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8', // USDC
|
|
85
|
+
];
|
|
86
|
+
const MAX_FALLBACK_CONTRACTS = 20;
|
|
87
|
+
const discoveredContracts = new Set(HARDCODED_TOP_TOKENS);
|
|
88
|
+
const trc20TxResponse = await fetch(`${this.rpcUrl}/v1/accounts/${params.pubkey}/transactions/trc20?limit=200&only_to=true`, { headers: this.tronGridHeaders });
|
|
89
|
+
if (trc20TxResponse.ok) {
|
|
90
|
+
const trc20TxData = await trc20TxResponse.json();
|
|
91
|
+
if (trc20TxData.data && Array.isArray(trc20TxData.data)) {
|
|
92
|
+
trc20TxData.data.forEach((tx) => {
|
|
93
|
+
const contractAddress = tx.token_info?.address;
|
|
94
|
+
if (contractAddress)
|
|
95
|
+
discoveredContracts.add(contractAddress);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
for (const contractAddress of Array.from(discoveredContracts).slice(0, MAX_FALLBACK_CONTRACTS)) {
|
|
100
|
+
await this.throttle();
|
|
101
|
+
const balance = await this.getTRC20Balance({ address: params.pubkey, contractAddress });
|
|
102
|
+
if (balance !== '0')
|
|
103
|
+
tokens.push({ contractAddress, balance });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (fallbackErr) {
|
|
107
|
+
console.error('Failed TRC20 fallback discovery for non-activated TRON account', {
|
|
108
|
+
address: `${params.pubkey.slice(0, 6)}...${params.pubkey.slice(-4)}`,
|
|
109
|
+
error: fallbackErr,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
64
113
|
}
|
|
65
114
|
catch (err) {
|
|
66
115
|
// TRC20 fetch failed, continue with just TRC10 tokens
|
|
@@ -91,12 +140,12 @@ class TronApi {
|
|
|
91
140
|
const [txResponse, infoResponse] = await Promise.all([
|
|
92
141
|
fetch(`${this.rpcUrl}/wallet/gettransactionbyid`, {
|
|
93
142
|
method: 'POST',
|
|
94
|
-
headers:
|
|
143
|
+
headers: this.tronGridHeaders,
|
|
95
144
|
body: JSON.stringify({ value: params.txid, visible: true }),
|
|
96
145
|
}),
|
|
97
146
|
fetch(`${this.rpcUrl}/wallet/gettransactioninfobyid`, {
|
|
98
147
|
method: 'POST',
|
|
99
|
-
headers:
|
|
148
|
+
headers: this.tronGridHeaders,
|
|
100
149
|
body: JSON.stringify({ value: params.txid, visible: true }),
|
|
101
150
|
}),
|
|
102
151
|
]);
|
|
@@ -137,7 +186,7 @@ class TronApi {
|
|
|
137
186
|
await this.throttle();
|
|
138
187
|
const response = await fetch(`${this.rpcUrl}/wallet/getblockbynum`, {
|
|
139
188
|
method: 'POST',
|
|
140
|
-
headers:
|
|
189
|
+
headers: this.tronGridHeaders,
|
|
141
190
|
body: JSON.stringify({ num: params.height }),
|
|
142
191
|
});
|
|
143
192
|
if (!response.ok) {
|