@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.
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/evm/arbitrum/parser/index.js +1 -1
- package/dist/cjs/evm/avalanche/parser/index.js +1 -1
- package/dist/cjs/evm/base/parser/index.js +1 -1
- package/dist/cjs/evm/bnbsmartchain/parser/index.js +1 -1
- package/dist/cjs/evm/ethereum/parser/__tests__/ethereum.test.js +13 -13
- package/dist/cjs/evm/ethereum/parser/index.js +12 -3
- package/dist/cjs/evm/ethereum/parser/uniV2.d.ts +4 -3
- package/dist/cjs/evm/ethereum/parser/uniV2.js +13 -10
- package/dist/cjs/evm/ethereum/parser/weth.d.ts +0 -2
- package/dist/cjs/evm/ethereum/parser/weth.js +0 -2
- package/dist/cjs/evm/gnosis/parser/index.js +1 -1
- package/dist/cjs/evm/optimism/parser/index.js +1 -1
- package/dist/cjs/evm/parser/erc20.d.ts +0 -2
- package/dist/cjs/evm/parser/erc20.js +0 -2
- package/dist/cjs/evm/parser/index.d.ts +1 -2
- package/dist/cjs/evm/parser/index.js +2 -2
- package/dist/cjs/evm/polygon/parser/index.js +1 -1
- package/dist/cjs/generated/arbitrum/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/arbitrum/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/arbitrum/models/index.d.ts +1 -0
- package/dist/cjs/generated/arbitrum/models/index.js +1 -0
- package/dist/cjs/generated/avalanche/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/avalanche/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/avalanche/models/index.d.ts +1 -0
- package/dist/cjs/generated/avalanche/models/index.js +1 -0
- package/dist/cjs/generated/base/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/base/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/base/models/index.d.ts +1 -0
- package/dist/cjs/generated/base/models/index.js +1 -0
- package/dist/cjs/generated/bitcoin/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/bitcoin/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/bitcoin/models/index.d.ts +1 -0
- package/dist/cjs/generated/bitcoin/models/index.js +1 -0
- package/dist/cjs/generated/bitcoincash/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/bitcoincash/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/bitcoincash/models/index.d.ts +1 -0
- package/dist/cjs/generated/bitcoincash/models/index.js +1 -0
- package/dist/cjs/generated/bnbsmartchain/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/bnbsmartchain/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/bnbsmartchain/models/index.d.ts +1 -0
- package/dist/cjs/generated/bnbsmartchain/models/index.js +1 -0
- package/dist/cjs/generated/dogecoin/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/dogecoin/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/dogecoin/models/index.d.ts +1 -0
- package/dist/cjs/generated/dogecoin/models/index.js +1 -0
- package/dist/cjs/generated/ethereum/apis/V1Api.d.ts +15 -0
- package/dist/cjs/generated/ethereum/apis/V1Api.js +24 -0
- package/dist/cjs/generated/ethereum/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/ethereum/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/ethereum/models/index.d.ts +1 -0
- package/dist/cjs/generated/ethereum/models/index.js +1 -0
- package/dist/cjs/generated/gnosis/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/gnosis/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/gnosis/models/index.d.ts +1 -0
- package/dist/cjs/generated/gnosis/models/index.js +1 -0
- package/dist/cjs/generated/litecoin/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/litecoin/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/litecoin/models/index.d.ts +1 -0
- package/dist/cjs/generated/litecoin/models/index.js +1 -0
- package/dist/cjs/generated/optimism/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/optimism/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/optimism/models/index.d.ts +1 -0
- package/dist/cjs/generated/optimism/models/index.js +1 -0
- package/dist/cjs/generated/polygon/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/polygon/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/polygon/models/index.d.ts +1 -0
- package/dist/cjs/generated/polygon/models/index.js +1 -0
- package/dist/cjs/generated/solana/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/solana/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/solana/models/index.d.ts +1 -0
- package/dist/cjs/generated/solana/models/index.js +1 -0
- package/dist/cjs/generated/zcash/models/NotFoundError.d.ts +31 -0
- package/dist/cjs/generated/zcash/models/NotFoundError.js +51 -0
- package/dist/cjs/generated/zcash/models/index.d.ts +1 -0
- package/dist/cjs/generated/zcash/models/index.js +1 -0
- package/dist/cjs/tron/__tests__/api.test.js +125 -0
- package/dist/cjs/tron/api.d.ts +7 -0
- package/dist/cjs/tron/api.js +39 -3
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/evm/arbitrum/parser/index.js +1 -1
- package/dist/esm/evm/avalanche/parser/index.js +1 -1
- package/dist/esm/evm/base/parser/index.js +1 -1
- package/dist/esm/evm/bnbsmartchain/parser/index.js +1 -1
- package/dist/esm/evm/ethereum/parser/__tests__/ethereum.test.js +13 -13
- package/dist/esm/evm/ethereum/parser/index.js +12 -3
- package/dist/esm/evm/ethereum/parser/uniV2.d.ts +4 -3
- package/dist/esm/evm/ethereum/parser/uniV2.js +14 -11
- package/dist/esm/evm/ethereum/parser/weth.d.ts +0 -2
- package/dist/esm/evm/ethereum/parser/weth.js +0 -2
- package/dist/esm/evm/gnosis/parser/index.js +1 -1
- package/dist/esm/evm/optimism/parser/index.js +1 -1
- package/dist/esm/evm/parser/erc20.d.ts +0 -2
- package/dist/esm/evm/parser/erc20.js +0 -2
- package/dist/esm/evm/parser/index.d.ts +1 -2
- package/dist/esm/evm/parser/index.js +3 -3
- package/dist/esm/evm/polygon/parser/index.js +1 -1
- package/dist/esm/generated/arbitrum/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/arbitrum/models/NotFoundError.js +44 -0
- package/dist/esm/generated/arbitrum/models/index.d.ts +1 -0
- package/dist/esm/generated/arbitrum/models/index.js +1 -0
- package/dist/esm/generated/avalanche/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/avalanche/models/NotFoundError.js +44 -0
- package/dist/esm/generated/avalanche/models/index.d.ts +1 -0
- package/dist/esm/generated/avalanche/models/index.js +1 -0
- package/dist/esm/generated/base/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/base/models/NotFoundError.js +44 -0
- package/dist/esm/generated/base/models/index.d.ts +1 -0
- package/dist/esm/generated/base/models/index.js +1 -0
- package/dist/esm/generated/bitcoin/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/bitcoin/models/NotFoundError.js +44 -0
- package/dist/esm/generated/bitcoin/models/index.d.ts +1 -0
- package/dist/esm/generated/bitcoin/models/index.js +1 -0
- package/dist/esm/generated/bitcoincash/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/bitcoincash/models/NotFoundError.js +44 -0
- package/dist/esm/generated/bitcoincash/models/index.d.ts +1 -0
- package/dist/esm/generated/bitcoincash/models/index.js +1 -0
- package/dist/esm/generated/bnbsmartchain/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/bnbsmartchain/models/NotFoundError.js +44 -0
- package/dist/esm/generated/bnbsmartchain/models/index.d.ts +1 -0
- package/dist/esm/generated/bnbsmartchain/models/index.js +1 -0
- package/dist/esm/generated/dogecoin/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/dogecoin/models/NotFoundError.js +44 -0
- package/dist/esm/generated/dogecoin/models/index.d.ts +1 -0
- package/dist/esm/generated/dogecoin/models/index.js +1 -0
- package/dist/esm/generated/ethereum/apis/V1Api.d.ts +15 -0
- package/dist/esm/generated/ethereum/apis/V1Api.js +24 -0
- package/dist/esm/generated/ethereum/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/ethereum/models/NotFoundError.js +44 -0
- package/dist/esm/generated/ethereum/models/index.d.ts +1 -0
- package/dist/esm/generated/ethereum/models/index.js +1 -0
- package/dist/esm/generated/gnosis/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/gnosis/models/NotFoundError.js +44 -0
- package/dist/esm/generated/gnosis/models/index.d.ts +1 -0
- package/dist/esm/generated/gnosis/models/index.js +1 -0
- package/dist/esm/generated/litecoin/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/litecoin/models/NotFoundError.js +44 -0
- package/dist/esm/generated/litecoin/models/index.d.ts +1 -0
- package/dist/esm/generated/litecoin/models/index.js +1 -0
- package/dist/esm/generated/optimism/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/optimism/models/NotFoundError.js +44 -0
- package/dist/esm/generated/optimism/models/index.d.ts +1 -0
- package/dist/esm/generated/optimism/models/index.js +1 -0
- package/dist/esm/generated/polygon/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/polygon/models/NotFoundError.js +44 -0
- package/dist/esm/generated/polygon/models/index.d.ts +1 -0
- package/dist/esm/generated/polygon/models/index.js +1 -0
- package/dist/esm/generated/solana/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/solana/models/NotFoundError.js +44 -0
- package/dist/esm/generated/solana/models/index.d.ts +1 -0
- package/dist/esm/generated/solana/models/index.js +1 -0
- package/dist/esm/generated/zcash/models/NotFoundError.d.ts +31 -0
- package/dist/esm/generated/zcash/models/NotFoundError.js +44 -0
- package/dist/esm/generated/zcash/models/index.d.ts +1 -0
- package/dist/esm/generated/zcash/models/index.js +1 -0
- package/dist/esm/tron/__tests__/api.test.js +125 -0
- package/dist/esm/tron/api.d.ts +7 -0
- package/dist/esm/tron/api.js +39 -3
- package/package.json +4 -4
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/* tslint:disable */
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
/**
|
|
5
|
+
* @shapeshiftoss/litecoin-api
|
|
6
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
*
|
|
8
|
+
* The version of the OpenAPI document: 10.0.0
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
12
|
+
* https://openapi-generator.tech
|
|
13
|
+
* Do not edit the class manually.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Check if a given object implements the NotFoundError interface.
|
|
17
|
+
*/
|
|
18
|
+
export function instanceOfNotFoundError(value) {
|
|
19
|
+
let isInstance = true;
|
|
20
|
+
isInstance = isInstance && "message" in value;
|
|
21
|
+
return isInstance;
|
|
22
|
+
}
|
|
23
|
+
export function NotFoundErrorFromJSON(json) {
|
|
24
|
+
return NotFoundErrorFromJSONTyped(json, false);
|
|
25
|
+
}
|
|
26
|
+
export function NotFoundErrorFromJSONTyped(json, ignoreDiscriminator) {
|
|
27
|
+
if ((json === undefined) || (json === null)) {
|
|
28
|
+
return json;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
'message': json['message'],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function NotFoundErrorToJSON(value) {
|
|
35
|
+
if (value === undefined) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
if (value === null) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
'message': value.message,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -6,6 +6,7 @@ export * from './BaseTxHistoryTx.js';
|
|
|
6
6
|
export * from './InternalServerError.js';
|
|
7
7
|
export * from './NetworkFee.js';
|
|
8
8
|
export * from './NetworkFees.js';
|
|
9
|
+
export * from './NotFoundError.js';
|
|
9
10
|
export * from './RawTx.js';
|
|
10
11
|
export * from './RawTxVinInner.js';
|
|
11
12
|
export * from './RawTxVinInnerScriptSig.js';
|
|
@@ -9,6 +9,7 @@ export * from './BaseTxHistoryTx.js';
|
|
|
9
9
|
export * from './InternalServerError.js';
|
|
10
10
|
export * from './NetworkFee.js';
|
|
11
11
|
export * from './NetworkFees.js';
|
|
12
|
+
export * from './NotFoundError.js';
|
|
12
13
|
export * from './RawTx.js';
|
|
13
14
|
export * from './RawTxVinInner.js';
|
|
14
15
|
export * from './RawTxVinInnerScriptSig.js';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @shapeshiftoss/optimism-api
|
|
3
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: 10.0.0
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Contains info about a 404 Not Found response
|
|
14
|
+
* @export
|
|
15
|
+
* @interface NotFoundError
|
|
16
|
+
*/
|
|
17
|
+
export interface NotFoundError {
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @type {string}
|
|
21
|
+
* @memberof NotFoundError
|
|
22
|
+
*/
|
|
23
|
+
message: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if a given object implements the NotFoundError interface.
|
|
27
|
+
*/
|
|
28
|
+
export declare function instanceOfNotFoundError(value: object): boolean;
|
|
29
|
+
export declare function NotFoundErrorFromJSON(json: any): NotFoundError;
|
|
30
|
+
export declare function NotFoundErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): NotFoundError;
|
|
31
|
+
export declare function NotFoundErrorToJSON(value?: NotFoundError | null): any;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/* tslint:disable */
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
/**
|
|
5
|
+
* @shapeshiftoss/optimism-api
|
|
6
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
*
|
|
8
|
+
* The version of the OpenAPI document: 10.0.0
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
12
|
+
* https://openapi-generator.tech
|
|
13
|
+
* Do not edit the class manually.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Check if a given object implements the NotFoundError interface.
|
|
17
|
+
*/
|
|
18
|
+
export function instanceOfNotFoundError(value) {
|
|
19
|
+
let isInstance = true;
|
|
20
|
+
isInstance = isInstance && "message" in value;
|
|
21
|
+
return isInstance;
|
|
22
|
+
}
|
|
23
|
+
export function NotFoundErrorFromJSON(json) {
|
|
24
|
+
return NotFoundErrorFromJSONTyped(json, false);
|
|
25
|
+
}
|
|
26
|
+
export function NotFoundErrorFromJSONTyped(json, ignoreDiscriminator) {
|
|
27
|
+
if ((json === undefined) || (json === null)) {
|
|
28
|
+
return json;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
'message': json['message'],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function NotFoundErrorToJSON(value) {
|
|
35
|
+
if (value === undefined) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
if (value === null) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
'message': value.message,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -8,6 +8,7 @@ export * from './EstimateGasBody.js';
|
|
|
8
8
|
export * from './Fees.js';
|
|
9
9
|
export * from './InternalServerError.js';
|
|
10
10
|
export * from './InternalTx.js';
|
|
11
|
+
export * from './NotFoundError.js';
|
|
11
12
|
export * from './OptimismGasEstimate.js';
|
|
12
13
|
export * from './OptimismGasFees.js';
|
|
13
14
|
export * from './RPCRequest.js';
|
|
@@ -11,6 +11,7 @@ export * from './EstimateGasBody.js';
|
|
|
11
11
|
export * from './Fees.js';
|
|
12
12
|
export * from './InternalServerError.js';
|
|
13
13
|
export * from './InternalTx.js';
|
|
14
|
+
export * from './NotFoundError.js';
|
|
14
15
|
export * from './OptimismGasEstimate.js';
|
|
15
16
|
export * from './OptimismGasFees.js';
|
|
16
17
|
export * from './RPCRequest.js';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @shapeshiftoss/polygon-api
|
|
3
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: 10.0.0
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Contains info about a 404 Not Found response
|
|
14
|
+
* @export
|
|
15
|
+
* @interface NotFoundError
|
|
16
|
+
*/
|
|
17
|
+
export interface NotFoundError {
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @type {string}
|
|
21
|
+
* @memberof NotFoundError
|
|
22
|
+
*/
|
|
23
|
+
message: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if a given object implements the NotFoundError interface.
|
|
27
|
+
*/
|
|
28
|
+
export declare function instanceOfNotFoundError(value: object): boolean;
|
|
29
|
+
export declare function NotFoundErrorFromJSON(json: any): NotFoundError;
|
|
30
|
+
export declare function NotFoundErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): NotFoundError;
|
|
31
|
+
export declare function NotFoundErrorToJSON(value?: NotFoundError | null): any;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/* tslint:disable */
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
/**
|
|
5
|
+
* @shapeshiftoss/polygon-api
|
|
6
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
*
|
|
8
|
+
* The version of the OpenAPI document: 10.0.0
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
12
|
+
* https://openapi-generator.tech
|
|
13
|
+
* Do not edit the class manually.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Check if a given object implements the NotFoundError interface.
|
|
17
|
+
*/
|
|
18
|
+
export function instanceOfNotFoundError(value) {
|
|
19
|
+
let isInstance = true;
|
|
20
|
+
isInstance = isInstance && "message" in value;
|
|
21
|
+
return isInstance;
|
|
22
|
+
}
|
|
23
|
+
export function NotFoundErrorFromJSON(json) {
|
|
24
|
+
return NotFoundErrorFromJSONTyped(json, false);
|
|
25
|
+
}
|
|
26
|
+
export function NotFoundErrorFromJSONTyped(json, ignoreDiscriminator) {
|
|
27
|
+
if ((json === undefined) || (json === null)) {
|
|
28
|
+
return json;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
'message': json['message'],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function NotFoundErrorToJSON(value) {
|
|
35
|
+
if (value === undefined) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
if (value === null) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
'message': value.message,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -10,6 +10,7 @@ export * from './GasEstimate.js';
|
|
|
10
10
|
export * from './GasFees.js';
|
|
11
11
|
export * from './InternalServerError.js';
|
|
12
12
|
export * from './InternalTx.js';
|
|
13
|
+
export * from './NotFoundError.js';
|
|
13
14
|
export * from './RPCRequest.js';
|
|
14
15
|
export * from './RPCResponse.js';
|
|
15
16
|
export * from './RPCResponseError.js';
|
|
@@ -13,6 +13,7 @@ export * from './GasEstimate.js';
|
|
|
13
13
|
export * from './GasFees.js';
|
|
14
14
|
export * from './InternalServerError.js';
|
|
15
15
|
export * from './InternalTx.js';
|
|
16
|
+
export * from './NotFoundError.js';
|
|
16
17
|
export * from './RPCRequest.js';
|
|
17
18
|
export * from './RPCResponse.js';
|
|
18
19
|
export * from './RPCResponseError.js';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @shapeshiftoss/solana-api
|
|
3
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: 10.0.0
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Contains info about a 404 Not Found response
|
|
14
|
+
* @export
|
|
15
|
+
* @interface NotFoundError
|
|
16
|
+
*/
|
|
17
|
+
export interface NotFoundError {
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @type {string}
|
|
21
|
+
* @memberof NotFoundError
|
|
22
|
+
*/
|
|
23
|
+
message: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if a given object implements the NotFoundError interface.
|
|
27
|
+
*/
|
|
28
|
+
export declare function instanceOfNotFoundError(value: object): boolean;
|
|
29
|
+
export declare function NotFoundErrorFromJSON(json: any): NotFoundError;
|
|
30
|
+
export declare function NotFoundErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): NotFoundError;
|
|
31
|
+
export declare function NotFoundErrorToJSON(value?: NotFoundError | null): any;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/* tslint:disable */
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
/**
|
|
5
|
+
* @shapeshiftoss/solana-api
|
|
6
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
*
|
|
8
|
+
* The version of the OpenAPI document: 10.0.0
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
12
|
+
* https://openapi-generator.tech
|
|
13
|
+
* Do not edit the class manually.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Check if a given object implements the NotFoundError interface.
|
|
17
|
+
*/
|
|
18
|
+
export function instanceOfNotFoundError(value) {
|
|
19
|
+
let isInstance = true;
|
|
20
|
+
isInstance = isInstance && "message" in value;
|
|
21
|
+
return isInstance;
|
|
22
|
+
}
|
|
23
|
+
export function NotFoundErrorFromJSON(json) {
|
|
24
|
+
return NotFoundErrorFromJSONTyped(json, false);
|
|
25
|
+
}
|
|
26
|
+
export function NotFoundErrorFromJSONTyped(json, ignoreDiscriminator) {
|
|
27
|
+
if ((json === undefined) || (json === null)) {
|
|
28
|
+
return json;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
'message': json['message'],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function NotFoundErrorToJSON(value) {
|
|
35
|
+
if (value === undefined) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
if (value === null) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
'message': value.message,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -22,6 +22,7 @@ export * from './InternalServerError.js';
|
|
|
22
22
|
export * from './NFTEvent.js';
|
|
23
23
|
export * from './NativeBalanceChange.js';
|
|
24
24
|
export * from './NativeTransfer.js';
|
|
25
|
+
export * from './NotFoundError.js';
|
|
25
26
|
export * from './PriorityFees.js';
|
|
26
27
|
export * from './ProgramInfo.js';
|
|
27
28
|
export * from './ProgramName.js';
|
|
@@ -25,6 +25,7 @@ export * from './InternalServerError.js';
|
|
|
25
25
|
export * from './NFTEvent.js';
|
|
26
26
|
export * from './NativeBalanceChange.js';
|
|
27
27
|
export * from './NativeTransfer.js';
|
|
28
|
+
export * from './NotFoundError.js';
|
|
28
29
|
export * from './PriorityFees.js';
|
|
29
30
|
export * from './ProgramInfo.js';
|
|
30
31
|
export * from './ProgramName.js';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @shapeshiftoss/zcash-api
|
|
3
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: 10.0.0
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Contains info about a 404 Not Found response
|
|
14
|
+
* @export
|
|
15
|
+
* @interface NotFoundError
|
|
16
|
+
*/
|
|
17
|
+
export interface NotFoundError {
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @type {string}
|
|
21
|
+
* @memberof NotFoundError
|
|
22
|
+
*/
|
|
23
|
+
message: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if a given object implements the NotFoundError interface.
|
|
27
|
+
*/
|
|
28
|
+
export declare function instanceOfNotFoundError(value: object): boolean;
|
|
29
|
+
export declare function NotFoundErrorFromJSON(json: any): NotFoundError;
|
|
30
|
+
export declare function NotFoundErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): NotFoundError;
|
|
31
|
+
export declare function NotFoundErrorToJSON(value?: NotFoundError | null): any;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
/* tslint:disable */
|
|
3
|
+
/* eslint-disable */
|
|
4
|
+
/**
|
|
5
|
+
* @shapeshiftoss/zcash-api
|
|
6
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
+
*
|
|
8
|
+
* The version of the OpenAPI document: 10.0.0
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
12
|
+
* https://openapi-generator.tech
|
|
13
|
+
* Do not edit the class manually.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Check if a given object implements the NotFoundError interface.
|
|
17
|
+
*/
|
|
18
|
+
export function instanceOfNotFoundError(value) {
|
|
19
|
+
let isInstance = true;
|
|
20
|
+
isInstance = isInstance && "message" in value;
|
|
21
|
+
return isInstance;
|
|
22
|
+
}
|
|
23
|
+
export function NotFoundErrorFromJSON(json) {
|
|
24
|
+
return NotFoundErrorFromJSONTyped(json, false);
|
|
25
|
+
}
|
|
26
|
+
export function NotFoundErrorFromJSONTyped(json, ignoreDiscriminator) {
|
|
27
|
+
if ((json === undefined) || (json === null)) {
|
|
28
|
+
return json;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
'message': json['message'],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function NotFoundErrorToJSON(value) {
|
|
35
|
+
if (value === undefined) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
if (value === null) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
'message': value.message,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -6,6 +6,7 @@ export * from './BaseTxHistoryTx.js';
|
|
|
6
6
|
export * from './InternalServerError.js';
|
|
7
7
|
export * from './NetworkFee.js';
|
|
8
8
|
export * from './NetworkFees.js';
|
|
9
|
+
export * from './NotFoundError.js';
|
|
9
10
|
export * from './RawTx.js';
|
|
10
11
|
export * from './RawTxVinInner.js';
|
|
11
12
|
export * from './RawTxVinInnerScriptSig.js';
|
|
@@ -9,6 +9,7 @@ export * from './BaseTxHistoryTx.js';
|
|
|
9
9
|
export * from './InternalServerError.js';
|
|
10
10
|
export * from './NetworkFee.js';
|
|
11
11
|
export * from './NetworkFees.js';
|
|
12
|
+
export * from './NotFoundError.js';
|
|
12
13
|
export * from './RawTx.js';
|
|
13
14
|
export * from './RawTxVinInner.js';
|
|
14
15
|
export * from './RawTxVinInnerScriptSig.js';
|
|
@@ -240,6 +240,131 @@ describe('TronApi', () => {
|
|
|
240
240
|
expect(trigger).toHaveBeenCalledWith('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t', 'balanceOf(address)', {}, [{ type: 'address', value: 'TE6oHVdTbcp1Q9XBYx5VzjWbZEg3t3Jrnc' }], 'TE6oHVdTbcp1Q9XBYx5VzjWbZEg3t3Jrnc');
|
|
241
241
|
});
|
|
242
242
|
});
|
|
243
|
+
describe('getTrc20Decimals', () => {
|
|
244
|
+
const USDT = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t';
|
|
245
|
+
const eighteen = '0000000000000000000000000000000000000000000000000000000000000012';
|
|
246
|
+
it('reads decimals() with a single constant call', async () => {
|
|
247
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
248
|
+
const tronWeb = freshApi.getTronWeb();
|
|
249
|
+
const trigger = vi
|
|
250
|
+
.spyOn(tronWeb.transactionBuilder, 'triggerConstantContract')
|
|
251
|
+
.mockResolvedValue({ result: { result: true }, constant_result: [eighteen] });
|
|
252
|
+
expect(await freshApi.getTrc20Decimals({ contractAddress: USDT })).toBe(18);
|
|
253
|
+
expect(trigger).toHaveBeenCalledWith(USDT, 'decimals()', {}, [], USDT);
|
|
254
|
+
});
|
|
255
|
+
it('reads a reverted decimals() as unknown', async () => {
|
|
256
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
257
|
+
const tronWeb = freshApi.getTronWeb();
|
|
258
|
+
const trigger = vi
|
|
259
|
+
.spyOn(tronWeb.transactionBuilder, 'triggerConstantContract')
|
|
260
|
+
.mockResolvedValueOnce({
|
|
261
|
+
result: { result: true, message: 'REVERT opcode executed' },
|
|
262
|
+
constant_result: ['08c379a0' + '0'.repeat(56)],
|
|
263
|
+
transaction: { ret: [{ ret: 'FAILED' }] },
|
|
264
|
+
})
|
|
265
|
+
.mockResolvedValue({ result: { result: true }, constant_result: [eighteen] });
|
|
266
|
+
expect(await freshApi.getTrc20Decimals({ contractAddress: USDT })).toBeUndefined();
|
|
267
|
+
expect(await freshApi.getTrc20Decimals({ contractAddress: USDT })).toBe(18);
|
|
268
|
+
expect(trigger).toHaveBeenCalledTimes(2);
|
|
269
|
+
});
|
|
270
|
+
it('reads a value outside a uint8 as unknown', async () => {
|
|
271
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
272
|
+
const tronWeb = freshApi.getTronWeb();
|
|
273
|
+
vi.spyOn(tronWeb.transactionBuilder, 'triggerConstantContract').mockResolvedValue({
|
|
274
|
+
result: { result: true },
|
|
275
|
+
constant_result: ['0'.repeat(61) + '100'],
|
|
276
|
+
});
|
|
277
|
+
expect(await freshApi.getTrc20Decimals({ contractAddress: USDT })).toBeUndefined();
|
|
278
|
+
});
|
|
279
|
+
it('gives up on a call that hangs', async () => {
|
|
280
|
+
vi.useFakeTimers();
|
|
281
|
+
try {
|
|
282
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
283
|
+
const tronWeb = freshApi.getTronWeb();
|
|
284
|
+
vi.spyOn(tronWeb.transactionBuilder, 'triggerConstantContract').mockReturnValue(new Promise(() => undefined));
|
|
285
|
+
const pending = freshApi.getTrc20Decimals({ contractAddress: USDT });
|
|
286
|
+
await vi.runAllTimersAsync();
|
|
287
|
+
expect(await pending).toBeUndefined();
|
|
288
|
+
}
|
|
289
|
+
finally {
|
|
290
|
+
vi.useRealTimers();
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
it('reads a failed call as unknown', async () => {
|
|
294
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
295
|
+
const tronWeb = freshApi.getTronWeb();
|
|
296
|
+
const trigger = vi
|
|
297
|
+
.spyOn(tronWeb.transactionBuilder, 'triggerConstantContract')
|
|
298
|
+
.mockRejectedValueOnce(new Error('429'))
|
|
299
|
+
.mockResolvedValue({ result: { result: true }, constant_result: [eighteen] });
|
|
300
|
+
expect(await freshApi.getTrc20Decimals({ contractAddress: USDT })).toBeUndefined();
|
|
301
|
+
expect(await freshApi.getTrc20Decimals({ contractAddress: USDT })).toBe(18);
|
|
302
|
+
expect(trigger).toHaveBeenCalledTimes(2);
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
describe('getTrc10Precision', () => {
|
|
306
|
+
const respond = (body) => {
|
|
307
|
+
const fetchMock = vi.fn().mockResolvedValue({ ok: true, json: () => body });
|
|
308
|
+
vi.stubGlobal('fetch', fetchMock);
|
|
309
|
+
return fetchMock;
|
|
310
|
+
};
|
|
311
|
+
it('reads the precision of an issued token', async () => {
|
|
312
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
313
|
+
const fetchMock = respond({ success: true, data: [{ id: '1002000', precision: 6 }] });
|
|
314
|
+
expect(await freshApi.getTrc10Precision({ id: '1002000' })).toBe(6);
|
|
315
|
+
expect(fetchMock).toHaveBeenCalledWith('https://tron.example/v1/assets/1002000', expect.objectContaining({ headers: expect.anything() }));
|
|
316
|
+
});
|
|
317
|
+
it('reads a zero precision as issued', async () => {
|
|
318
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
319
|
+
respond({ success: true, data: [{ id: '1000001', precision: 0 }] });
|
|
320
|
+
expect(await freshApi.getTrc10Precision({ id: '1000001' })).toBe(0);
|
|
321
|
+
});
|
|
322
|
+
it('reads an unknown id as unknown', async () => {
|
|
323
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
324
|
+
respond({ success: false, error: 'A valid account address or asset id is required.' });
|
|
325
|
+
expect(await freshApi.getTrc10Precision({ id: '9999999' })).toBeUndefined();
|
|
326
|
+
});
|
|
327
|
+
it('reads an empty listing as unknown', async () => {
|
|
328
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
329
|
+
respond({ success: true, data: [] });
|
|
330
|
+
expect(await freshApi.getTrc10Precision({ id: '1009999' })).toBeUndefined();
|
|
331
|
+
});
|
|
332
|
+
it('gives up on a request that hangs', async () => {
|
|
333
|
+
vi.useFakeTimers();
|
|
334
|
+
try {
|
|
335
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
336
|
+
vi.stubGlobal('fetch', vi.fn().mockReturnValue(new Promise(() => undefined)));
|
|
337
|
+
const pending = freshApi.getTrc10Precision({ id: '1002000' });
|
|
338
|
+
await vi.runAllTimersAsync();
|
|
339
|
+
expect(await pending).toBeUndefined();
|
|
340
|
+
}
|
|
341
|
+
finally {
|
|
342
|
+
vi.useRealTimers();
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
it('gives up on a response whose body stalls', async () => {
|
|
346
|
+
vi.useFakeTimers();
|
|
347
|
+
try {
|
|
348
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
349
|
+
const fetchMock = vi
|
|
350
|
+
.fn()
|
|
351
|
+
.mockResolvedValue({ ok: true, json: () => new Promise(() => undefined) });
|
|
352
|
+
vi.stubGlobal('fetch', fetchMock);
|
|
353
|
+
const pending = freshApi.getTrc10Precision({ id: '1002000' });
|
|
354
|
+
await vi.runAllTimersAsync();
|
|
355
|
+
expect(await pending).toBeUndefined();
|
|
356
|
+
expect(fetchMock).toHaveBeenCalledWith('https://tron.example/v1/assets/1002000', expect.objectContaining({ signal: expect.any(AbortSignal) }));
|
|
357
|
+
}
|
|
358
|
+
finally {
|
|
359
|
+
vi.useRealTimers();
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
it('reads a failed request as unknown', async () => {
|
|
363
|
+
const freshApi = new TronApi({ rpcUrl: 'https://tron.example' });
|
|
364
|
+
vi.stubGlobal('fetch', vi.fn().mockRejectedValue(new Error('429')));
|
|
365
|
+
expect(await freshApi.getTrc10Precision({ id: '1002000' })).toBeUndefined();
|
|
366
|
+
});
|
|
367
|
+
});
|
|
243
368
|
describe('getTrc20Allowance', () => {
|
|
244
369
|
it('reads allowance(owner, spender) with a single constant call', async () => {
|
|
245
370
|
const tronWeb = api.getTronWeb();
|
package/dist/esm/tron/api.d.ts
CHANGED
|
@@ -32,6 +32,12 @@ export declare class TronApi {
|
|
|
32
32
|
balance: string;
|
|
33
33
|
}[];
|
|
34
34
|
}>;
|
|
35
|
+
getTrc20Decimals(params: {
|
|
36
|
+
contractAddress: string;
|
|
37
|
+
}): Promise<number | undefined>;
|
|
38
|
+
getTrc10Precision(params: {
|
|
39
|
+
id: string;
|
|
40
|
+
}): Promise<number | undefined>;
|
|
35
41
|
getTrc20Balance(params: {
|
|
36
42
|
contractAddress: string;
|
|
37
43
|
address: string;
|
|
@@ -85,5 +91,6 @@ export declare class TronApi {
|
|
|
85
91
|
callValue?: string;
|
|
86
92
|
requireEnergyShare?: boolean;
|
|
87
93
|
}): Promise<string>;
|
|
94
|
+
private isReverted;
|
|
88
95
|
private getSimulatedEnergy;
|
|
89
96
|
}
|
package/dist/esm/tron/api.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { timeout } from '@shapeshiftoss/utils';
|
|
1
2
|
import { TronWeb } from 'tronweb';
|
|
3
|
+
const PRECISION_READ_TIMEOUT_MS = 10_000;
|
|
2
4
|
const TRON_CALLER_PAYS_ALL = {
|
|
3
5
|
callerPercent: 100,
|
|
4
6
|
originEnergyLimit: 0,
|
|
@@ -140,6 +142,36 @@ export class TronApi {
|
|
|
140
142
|
tokens,
|
|
141
143
|
};
|
|
142
144
|
}
|
|
145
|
+
async getTrc20Decimals(params) {
|
|
146
|
+
try {
|
|
147
|
+
const result = await timeout(this.getTronWeb().transactionBuilder.triggerConstantContract(params.contractAddress, 'decimals()', {}, [], params.contractAddress), PRECISION_READ_TIMEOUT_MS, undefined);
|
|
148
|
+
if (!result)
|
|
149
|
+
return;
|
|
150
|
+
const [decimalsHex] = result.constant_result ?? [];
|
|
151
|
+
if (this.isReverted(result) || !decimalsHex)
|
|
152
|
+
return;
|
|
153
|
+
// decimals() is a uint8; anything larger is a contract answering something else
|
|
154
|
+
const decimals = Number(BigInt(`0x${decimalsHex}`));
|
|
155
|
+
return decimals > 255 ? undefined : decimals;
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
console.error(`[tron] failed to read decimals of ${params.contractAddress}`, err);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async getTrc10Precision(params) {
|
|
163
|
+
try {
|
|
164
|
+
const data = await timeout(fetch(`${this.rpcUrl}/v1/assets/${params.id}`, {
|
|
165
|
+
headers: this.tronGridHeaders,
|
|
166
|
+
signal: AbortSignal.timeout(PRECISION_READ_TIMEOUT_MS),
|
|
167
|
+
}).then(response => response.json()), PRECISION_READ_TIMEOUT_MS, undefined);
|
|
168
|
+
return data?.data?.[0]?.precision;
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
console.error(`[tron] failed to read precision of trc10 ${params.id}`, err);
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
143
175
|
async getTrc20Balance(params) {
|
|
144
176
|
const result = await this.getTronWeb().transactionBuilder.triggerConstantContract(params.contractAddress, 'balanceOf(address)', {}, [{ type: 'address', value: params.address }], params.address);
|
|
145
177
|
const [balance] = result.constant_result ?? [];
|
|
@@ -374,10 +406,14 @@ export class TronApi {
|
|
|
374
406
|
const energy = this.getSimulatedEnergy(result, 'contract call');
|
|
375
407
|
return String(getCallerEnergy(energy, share) * energyPrice);
|
|
376
408
|
}
|
|
377
|
-
// A revert still reports result.result: true
|
|
409
|
+
// A revert still reports result.result: true - the failure is only visible on the transaction's ret
|
|
410
|
+
isReverted(result) {
|
|
411
|
+
const failed = result.transaction?.ret?.some(ret => ret.ret === 'FAILED');
|
|
412
|
+
return result.result?.result !== true || Boolean(failed);
|
|
413
|
+
}
|
|
414
|
+
// Trusting a revert's partial energy would underestimate
|
|
378
415
|
getSimulatedEnergy(result, label) {
|
|
379
|
-
|
|
380
|
-
if (result.result?.result !== true || isReverted || !result.energy_used) {
|
|
416
|
+
if (this.isReverted(result) || !result.energy_used) {
|
|
381
417
|
throw new Error(`[tron] ${label} simulation failed: ${result.result?.message ?? 'unknown error'}`);
|
|
382
418
|
}
|
|
383
419
|
return result.energy_used;
|