@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.
Files changed (206) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +2 -2
  3. package/dist/cjs/.tsbuildinfo +1 -1
  4. package/dist/cjs/evm/ethereum/parser/__tests__/ethereum.test.js +29 -0
  5. package/dist/cjs/generated/arbitrum/apis/V1Api.d.ts +1 -14
  6. package/dist/cjs/generated/arbitrum/apis/V1Api.js +0 -39
  7. package/dist/cjs/generated/arbitrum/models/index.d.ts +0 -3
  8. package/dist/cjs/generated/arbitrum/models/index.js +0 -3
  9. package/dist/cjs/generated/avalanche/apis/V1Api.d.ts +1 -14
  10. package/dist/cjs/generated/avalanche/apis/V1Api.js +0 -39
  11. package/dist/cjs/generated/avalanche/models/index.d.ts +0 -3
  12. package/dist/cjs/generated/avalanche/models/index.js +0 -3
  13. package/dist/cjs/generated/base/apis/V1Api.d.ts +1 -14
  14. package/dist/cjs/generated/base/apis/V1Api.js +0 -39
  15. package/dist/cjs/generated/base/models/index.d.ts +0 -3
  16. package/dist/cjs/generated/base/models/index.js +0 -3
  17. package/dist/cjs/generated/bitcoin/models/Address.d.ts +7 -0
  18. package/dist/cjs/generated/bitcoin/models/Address.js +3 -0
  19. package/dist/cjs/generated/bitcoincash/models/Address.d.ts +7 -0
  20. package/dist/cjs/generated/bitcoincash/models/Address.js +3 -0
  21. package/dist/cjs/generated/bnbsmartchain/apis/V1Api.d.ts +1 -14
  22. package/dist/cjs/generated/bnbsmartchain/apis/V1Api.js +0 -39
  23. package/dist/cjs/generated/bnbsmartchain/models/index.d.ts +0 -3
  24. package/dist/cjs/generated/bnbsmartchain/models/index.js +0 -3
  25. package/dist/cjs/generated/dogecoin/models/Address.d.ts +7 -0
  26. package/dist/cjs/generated/dogecoin/models/Address.js +3 -0
  27. package/dist/cjs/generated/ethereum/apis/V1Api.d.ts +1 -14
  28. package/dist/cjs/generated/ethereum/apis/V1Api.js +0 -39
  29. package/dist/cjs/generated/ethereum/models/index.d.ts +0 -3
  30. package/dist/cjs/generated/ethereum/models/index.js +0 -3
  31. package/dist/cjs/generated/gnosis/apis/V1Api.d.ts +1 -14
  32. package/dist/cjs/generated/gnosis/apis/V1Api.js +0 -39
  33. package/dist/cjs/generated/gnosis/models/index.d.ts +0 -3
  34. package/dist/cjs/generated/gnosis/models/index.js +0 -3
  35. package/dist/cjs/generated/litecoin/models/Address.d.ts +7 -0
  36. package/dist/cjs/generated/litecoin/models/Address.js +3 -0
  37. package/dist/cjs/generated/mayachain/apis/ProxyApi.d.ts +18 -2
  38. package/dist/cjs/generated/mayachain/apis/ProxyApi.js +42 -2
  39. package/dist/cjs/generated/optimism/apis/V1Api.d.ts +1 -14
  40. package/dist/cjs/generated/optimism/apis/V1Api.js +0 -39
  41. package/dist/cjs/generated/optimism/models/index.d.ts +0 -3
  42. package/dist/cjs/generated/optimism/models/index.js +0 -3
  43. package/dist/cjs/generated/polygon/apis/V1Api.d.ts +1 -14
  44. package/dist/cjs/generated/polygon/apis/V1Api.js +0 -39
  45. package/dist/cjs/generated/polygon/models/index.d.ts +0 -3
  46. package/dist/cjs/generated/polygon/models/index.js +0 -3
  47. package/dist/cjs/generated/zcash/models/Address.d.ts +7 -0
  48. package/dist/cjs/generated/zcash/models/Address.js +3 -0
  49. package/dist/cjs/solana/parser/__tests__/solana.test.js +5 -3
  50. package/dist/cjs/solana/parser/index.js +1 -0
  51. package/dist/cjs/solana/parser/thorchain.d.ts +9 -0
  52. package/dist/cjs/solana/parser/thorchain.js +54 -0
  53. package/dist/cjs/solana/parser/types.d.ts +4 -1
  54. package/dist/cjs/tron/api.d.ts +3 -0
  55. package/dist/cjs/tron/api.js +55 -6
  56. package/dist/esm/.tsbuildinfo +1 -1
  57. package/dist/esm/evm/ethereum/parser/__tests__/ethereum.test.js +29 -0
  58. package/dist/esm/generated/arbitrum/apis/V1Api.d.ts +1 -14
  59. package/dist/esm/generated/arbitrum/apis/V1Api.js +1 -40
  60. package/dist/esm/generated/arbitrum/models/index.d.ts +0 -3
  61. package/dist/esm/generated/arbitrum/models/index.js +0 -3
  62. package/dist/esm/generated/avalanche/apis/V1Api.d.ts +1 -14
  63. package/dist/esm/generated/avalanche/apis/V1Api.js +1 -40
  64. package/dist/esm/generated/avalanche/models/index.d.ts +0 -3
  65. package/dist/esm/generated/avalanche/models/index.js +0 -3
  66. package/dist/esm/generated/base/apis/V1Api.d.ts +1 -14
  67. package/dist/esm/generated/base/apis/V1Api.js +1 -40
  68. package/dist/esm/generated/base/models/index.d.ts +0 -3
  69. package/dist/esm/generated/base/models/index.js +0 -3
  70. package/dist/esm/generated/bitcoin/models/Address.d.ts +7 -0
  71. package/dist/esm/generated/bitcoin/models/Address.js +3 -0
  72. package/dist/esm/generated/bitcoincash/models/Address.d.ts +7 -0
  73. package/dist/esm/generated/bitcoincash/models/Address.js +3 -0
  74. package/dist/esm/generated/bnbsmartchain/apis/V1Api.d.ts +1 -14
  75. package/dist/esm/generated/bnbsmartchain/apis/V1Api.js +1 -40
  76. package/dist/esm/generated/bnbsmartchain/models/index.d.ts +0 -3
  77. package/dist/esm/generated/bnbsmartchain/models/index.js +0 -3
  78. package/dist/esm/generated/dogecoin/models/Address.d.ts +7 -0
  79. package/dist/esm/generated/dogecoin/models/Address.js +3 -0
  80. package/dist/esm/generated/ethereum/apis/V1Api.d.ts +1 -14
  81. package/dist/esm/generated/ethereum/apis/V1Api.js +1 -40
  82. package/dist/esm/generated/ethereum/models/index.d.ts +0 -3
  83. package/dist/esm/generated/ethereum/models/index.js +0 -3
  84. package/dist/esm/generated/gnosis/apis/V1Api.d.ts +1 -14
  85. package/dist/esm/generated/gnosis/apis/V1Api.js +1 -40
  86. package/dist/esm/generated/gnosis/models/index.d.ts +0 -3
  87. package/dist/esm/generated/gnosis/models/index.js +0 -3
  88. package/dist/esm/generated/litecoin/models/Address.d.ts +7 -0
  89. package/dist/esm/generated/litecoin/models/Address.js +3 -0
  90. package/dist/esm/generated/mayachain/apis/ProxyApi.d.ts +18 -2
  91. package/dist/esm/generated/mayachain/apis/ProxyApi.js +42 -2
  92. package/dist/esm/generated/optimism/apis/V1Api.d.ts +1 -14
  93. package/dist/esm/generated/optimism/apis/V1Api.js +1 -40
  94. package/dist/esm/generated/optimism/models/index.d.ts +0 -3
  95. package/dist/esm/generated/optimism/models/index.js +0 -3
  96. package/dist/esm/generated/polygon/apis/V1Api.d.ts +1 -14
  97. package/dist/esm/generated/polygon/apis/V1Api.js +1 -40
  98. package/dist/esm/generated/polygon/models/index.d.ts +0 -3
  99. package/dist/esm/generated/polygon/models/index.js +0 -3
  100. package/dist/esm/generated/zcash/models/Address.d.ts +7 -0
  101. package/dist/esm/generated/zcash/models/Address.js +3 -0
  102. package/dist/esm/solana/parser/__tests__/solana.test.js +5 -3
  103. package/dist/esm/solana/parser/index.js +1 -0
  104. package/dist/esm/solana/parser/thorchain.d.ts +9 -0
  105. package/dist/esm/solana/parser/thorchain.js +24 -0
  106. package/dist/esm/solana/parser/types.d.ts +4 -1
  107. package/dist/esm/tron/api.d.ts +3 -0
  108. package/dist/esm/tron/api.js +55 -6
  109. package/package.json +15 -16
  110. package/CHANGELOG.md +0 -409
  111. package/dist/cjs/generated/arbitrum/models/TokenMetadata.d.ts +0 -62
  112. package/dist/cjs/generated/arbitrum/models/TokenMetadata.js +0 -67
  113. package/dist/cjs/generated/arbitrum/models/TokenMetadataMedia.d.ts +0 -45
  114. package/dist/cjs/generated/arbitrum/models/TokenMetadataMedia.js +0 -61
  115. package/dist/cjs/generated/arbitrum/models/TokenType.d.ts +0 -23
  116. package/dist/cjs/generated/arbitrum/models/TokenType.js +0 -37
  117. package/dist/cjs/generated/avalanche/models/TokenMetadata.d.ts +0 -62
  118. package/dist/cjs/generated/avalanche/models/TokenMetadata.js +0 -67
  119. package/dist/cjs/generated/avalanche/models/TokenMetadataMedia.d.ts +0 -45
  120. package/dist/cjs/generated/avalanche/models/TokenMetadataMedia.js +0 -61
  121. package/dist/cjs/generated/avalanche/models/TokenType.d.ts +0 -23
  122. package/dist/cjs/generated/avalanche/models/TokenType.js +0 -37
  123. package/dist/cjs/generated/base/models/TokenMetadata.d.ts +0 -62
  124. package/dist/cjs/generated/base/models/TokenMetadata.js +0 -67
  125. package/dist/cjs/generated/base/models/TokenMetadataMedia.d.ts +0 -45
  126. package/dist/cjs/generated/base/models/TokenMetadataMedia.js +0 -61
  127. package/dist/cjs/generated/base/models/TokenType.d.ts +0 -23
  128. package/dist/cjs/generated/base/models/TokenType.js +0 -37
  129. package/dist/cjs/generated/bnbsmartchain/models/TokenMetadata.d.ts +0 -62
  130. package/dist/cjs/generated/bnbsmartchain/models/TokenMetadata.js +0 -67
  131. package/dist/cjs/generated/bnbsmartchain/models/TokenMetadataMedia.d.ts +0 -45
  132. package/dist/cjs/generated/bnbsmartchain/models/TokenMetadataMedia.js +0 -61
  133. package/dist/cjs/generated/bnbsmartchain/models/TokenType.d.ts +0 -23
  134. package/dist/cjs/generated/bnbsmartchain/models/TokenType.js +0 -37
  135. package/dist/cjs/generated/ethereum/models/TokenMetadata.d.ts +0 -62
  136. package/dist/cjs/generated/ethereum/models/TokenMetadata.js +0 -67
  137. package/dist/cjs/generated/ethereum/models/TokenMetadataMedia.d.ts +0 -45
  138. package/dist/cjs/generated/ethereum/models/TokenMetadataMedia.js +0 -61
  139. package/dist/cjs/generated/ethereum/models/TokenType.d.ts +0 -23
  140. package/dist/cjs/generated/ethereum/models/TokenType.js +0 -37
  141. package/dist/cjs/generated/gnosis/models/TokenMetadata.d.ts +0 -62
  142. package/dist/cjs/generated/gnosis/models/TokenMetadata.js +0 -67
  143. package/dist/cjs/generated/gnosis/models/TokenMetadataMedia.d.ts +0 -45
  144. package/dist/cjs/generated/gnosis/models/TokenMetadataMedia.js +0 -61
  145. package/dist/cjs/generated/gnosis/models/TokenType.d.ts +0 -23
  146. package/dist/cjs/generated/gnosis/models/TokenType.js +0 -37
  147. package/dist/cjs/generated/optimism/models/TokenMetadata.d.ts +0 -62
  148. package/dist/cjs/generated/optimism/models/TokenMetadata.js +0 -67
  149. package/dist/cjs/generated/optimism/models/TokenMetadataMedia.d.ts +0 -45
  150. package/dist/cjs/generated/optimism/models/TokenMetadataMedia.js +0 -61
  151. package/dist/cjs/generated/optimism/models/TokenType.d.ts +0 -23
  152. package/dist/cjs/generated/optimism/models/TokenType.js +0 -37
  153. package/dist/cjs/generated/polygon/models/TokenMetadata.d.ts +0 -62
  154. package/dist/cjs/generated/polygon/models/TokenMetadata.js +0 -67
  155. package/dist/cjs/generated/polygon/models/TokenMetadataMedia.d.ts +0 -45
  156. package/dist/cjs/generated/polygon/models/TokenMetadataMedia.js +0 -61
  157. package/dist/cjs/generated/polygon/models/TokenType.d.ts +0 -23
  158. package/dist/cjs/generated/polygon/models/TokenType.js +0 -37
  159. package/dist/esm/generated/arbitrum/models/TokenMetadata.d.ts +0 -62
  160. package/dist/esm/generated/arbitrum/models/TokenMetadata.js +0 -60
  161. package/dist/esm/generated/arbitrum/models/TokenMetadataMedia.d.ts +0 -45
  162. package/dist/esm/generated/arbitrum/models/TokenMetadataMedia.js +0 -54
  163. package/dist/esm/generated/arbitrum/models/TokenType.d.ts +0 -23
  164. package/dist/esm/generated/arbitrum/models/TokenType.js +0 -31
  165. package/dist/esm/generated/avalanche/models/TokenMetadata.d.ts +0 -62
  166. package/dist/esm/generated/avalanche/models/TokenMetadata.js +0 -60
  167. package/dist/esm/generated/avalanche/models/TokenMetadataMedia.d.ts +0 -45
  168. package/dist/esm/generated/avalanche/models/TokenMetadataMedia.js +0 -54
  169. package/dist/esm/generated/avalanche/models/TokenType.d.ts +0 -23
  170. package/dist/esm/generated/avalanche/models/TokenType.js +0 -31
  171. package/dist/esm/generated/base/models/TokenMetadata.d.ts +0 -62
  172. package/dist/esm/generated/base/models/TokenMetadata.js +0 -60
  173. package/dist/esm/generated/base/models/TokenMetadataMedia.d.ts +0 -45
  174. package/dist/esm/generated/base/models/TokenMetadataMedia.js +0 -54
  175. package/dist/esm/generated/base/models/TokenType.d.ts +0 -23
  176. package/dist/esm/generated/base/models/TokenType.js +0 -31
  177. package/dist/esm/generated/bnbsmartchain/models/TokenMetadata.d.ts +0 -62
  178. package/dist/esm/generated/bnbsmartchain/models/TokenMetadata.js +0 -60
  179. package/dist/esm/generated/bnbsmartchain/models/TokenMetadataMedia.d.ts +0 -45
  180. package/dist/esm/generated/bnbsmartchain/models/TokenMetadataMedia.js +0 -54
  181. package/dist/esm/generated/bnbsmartchain/models/TokenType.d.ts +0 -23
  182. package/dist/esm/generated/bnbsmartchain/models/TokenType.js +0 -31
  183. package/dist/esm/generated/ethereum/models/TokenMetadata.d.ts +0 -62
  184. package/dist/esm/generated/ethereum/models/TokenMetadata.js +0 -60
  185. package/dist/esm/generated/ethereum/models/TokenMetadataMedia.d.ts +0 -45
  186. package/dist/esm/generated/ethereum/models/TokenMetadataMedia.js +0 -54
  187. package/dist/esm/generated/ethereum/models/TokenType.d.ts +0 -23
  188. package/dist/esm/generated/ethereum/models/TokenType.js +0 -31
  189. package/dist/esm/generated/gnosis/models/TokenMetadata.d.ts +0 -62
  190. package/dist/esm/generated/gnosis/models/TokenMetadata.js +0 -60
  191. package/dist/esm/generated/gnosis/models/TokenMetadataMedia.d.ts +0 -45
  192. package/dist/esm/generated/gnosis/models/TokenMetadataMedia.js +0 -54
  193. package/dist/esm/generated/gnosis/models/TokenType.d.ts +0 -23
  194. package/dist/esm/generated/gnosis/models/TokenType.js +0 -31
  195. package/dist/esm/generated/optimism/models/TokenMetadata.d.ts +0 -62
  196. package/dist/esm/generated/optimism/models/TokenMetadata.js +0 -60
  197. package/dist/esm/generated/optimism/models/TokenMetadataMedia.d.ts +0 -45
  198. package/dist/esm/generated/optimism/models/TokenMetadataMedia.js +0 -54
  199. package/dist/esm/generated/optimism/models/TokenType.d.ts +0 -23
  200. package/dist/esm/generated/optimism/models/TokenType.js +0 -31
  201. package/dist/esm/generated/polygon/models/TokenMetadata.d.ts +0 -62
  202. package/dist/esm/generated/polygon/models/TokenMetadata.js +0 -60
  203. package/dist/esm/generated/polygon/models/TokenMetadataMedia.d.ts +0 -45
  204. package/dist/esm/generated/polygon/models/TokenMetadataMedia.js +0 -54
  205. package/dist/esm/generated/polygon/models/TokenType.d.ts +0 -23
  206. package/dist/esm/generated/polygon/models/TokenType.js +0 -31
@@ -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({ fullHost: this.rpcUrl });
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: { 'Content-Type': 'application/json' },
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: { 'Content-Type': 'application/json' },
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: { 'Content-Type': 'application/json' },
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: { 'Content-Type': 'application/json' },
189
+ headers: this.tronGridHeaders,
141
190
  body: JSON.stringify({ num: params.height }),
142
191
  });
143
192
  if (!response.ok) {