@shapeshiftoss/unchained-client 10.15.0 → 10.17.0

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 (159) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/evm/arbitrum/parser/index.js +1 -1
  3. package/dist/cjs/evm/avalanche/parser/index.js +1 -1
  4. package/dist/cjs/evm/base/parser/index.js +1 -1
  5. package/dist/cjs/evm/bnbsmartchain/parser/index.js +1 -1
  6. package/dist/cjs/evm/ethereum/parser/__tests__/ethereum.test.js +13 -13
  7. package/dist/cjs/evm/ethereum/parser/index.js +12 -3
  8. package/dist/cjs/evm/ethereum/parser/uniV2.d.ts +4 -3
  9. package/dist/cjs/evm/ethereum/parser/uniV2.js +13 -10
  10. package/dist/cjs/evm/ethereum/parser/weth.d.ts +0 -2
  11. package/dist/cjs/evm/ethereum/parser/weth.js +0 -2
  12. package/dist/cjs/evm/gnosis/parser/index.js +1 -1
  13. package/dist/cjs/evm/optimism/parser/index.js +1 -1
  14. package/dist/cjs/evm/parser/erc20.d.ts +0 -2
  15. package/dist/cjs/evm/parser/erc20.js +0 -2
  16. package/dist/cjs/evm/parser/index.d.ts +1 -2
  17. package/dist/cjs/evm/parser/index.js +2 -2
  18. package/dist/cjs/evm/polygon/parser/index.js +1 -1
  19. package/dist/cjs/generated/arbitrum/models/NotFoundError.d.ts +31 -0
  20. package/dist/cjs/generated/arbitrum/models/NotFoundError.js +51 -0
  21. package/dist/cjs/generated/arbitrum/models/index.d.ts +1 -0
  22. package/dist/cjs/generated/arbitrum/models/index.js +1 -0
  23. package/dist/cjs/generated/avalanche/models/NotFoundError.d.ts +31 -0
  24. package/dist/cjs/generated/avalanche/models/NotFoundError.js +51 -0
  25. package/dist/cjs/generated/avalanche/models/index.d.ts +1 -0
  26. package/dist/cjs/generated/avalanche/models/index.js +1 -0
  27. package/dist/cjs/generated/base/models/NotFoundError.d.ts +31 -0
  28. package/dist/cjs/generated/base/models/NotFoundError.js +51 -0
  29. package/dist/cjs/generated/base/models/index.d.ts +1 -0
  30. package/dist/cjs/generated/base/models/index.js +1 -0
  31. package/dist/cjs/generated/bitcoin/models/NotFoundError.d.ts +31 -0
  32. package/dist/cjs/generated/bitcoin/models/NotFoundError.js +51 -0
  33. package/dist/cjs/generated/bitcoin/models/index.d.ts +1 -0
  34. package/dist/cjs/generated/bitcoin/models/index.js +1 -0
  35. package/dist/cjs/generated/bitcoincash/models/NotFoundError.d.ts +31 -0
  36. package/dist/cjs/generated/bitcoincash/models/NotFoundError.js +51 -0
  37. package/dist/cjs/generated/bitcoincash/models/index.d.ts +1 -0
  38. package/dist/cjs/generated/bitcoincash/models/index.js +1 -0
  39. package/dist/cjs/generated/bnbsmartchain/models/NotFoundError.d.ts +31 -0
  40. package/dist/cjs/generated/bnbsmartchain/models/NotFoundError.js +51 -0
  41. package/dist/cjs/generated/bnbsmartchain/models/index.d.ts +1 -0
  42. package/dist/cjs/generated/bnbsmartchain/models/index.js +1 -0
  43. package/dist/cjs/generated/dogecoin/models/NotFoundError.d.ts +31 -0
  44. package/dist/cjs/generated/dogecoin/models/NotFoundError.js +51 -0
  45. package/dist/cjs/generated/dogecoin/models/index.d.ts +1 -0
  46. package/dist/cjs/generated/dogecoin/models/index.js +1 -0
  47. package/dist/cjs/generated/ethereum/apis/V1Api.d.ts +15 -0
  48. package/dist/cjs/generated/ethereum/apis/V1Api.js +24 -0
  49. package/dist/cjs/generated/ethereum/models/NotFoundError.d.ts +31 -0
  50. package/dist/cjs/generated/ethereum/models/NotFoundError.js +51 -0
  51. package/dist/cjs/generated/ethereum/models/index.d.ts +1 -0
  52. package/dist/cjs/generated/ethereum/models/index.js +1 -0
  53. package/dist/cjs/generated/gnosis/models/NotFoundError.d.ts +31 -0
  54. package/dist/cjs/generated/gnosis/models/NotFoundError.js +51 -0
  55. package/dist/cjs/generated/gnosis/models/index.d.ts +1 -0
  56. package/dist/cjs/generated/gnosis/models/index.js +1 -0
  57. package/dist/cjs/generated/litecoin/models/NotFoundError.d.ts +31 -0
  58. package/dist/cjs/generated/litecoin/models/NotFoundError.js +51 -0
  59. package/dist/cjs/generated/litecoin/models/index.d.ts +1 -0
  60. package/dist/cjs/generated/litecoin/models/index.js +1 -0
  61. package/dist/cjs/generated/optimism/models/NotFoundError.d.ts +31 -0
  62. package/dist/cjs/generated/optimism/models/NotFoundError.js +51 -0
  63. package/dist/cjs/generated/optimism/models/index.d.ts +1 -0
  64. package/dist/cjs/generated/optimism/models/index.js +1 -0
  65. package/dist/cjs/generated/polygon/models/NotFoundError.d.ts +31 -0
  66. package/dist/cjs/generated/polygon/models/NotFoundError.js +51 -0
  67. package/dist/cjs/generated/polygon/models/index.d.ts +1 -0
  68. package/dist/cjs/generated/polygon/models/index.js +1 -0
  69. package/dist/cjs/generated/solana/models/NotFoundError.d.ts +31 -0
  70. package/dist/cjs/generated/solana/models/NotFoundError.js +51 -0
  71. package/dist/cjs/generated/solana/models/index.d.ts +1 -0
  72. package/dist/cjs/generated/solana/models/index.js +1 -0
  73. package/dist/cjs/generated/zcash/models/NotFoundError.d.ts +31 -0
  74. package/dist/cjs/generated/zcash/models/NotFoundError.js +51 -0
  75. package/dist/cjs/generated/zcash/models/index.d.ts +1 -0
  76. package/dist/cjs/generated/zcash/models/index.js +1 -0
  77. package/dist/cjs/tron/__tests__/api.test.js +125 -0
  78. package/dist/cjs/tron/api.d.ts +7 -0
  79. package/dist/cjs/tron/api.js +39 -3
  80. package/dist/esm/.tsbuildinfo +1 -1
  81. package/dist/esm/evm/arbitrum/parser/index.js +1 -1
  82. package/dist/esm/evm/avalanche/parser/index.js +1 -1
  83. package/dist/esm/evm/base/parser/index.js +1 -1
  84. package/dist/esm/evm/bnbsmartchain/parser/index.js +1 -1
  85. package/dist/esm/evm/ethereum/parser/__tests__/ethereum.test.js +13 -13
  86. package/dist/esm/evm/ethereum/parser/index.js +12 -3
  87. package/dist/esm/evm/ethereum/parser/uniV2.d.ts +4 -3
  88. package/dist/esm/evm/ethereum/parser/uniV2.js +14 -11
  89. package/dist/esm/evm/ethereum/parser/weth.d.ts +0 -2
  90. package/dist/esm/evm/ethereum/parser/weth.js +0 -2
  91. package/dist/esm/evm/gnosis/parser/index.js +1 -1
  92. package/dist/esm/evm/optimism/parser/index.js +1 -1
  93. package/dist/esm/evm/parser/erc20.d.ts +0 -2
  94. package/dist/esm/evm/parser/erc20.js +0 -2
  95. package/dist/esm/evm/parser/index.d.ts +1 -2
  96. package/dist/esm/evm/parser/index.js +3 -3
  97. package/dist/esm/evm/polygon/parser/index.js +1 -1
  98. package/dist/esm/generated/arbitrum/models/NotFoundError.d.ts +31 -0
  99. package/dist/esm/generated/arbitrum/models/NotFoundError.js +44 -0
  100. package/dist/esm/generated/arbitrum/models/index.d.ts +1 -0
  101. package/dist/esm/generated/arbitrum/models/index.js +1 -0
  102. package/dist/esm/generated/avalanche/models/NotFoundError.d.ts +31 -0
  103. package/dist/esm/generated/avalanche/models/NotFoundError.js +44 -0
  104. package/dist/esm/generated/avalanche/models/index.d.ts +1 -0
  105. package/dist/esm/generated/avalanche/models/index.js +1 -0
  106. package/dist/esm/generated/base/models/NotFoundError.d.ts +31 -0
  107. package/dist/esm/generated/base/models/NotFoundError.js +44 -0
  108. package/dist/esm/generated/base/models/index.d.ts +1 -0
  109. package/dist/esm/generated/base/models/index.js +1 -0
  110. package/dist/esm/generated/bitcoin/models/NotFoundError.d.ts +31 -0
  111. package/dist/esm/generated/bitcoin/models/NotFoundError.js +44 -0
  112. package/dist/esm/generated/bitcoin/models/index.d.ts +1 -0
  113. package/dist/esm/generated/bitcoin/models/index.js +1 -0
  114. package/dist/esm/generated/bitcoincash/models/NotFoundError.d.ts +31 -0
  115. package/dist/esm/generated/bitcoincash/models/NotFoundError.js +44 -0
  116. package/dist/esm/generated/bitcoincash/models/index.d.ts +1 -0
  117. package/dist/esm/generated/bitcoincash/models/index.js +1 -0
  118. package/dist/esm/generated/bnbsmartchain/models/NotFoundError.d.ts +31 -0
  119. package/dist/esm/generated/bnbsmartchain/models/NotFoundError.js +44 -0
  120. package/dist/esm/generated/bnbsmartchain/models/index.d.ts +1 -0
  121. package/dist/esm/generated/bnbsmartchain/models/index.js +1 -0
  122. package/dist/esm/generated/dogecoin/models/NotFoundError.d.ts +31 -0
  123. package/dist/esm/generated/dogecoin/models/NotFoundError.js +44 -0
  124. package/dist/esm/generated/dogecoin/models/index.d.ts +1 -0
  125. package/dist/esm/generated/dogecoin/models/index.js +1 -0
  126. package/dist/esm/generated/ethereum/apis/V1Api.d.ts +15 -0
  127. package/dist/esm/generated/ethereum/apis/V1Api.js +24 -0
  128. package/dist/esm/generated/ethereum/models/NotFoundError.d.ts +31 -0
  129. package/dist/esm/generated/ethereum/models/NotFoundError.js +44 -0
  130. package/dist/esm/generated/ethereum/models/index.d.ts +1 -0
  131. package/dist/esm/generated/ethereum/models/index.js +1 -0
  132. package/dist/esm/generated/gnosis/models/NotFoundError.d.ts +31 -0
  133. package/dist/esm/generated/gnosis/models/NotFoundError.js +44 -0
  134. package/dist/esm/generated/gnosis/models/index.d.ts +1 -0
  135. package/dist/esm/generated/gnosis/models/index.js +1 -0
  136. package/dist/esm/generated/litecoin/models/NotFoundError.d.ts +31 -0
  137. package/dist/esm/generated/litecoin/models/NotFoundError.js +44 -0
  138. package/dist/esm/generated/litecoin/models/index.d.ts +1 -0
  139. package/dist/esm/generated/litecoin/models/index.js +1 -0
  140. package/dist/esm/generated/optimism/models/NotFoundError.d.ts +31 -0
  141. package/dist/esm/generated/optimism/models/NotFoundError.js +44 -0
  142. package/dist/esm/generated/optimism/models/index.d.ts +1 -0
  143. package/dist/esm/generated/optimism/models/index.js +1 -0
  144. package/dist/esm/generated/polygon/models/NotFoundError.d.ts +31 -0
  145. package/dist/esm/generated/polygon/models/NotFoundError.js +44 -0
  146. package/dist/esm/generated/polygon/models/index.d.ts +1 -0
  147. package/dist/esm/generated/polygon/models/index.js +1 -0
  148. package/dist/esm/generated/solana/models/NotFoundError.d.ts +31 -0
  149. package/dist/esm/generated/solana/models/NotFoundError.js +44 -0
  150. package/dist/esm/generated/solana/models/index.d.ts +1 -0
  151. package/dist/esm/generated/solana/models/index.js +1 -0
  152. package/dist/esm/generated/zcash/models/NotFoundError.d.ts +31 -0
  153. package/dist/esm/generated/zcash/models/NotFoundError.js +44 -0
  154. package/dist/esm/generated/zcash/models/index.d.ts +1 -0
  155. package/dist/esm/generated/zcash/models/index.js +1 -0
  156. package/dist/esm/tron/__tests__/api.test.js +125 -0
  157. package/dist/esm/tron/api.d.ts +7 -0
  158. package/dist/esm/tron/api.js +39 -3
  159. package/package.json +4 -4
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TronApi = exports.getCallerEnergy = void 0;
4
+ const utils_1 = require("@shapeshiftoss/utils");
4
5
  const tronweb_1 = require("tronweb");
6
+ const PRECISION_READ_TIMEOUT_MS = 10_000;
5
7
  const TRON_CALLER_PAYS_ALL = {
6
8
  callerPercent: 100,
7
9
  originEnergyLimit: 0,
@@ -144,6 +146,36 @@ class TronApi {
144
146
  tokens,
145
147
  };
146
148
  }
149
+ async getTrc20Decimals(params) {
150
+ try {
151
+ const result = await (0, utils_1.timeout)(this.getTronWeb().transactionBuilder.triggerConstantContract(params.contractAddress, 'decimals()', {}, [], params.contractAddress), PRECISION_READ_TIMEOUT_MS, undefined);
152
+ if (!result)
153
+ return;
154
+ const [decimalsHex] = result.constant_result ?? [];
155
+ if (this.isReverted(result) || !decimalsHex)
156
+ return;
157
+ // decimals() is a uint8; anything larger is a contract answering something else
158
+ const decimals = Number(BigInt(`0x${decimalsHex}`));
159
+ return decimals > 255 ? undefined : decimals;
160
+ }
161
+ catch (err) {
162
+ console.error(`[tron] failed to read decimals of ${params.contractAddress}`, err);
163
+ return;
164
+ }
165
+ }
166
+ async getTrc10Precision(params) {
167
+ try {
168
+ const data = await (0, utils_1.timeout)(fetch(`${this.rpcUrl}/v1/assets/${params.id}`, {
169
+ headers: this.tronGridHeaders,
170
+ signal: AbortSignal.timeout(PRECISION_READ_TIMEOUT_MS),
171
+ }).then(response => response.json()), PRECISION_READ_TIMEOUT_MS, undefined);
172
+ return data?.data?.[0]?.precision;
173
+ }
174
+ catch (err) {
175
+ console.error(`[tron] failed to read precision of trc10 ${params.id}`, err);
176
+ return;
177
+ }
178
+ }
147
179
  async getTrc20Balance(params) {
148
180
  const result = await this.getTronWeb().transactionBuilder.triggerConstantContract(params.contractAddress, 'balanceOf(address)', {}, [{ type: 'address', value: params.address }], params.address);
149
181
  const [balance] = result.constant_result ?? [];
@@ -378,10 +410,14 @@ class TronApi {
378
410
  const energy = this.getSimulatedEnergy(result, 'contract call');
379
411
  return String((0, exports.getCallerEnergy)(energy, share) * energyPrice);
380
412
  }
381
- // A revert still reports result.result: true with the partial energy burned - trusting it would underestimate
413
+ // A revert still reports result.result: true - the failure is only visible on the transaction's ret
414
+ isReverted(result) {
415
+ const failed = result.transaction?.ret?.some(ret => ret.ret === 'FAILED');
416
+ return result.result?.result !== true || Boolean(failed);
417
+ }
418
+ // Trusting a revert's partial energy would underestimate
382
419
  getSimulatedEnergy(result, label) {
383
- const isReverted = result.transaction?.ret?.some(ret => ret.ret === 'FAILED');
384
- if (result.result?.result !== true || isReverted || !result.energy_used) {
420
+ if (this.isReverted(result) || !result.energy_used) {
385
421
  throw new Error(`[tron] ${label} simulation failed: ${result.result?.message ?? 'unknown error'}`);
386
422
  }
387
423
  return result.energy_used;