@vultisig/core-chain 2.27.0 → 2.29.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/CHANGELOG.md +157 -0
- package/dist/chains/cosmos/cosmosGasLimitRecord.js +3 -3
- package/dist/chains/cosmos/cosmosGasLimitRecord.js.map +1 -1
- package/dist/chains/cosmos/gas.d.ts +28 -1
- package/dist/chains/cosmos/gas.d.ts.map +1 -1
- package/dist/chains/cosmos/gas.js +37 -5
- package/dist/chains/cosmos/gas.js.map +1 -1
- package/dist/chains/cosmos/resolveCosmosGasLimit.d.ts +82 -0
- package/dist/chains/cosmos/resolveCosmosGasLimit.d.ts.map +1 -0
- package/dist/chains/cosmos/resolveCosmosGasLimit.js +71 -0
- package/dist/chains/cosmos/resolveCosmosGasLimit.js.map +1 -0
- package/dist/chains/cosmos/terraClassicTax.d.ts +68 -0
- package/dist/chains/cosmos/terraClassicTax.d.ts.map +1 -1
- package/dist/chains/cosmos/terraClassicTax.js +85 -0
- package/dist/chains/cosmos/terraClassicTax.js.map +1 -1
- package/dist/chains/sui/client.d.ts +11 -2
- package/dist/chains/sui/client.d.ts.map +1 -1
- package/dist/chains/sui/client.js +5 -4
- package/dist/chains/sui/client.js.map +1 -1
- package/dist/chains/sui/config.d.ts +28 -0
- package/dist/chains/sui/config.d.ts.map +1 -1
- package/dist/chains/sui/config.js +27 -0
- package/dist/chains/sui/config.js.map +1 -1
- package/dist/chains/sui/listAllCoins.d.ts +44 -0
- package/dist/chains/sui/listAllCoins.d.ts.map +1 -0
- package/dist/chains/sui/listAllCoins.js +43 -0
- package/dist/chains/sui/listAllCoins.js.map +1 -0
- package/dist/chains/sui/transactionResult.d.ts +59 -0
- package/dist/chains/sui/transactionResult.d.ts.map +1 -0
- package/dist/chains/sui/transactionResult.js +43 -0
- package/dist/chains/sui/transactionResult.js.map +1 -0
- package/dist/coin/balance/resolvers/sui.d.ts.map +1 -1
- package/dist/coin/balance/resolvers/sui.js +6 -3
- package/dist/coin/balance/resolvers/sui.js.map +1 -1
- package/dist/coin/token/metadata/resolvers/sui.d.ts +1 -1
- package/dist/coin/token/metadata/resolvers/sui.d.ts.map +1 -1
- package/dist/coin/token/metadata/resolvers/sui.js +6 -3
- package/dist/coin/token/metadata/resolvers/sui.js.map +1 -1
- package/dist/swap/general/jupiter/api/getJupiterSwapQuote.d.ts.map +1 -1
- package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js +2 -1
- package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js.map +1 -1
- package/dist/swap/native/NativeSwapChain.d.ts +2 -0
- package/dist/swap/native/NativeSwapChain.d.ts.map +1 -1
- package/dist/swap/native/NativeSwapChain.js +3 -0
- package/dist/swap/native/NativeSwapChain.js.map +1 -1
- package/dist/swap/native/asset/toNativeSwapAsset.d.ts.map +1 -1
- package/dist/swap/native/asset/toNativeSwapAsset.js +2 -5
- package/dist/swap/native/asset/toNativeSwapAsset.js.map +1 -1
- package/dist/swap/native/limitSwapAvailability.d.ts +21 -0
- package/dist/swap/native/limitSwapAvailability.d.ts.map +1 -0
- package/dist/swap/native/limitSwapAvailability.js +32 -0
- package/dist/swap/native/limitSwapAvailability.js.map +1 -0
- package/dist/swap/native/limitSwapInbound.d.ts +53 -0
- package/dist/swap/native/limitSwapInbound.d.ts.map +1 -0
- package/dist/swap/native/limitSwapInbound.js +73 -0
- package/dist/swap/native/limitSwapInbound.js.map +1 -0
- package/dist/swap/native/limitSwapMemo.d.ts +49 -0
- package/dist/swap/native/limitSwapMemo.d.ts.map +1 -1
- package/dist/swap/native/limitSwapMemo.js +80 -1
- package/dist/swap/native/limitSwapMemo.js.map +1 -1
- package/dist/tx/broadcast/resolvers/sui.d.ts +2 -8
- package/dist/tx/broadcast/resolvers/sui.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/sui.js +18 -17
- package/dist/tx/broadcast/resolvers/sui.js.map +1 -1
- package/dist/tx/broadcast/transientRetry.d.ts.map +1 -1
- package/dist/tx/broadcast/transientRetry.js +30 -2
- package/dist/tx/broadcast/transientRetry.js.map +1 -1
- package/dist/tx/broadcast/verifyBroadcastByHash.d.ts +8 -4
- package/dist/tx/broadcast/verifyBroadcastByHash.d.ts.map +1 -1
- package/dist/tx/broadcast/verifyBroadcastByHash.js +33 -11
- package/dist/tx/broadcast/verifyBroadcastByHash.js.map +1 -1
- package/dist/tx/hash/resolvers/sui.d.ts.map +1 -1
- package/dist/tx/hash/resolvers/sui.js +13 -3
- package/dist/tx/hash/resolvers/sui.js.map +1 -1
- package/dist/tx/status/resolvers/sui.d.ts.map +1 -1
- package/dist/tx/status/resolvers/sui.js +15 -6
- package/dist/tx/status/resolvers/sui.js.map +1 -1
- package/dist/tx/status/resolvers/tron.d.ts.map +1 -1
- package/dist/tx/status/resolvers/tron.js +35 -6
- package/dist/tx/status/resolvers/tron.js.map +1 -1
- package/package.json +27 -7
- package/dist/chains/cosmos/resolveCosmosGasFee.d.ts +0 -49
- package/dist/chains/cosmos/resolveCosmosGasFee.d.ts.map +0 -1
- package/dist/chains/cosmos/resolveCosmosGasFee.js +0 -35
- package/dist/chains/cosmos/resolveCosmosGasFee.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transientRetry.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/transientRetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAA;AAE/E;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;IACpC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAA;AAC1C,MAAM,yBAAyB,GAAG,GAAG,CAAA;AAErC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,WAAW;IACX,cAAc;IACd,YAAY;IACZ,cAAc;IACd,cAAc;IACd,UAAU;IACV,WAAW;IACX,aAAa;IACb,WAAW;IACX,WAAW;IACX,WAAW;CACZ,CAAC,CAAA;AAEF,MAAM,wBAAwB,GAAG;IAC/B,mBAAmB;IACnB,sBAAsB;IACtB,oBAAoB;IACpB,6BAA6B;IAC7B,wBAAwB;IACxB,gBAAgB;IAChB,mBAAmB;IACnB,qBAAqB;IACrB,0CAA0C;IAC1C,yBAAyB;IACzB,wBAAwB;IACxB,kBAAkB;IAClB,0BAA0B;IAC1B,sBAAsB;CACvB,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;AAE5F,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAW,EAAE;IAC3C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;QAC3D,OAAQ,KAA6B,CAAC,KAAK,CAAA;IAC7C,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAc,EAAW,EAAE;IACnE,IAAI,OAAO,GAAY,KAAK,CAAA;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAA;IAE/B,OAAO,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAEjB,IAAI,OAAO,YAAY,oBAAoB,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,OAAO,YAAY,iBAAiB,EAAE,CAAC;YACzC,OAAO,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAA;QACnF,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,GAAI,OAA8B,CAAC,IAAI,CAAA;YACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"transientRetry.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/transientRetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ type VerifyInput<T extends Chain> = {
|
|
|
5
5
|
tx: SigningOutput<T>;
|
|
6
6
|
error: unknown;
|
|
7
7
|
};
|
|
8
|
+
export declare const broadcastVerificationMaxAttempts = 4;
|
|
9
|
+
export declare const broadcastVerificationBaseDelayMs = 500;
|
|
8
10
|
/**
|
|
9
11
|
* Hash-verification safety net for broadcast resolvers.
|
|
10
12
|
*
|
|
@@ -15,14 +17,16 @@ type VerifyInput<T extends Chain> = {
|
|
|
15
17
|
* string matching is fragile across RPC providers and versions; the
|
|
16
18
|
* deterministic signal is the tx hash itself.
|
|
17
19
|
*
|
|
18
|
-
* This helper
|
|
20
|
+
* This helper derives the hash once, then retries `getTxStatus` briefly to
|
|
21
|
+
* allow for RPC propagation and indexing lag.
|
|
19
22
|
* If the status lookup confirms the transaction exists (pending or
|
|
20
23
|
* success), the broadcast error is swallowed. Otherwise the original
|
|
21
24
|
* error is re-thrown so the caller sees the real failure.
|
|
22
25
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
+
* A terminal failed status rethrows immediately. Unknown/not-found status and
|
|
27
|
+
* transient status lookup failures exhaust the bounded verification window
|
|
28
|
+
* before the original error is rethrown. Verification is a safety net, never
|
|
29
|
+
* a new failure mode.
|
|
26
30
|
*/
|
|
27
31
|
export declare const verifyBroadcastByHash: <T extends Chain>({ chain, tx, error }: VerifyInput<T>) => Promise<void>;
|
|
28
32
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBroadcastByHash.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verifyBroadcastByHash.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAItD,KAAK,WAAW,CAAC,CAAC,SAAS,KAAK,IAAI;IAClC,KAAK,EAAE,CAAC,CAAA;IACR,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IACpB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,eAAO,MAAM,gCAAgC,IAAI,CAAA;AACjD,eAAO,MAAM,gCAAgC,MAAM,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,qBAAqB,GAAU,CAAC,SAAS,KAAK,EAAE,sBAAsB,WAAW,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,IAAI,CAoC/G,CAAA"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { sleep } from '@vultisig/lib-utils/sleep';
|
|
1
2
|
import { getTxHash } from '../hash/index.js';
|
|
2
3
|
import { getTxStatus } from '../status/index.js';
|
|
4
|
+
export const broadcastVerificationMaxAttempts = 4;
|
|
5
|
+
export const broadcastVerificationBaseDelayMs = 500;
|
|
3
6
|
/**
|
|
4
7
|
* Hash-verification safety net for broadcast resolvers.
|
|
5
8
|
*
|
|
@@ -10,26 +13,45 @@ import { getTxStatus } from '../status/index.js';
|
|
|
10
13
|
* string matching is fragile across RPC providers and versions; the
|
|
11
14
|
* deterministic signal is the tx hash itself.
|
|
12
15
|
*
|
|
13
|
-
* This helper
|
|
16
|
+
* This helper derives the hash once, then retries `getTxStatus` briefly to
|
|
17
|
+
* allow for RPC propagation and indexing lag.
|
|
14
18
|
* If the status lookup confirms the transaction exists (pending or
|
|
15
19
|
* success), the broadcast error is swallowed. Otherwise the original
|
|
16
20
|
* error is re-thrown so the caller sees the real failure.
|
|
17
21
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
22
|
+
* A terminal failed status rethrows immediately. Unknown/not-found status and
|
|
23
|
+
* transient status lookup failures exhaust the bounded verification window
|
|
24
|
+
* before the original error is rethrown. Verification is a safety net, never
|
|
25
|
+
* a new failure mode.
|
|
21
26
|
*/
|
|
22
27
|
export const verifyBroadcastByHash = async ({ chain, tx, error }) => {
|
|
28
|
+
let hash;
|
|
23
29
|
try {
|
|
24
|
-
|
|
25
|
-
const result = await getTxStatus({ chain, hash });
|
|
26
|
-
const isKnownPending = result.status === 'pending' && result.isKnown !== false;
|
|
27
|
-
if (result.status === 'success' || isKnownPending) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
+
hash = await getTxHash({ chain, tx });
|
|
30
31
|
}
|
|
31
32
|
catch {
|
|
32
|
-
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
for (let attempt = 1; attempt <= broadcastVerificationMaxAttempts; attempt++) {
|
|
36
|
+
let result;
|
|
37
|
+
try {
|
|
38
|
+
result = await getTxStatus({ chain, hash });
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Retry status lookup failures within the same bounded window.
|
|
42
|
+
}
|
|
43
|
+
if (result) {
|
|
44
|
+
const isKnownPending = result.status === 'pending' && result.isKnown !== false;
|
|
45
|
+
if (result.status === 'success' || isKnownPending) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (result.status === 'error') {
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (attempt < broadcastVerificationMaxAttempts) {
|
|
53
|
+
await sleep(broadcastVerificationBaseDelayMs * attempt);
|
|
54
|
+
}
|
|
33
55
|
}
|
|
34
56
|
throw error;
|
|
35
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBroadcastByHash.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verifyBroadcastByHash.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/verifyBroadcastByHash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAIjD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAQvC,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAA;AACjD,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAkB,EAAiB,EAAE;IAClH,IAAI,IAAY,CAAA;IAEhB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,KAAK,CAAA;IACb,CAAC;IAED,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,gCAAgC,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7E,IAAI,MAA2D,CAAA;QAE/D,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAA;YAE9E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,EAAE,CAAC;gBAClD,OAAM;YACR,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,MAAK;YACP,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,gCAAgC,EAAE,CAAC;YAC/C,MAAM,KAAK,CAAC,gCAAgC,GAAG,OAAO,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IAED,MAAM,KAAK,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/hash/resolvers/sui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/hash/resolvers/sui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAkBvD,CAAA"}
|
|
@@ -1,9 +1,19 @@
|
|
|
1
|
+
import { fromBase64 } from '@mysten/sui/utils';
|
|
1
2
|
import { getSuiClient } from '@vultisig/core-chain/chains/sui/client';
|
|
3
|
+
import { getSuiResultTransaction } from '@vultisig/core-chain/chains/sui/transactionResult';
|
|
4
|
+
import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
|
|
2
5
|
export const getSuiTxHash = async ({ unsignedTx }) => {
|
|
3
6
|
const client = getSuiClient();
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
// `simulateTransaction` replaces the retired `dryRunTransactionBlock`. It
|
|
8
|
+
// takes raw BCS bytes rather than a base64 string, and the digest lives on
|
|
9
|
+
// the EFFECTS — the top-level `digest` is not populated for a simulation.
|
|
10
|
+
// A simulation whose execution fails still returns effects carrying the
|
|
11
|
+
// digest, which is exactly what broadcast hash-verification needs, so read
|
|
12
|
+
// it off whichever arm of the result union came back.
|
|
13
|
+
const result = await client.simulateTransaction({
|
|
14
|
+
transaction: fromBase64(unsignedTx),
|
|
15
|
+
include: { effects: true },
|
|
6
16
|
});
|
|
7
|
-
return transactionDigest;
|
|
17
|
+
return shouldBePresent(getSuiResultTransaction(result)?.effects?.transactionDigest, 'Sui simulated transaction digest');
|
|
8
18
|
};
|
|
9
19
|
//# sourceMappingURL=sui.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/hash/resolvers/sui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/hash/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAA;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAI5E,MAAM,CAAC,MAAM,YAAY,GAAmC,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;IACnF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAE7B,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,wEAAwE;IACxE,2EAA2E;IAC3E,sDAAsD;IACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC;QAC9C,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC;QACnC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC3B,CAAC,CAAA;IAEF,OAAO,eAAe,CACpB,uBAAuB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAC3D,kCAAkC,CACnC,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAM9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAoD3D,CAAA"}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
import { Chain } from '@vultisig/core-chain/Chain';
|
|
2
2
|
import { getSuiClient } from '@vultisig/core-chain/chains/sui/client';
|
|
3
|
+
import { getSuiResultTransaction, isSuiExecutionSuccess } from '@vultisig/core-chain/chains/sui/transactionResult';
|
|
3
4
|
import { chainFeeCoin } from '@vultisig/core-chain/coin/chainFeeCoin';
|
|
4
5
|
import { attempt } from '@vultisig/lib-utils/attempt';
|
|
5
6
|
export const getSuiTxStatus = async ({ hash }) => {
|
|
6
7
|
const client = getSuiClient();
|
|
7
|
-
|
|
8
|
+
// `getTransaction` replaces the retired `getTransactionBlock`. An unknown
|
|
9
|
+
// digest REJECTS ("missing digest") rather than resolving to null, which the
|
|
10
|
+
// attempt() wrapper already funnels into the not-known branch below.
|
|
11
|
+
const { data, error } = await attempt(client.getTransaction({
|
|
8
12
|
digest: hash,
|
|
9
|
-
|
|
13
|
+
include: { effects: true },
|
|
10
14
|
}));
|
|
11
15
|
if (error || !data) {
|
|
12
16
|
return { status: 'pending', isKnown: false };
|
|
13
17
|
}
|
|
14
|
-
const
|
|
15
|
-
if (
|
|
16
|
-
|
|
18
|
+
const transaction = getSuiResultTransaction(data);
|
|
19
|
+
if (!transaction) {
|
|
20
|
+
return { status: 'pending', isKnown: false };
|
|
21
|
+
}
|
|
22
|
+
if (isSuiExecutionSuccess(data)) {
|
|
23
|
+
const gasUsed = transaction.effects?.gasUsed;
|
|
17
24
|
const feeCoin = chainFeeCoin[Chain.Sui];
|
|
18
25
|
const receipt = gasUsed != null &&
|
|
19
26
|
typeof gasUsed === 'object' &&
|
|
@@ -30,7 +37,9 @@ export const getSuiTxStatus = async ({ hash }) => {
|
|
|
30
37
|
: undefined;
|
|
31
38
|
return { status: 'success', receipt };
|
|
32
39
|
}
|
|
33
|
-
|
|
40
|
+
// A `FailedTransaction` arm, or an explicit `status.success === false`, is a
|
|
41
|
+
// finalized on-chain failure (MoveAbort / InsufficientGas).
|
|
42
|
+
if (data.$kind === 'FailedTransaction' || transaction.status?.success === false) {
|
|
34
43
|
return { status: 'error' };
|
|
35
44
|
}
|
|
36
45
|
return { status: 'pending', isKnown: true };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAIrD,MAAM,CAAC,MAAM,cAAc,GAAqC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAE7B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CACnC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAA;AAClH,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAIrD,MAAM,CAAC,MAAM,cAAc,GAAqC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAE7B,0EAA0E;IAC1E,6EAA6E;IAC7E,qEAAqE;IACrE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CACnC,MAAM,CAAC,cAAc,CAAC;QACpB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC3B,CAAC,CACH,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAA;IAEjD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAA;QAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvC,MAAM,OAAO,GACX,OAAO,IAAI,IAAI;YACf,OAAO,OAAO,KAAK,QAAQ;YAC3B,iBAAiB,IAAI,OAAO;YAC5B,aAAa,IAAI,OAAO;YACxB,eAAe,IAAI,OAAO;YACxB,CAAC,CAAC;gBACE,SAAS,EACP,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;oBACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACvC,WAAW,EAAE,OAAO,CAAC,QAAQ;gBAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;aAC1B;YACH,CAAC,CAAC,SAAS,CAAA;QAEf,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;IACvC,CAAC;IAED,6EAA6E;IAC7E,4DAA4D;IAC5D,IAAI,IAAI,CAAC,KAAK,KAAK,mBAAmB,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;QAChF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC7C,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAM9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAM9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAmD9C,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CA8D7D,CAAA"}
|
|
@@ -7,6 +7,14 @@ import { tronRpcUrl } from '../../../chains/tron/config.js';
|
|
|
7
7
|
// Protobuf3 JSON serializes non-default enum values by name: successful TRC20 calls emit
|
|
8
8
|
// receipt.result="SUCCESS" (non-default, value=1). Native TRX transfers emit no receipt at all.
|
|
9
9
|
// Known failure codes verified against Tron protocol and live mainnet responses.
|
|
10
|
+
//
|
|
11
|
+
// sdk#1505 should-fix (S1): the allowlist-inversion below correctly means an UNKNOWN result
|
|
12
|
+
// never reads as false-success, but an unlisted contractResult still resolves 'pending' until
|
|
13
|
+
// the poll times out rather than promptly 'error'. The codes below complete the documented
|
|
14
|
+
// core/Tron.proto contractResult enum (every non-DEFAULT, non-SUCCESS member: values 2-16) so
|
|
15
|
+
// every KNOWN failure surfaces immediately instead of waiting out the poll. Kept in exact
|
|
16
|
+
// parity with the app's TRON_TERMINAL_FAILURE_RESULTS (vultiagent-app txVerifier.ts, app#2198)
|
|
17
|
+
// so a Tron failure buckets identically in the SDK resolver and the app tx-verifier.
|
|
10
18
|
const TRON_RECEIPT_FAILURE_RESULTS = new Set([
|
|
11
19
|
'FAILED',
|
|
12
20
|
'OUT_OF_ENERGY',
|
|
@@ -14,6 +22,17 @@ const TRON_RECEIPT_FAILURE_RESULTS = new Set([
|
|
|
14
22
|
'OUT_OF_TIME',
|
|
15
23
|
'BANDWIDTH_ERROR',
|
|
16
24
|
'ACCOUNT_FREEZED',
|
|
25
|
+
'TRANSFER_FAILED',
|
|
26
|
+
'BAD_JUMP_DESTINATION',
|
|
27
|
+
'OUT_OF_MEMORY',
|
|
28
|
+
'STACK_OVERFLOW',
|
|
29
|
+
'STACK_TOO_SMALL',
|
|
30
|
+
'STACK_TOO_LARGE',
|
|
31
|
+
'ILLEGAL_OPERATION',
|
|
32
|
+
'PRECOMPILED_CONTRACT',
|
|
33
|
+
'JVM_STACK_OVER_FLOW',
|
|
34
|
+
'UNKNOWN',
|
|
35
|
+
'INVALID_CODE',
|
|
17
36
|
]);
|
|
18
37
|
export const getTronTxStatus = async ({ hash }) => {
|
|
19
38
|
const url = `${tronRpcUrl}/wallet/gettransactioninfobyid`;
|
|
@@ -40,11 +59,6 @@ export const getTronTxStatus = async ({ hash }) => {
|
|
|
40
59
|
if (!tx.receipt) {
|
|
41
60
|
return { status: 'pending', isKnown: true };
|
|
42
61
|
}
|
|
43
|
-
// 3. receipt.result in terminal failure set → error
|
|
44
|
-
// receipt.result == null → success (native TRX send, no contract result)
|
|
45
|
-
// receipt.result == 'SUCCESS' → success (TRC20/smart-contract success, protobuf3 non-default enum)
|
|
46
|
-
// receipt.result unknown → treat as success (safer than false-failure for user)
|
|
47
|
-
const status = tx.receipt.result != null && TRON_RECEIPT_FAILURE_RESULTS.has(tx.receipt.result) ? 'error' : 'success';
|
|
48
62
|
const feeCoin = chainFeeCoin[Chain.Tron];
|
|
49
63
|
const receipt = tx.fee != null
|
|
50
64
|
? {
|
|
@@ -53,6 +67,21 @@ export const getTronTxStatus = async ({ hash }) => {
|
|
|
53
67
|
feeTicker: feeCoin.ticker,
|
|
54
68
|
}
|
|
55
69
|
: undefined;
|
|
56
|
-
|
|
70
|
+
// 3. receipt.result decides success vs failure vs unknown - an ALLOWLIST, not a deny-list:
|
|
71
|
+
// - in the known terminal failure set → error
|
|
72
|
+
// - null → success (native TRX send, no contract result)
|
|
73
|
+
// - 'SUCCESS' → success (TRC20/smart-contract success, protobuf3 non-default enum;
|
|
74
|
+
// pinned against NeO's live mainnet tx 1540b1b3, see tron.test.ts)
|
|
75
|
+
// - anything else (a receipt.result value we've never seen) → pending, NEVER success.
|
|
76
|
+
// The block is already final at this point, so this isn't "still processing" - it's an
|
|
77
|
+
// unrecognized terminal outcome, and a new Tron enum value must not be silently narrated
|
|
78
|
+
// as a successful fund movement just because it isn't on the known-failure list.
|
|
79
|
+
if (tx.receipt.result != null && TRON_RECEIPT_FAILURE_RESULTS.has(tx.receipt.result)) {
|
|
80
|
+
return { status: 'error', receipt };
|
|
81
|
+
}
|
|
82
|
+
if (tx.receipt.result == null || tx.receipt.result === 'SUCCESS') {
|
|
83
|
+
return { status: 'success', receipt };
|
|
84
|
+
}
|
|
85
|
+
return { status: 'pending', isKnown: true, receipt };
|
|
57
86
|
};
|
|
58
87
|
//# sourceMappingURL=tron.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tron.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAGxD,oGAAoG;AACpG,yFAAyF;AACzF,gGAAgG;AAChG,iFAAiF;AACjF,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,QAAQ;IACR,eAAe;IACf,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,iBAAiB;
|
|
1
|
+
{"version":3,"file":"tron.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAGxD,oGAAoG;AACpG,yFAAyF;AACzF,gGAAgG;AAChG,iFAAiF;AACjF,EAAE;AACF,4FAA4F;AAC5F,8FAA8F;AAC9F,2FAA2F;AAC3F,8FAA8F;AAC9F,0FAA0F;AAC1F,+FAA+F;AAC/F,qFAAqF;AACrF,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,QAAQ;IACR,eAAe;IACf,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,sBAAsB;IACtB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,sBAAsB;IACtB,qBAAqB;IACrB,SAAS;IACT,cAAc;CACf,CAAC,CAAA;AAmBF,MAAM,CAAC,MAAM,eAAe,GAAsC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACnF,MAAM,GAAG,GAAG,GAAG,UAAU,gCAAgC,CAAA;IAEzD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CACvC,QAAQ,CAAqB,GAAG,EAAE;QAChC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;KACtB,CAAC,CACH,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAChD,CAAC;IAED,IAAI,EAAE,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7C,CAAC;IAED,2CAA2C;IAC3C,2FAA2F;IAC3F,yFAAyF;IACzF,wFAAwF;IACxF,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,4EAA4E;IAC5E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,OAAO,GACX,EAAE,CAAC,GAAG,IAAI,IAAI;QACZ,CAAC,CAAC;YACE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;YACzB,WAAW,EAAE,OAAO,CAAC,QAAQ;YAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;SAC1B;QACH,CAAC,CAAC,SAAS,CAAA;IAEf,2FAA2F;IAC3F,iDAAiD;IACjD,4DAA4D;IAC5D,sFAAsF;IACtF,wEAAwE;IACxE,yFAAyF;IACzF,4FAA4F;IAC5F,8FAA8F;IAC9F,sFAAsF;IACtF,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,4BAA4B,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACrF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;IACrC,CAAC;IAED,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;IACvC,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AACtD,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/core-chain",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.29.0",
|
|
4
4
|
"description": "Blockchain chain logic shared across Vultisig clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -375,10 +375,10 @@
|
|
|
375
375
|
"import": "./dist/chains/cosmos/qbtc/waitForQbtcTxInclusion.js",
|
|
376
376
|
"default": "./dist/chains/cosmos/qbtc/waitForQbtcTxInclusion.js"
|
|
377
377
|
},
|
|
378
|
-
"./chains/cosmos/
|
|
379
|
-
"types": "./dist/chains/cosmos/
|
|
380
|
-
"import": "./dist/chains/cosmos/
|
|
381
|
-
"default": "./dist/chains/cosmos/
|
|
378
|
+
"./chains/cosmos/resolveCosmosGasLimit": {
|
|
379
|
+
"types": "./dist/chains/cosmos/resolveCosmosGasLimit.d.ts",
|
|
380
|
+
"import": "./dist/chains/cosmos/resolveCosmosGasLimit.js",
|
|
381
|
+
"default": "./dist/chains/cosmos/resolveCosmosGasLimit.js"
|
|
382
382
|
},
|
|
383
383
|
"./chains/cosmos/staking/lcdQueries": {
|
|
384
384
|
"types": "./dist/chains/cosmos/staking/lcdQueries.d.ts",
|
|
@@ -820,11 +820,21 @@
|
|
|
820
820
|
"import": "./dist/chains/sui/config.js",
|
|
821
821
|
"default": "./dist/chains/sui/config.js"
|
|
822
822
|
},
|
|
823
|
+
"./chains/sui/listAllCoins": {
|
|
824
|
+
"types": "./dist/chains/sui/listAllCoins.d.ts",
|
|
825
|
+
"import": "./dist/chains/sui/listAllCoins.js",
|
|
826
|
+
"default": "./dist/chains/sui/listAllCoins.js"
|
|
827
|
+
},
|
|
823
828
|
"./chains/sui/sign": {
|
|
824
829
|
"types": "./dist/chains/sui/sign.d.ts",
|
|
825
830
|
"import": "./dist/chains/sui/sign.js",
|
|
826
831
|
"default": "./dist/chains/sui/sign.js"
|
|
827
832
|
},
|
|
833
|
+
"./chains/sui/transactionResult": {
|
|
834
|
+
"types": "./dist/chains/sui/transactionResult.d.ts",
|
|
835
|
+
"import": "./dist/chains/sui/transactionResult.js",
|
|
836
|
+
"default": "./dist/chains/sui/transactionResult.js"
|
|
837
|
+
},
|
|
828
838
|
"./chains/thorchain/ruji/services/fetchMergeableTokenBalances": {
|
|
829
839
|
"types": "./dist/chains/thorchain/ruji/services/fetchMergeableTokenBalances.d.ts",
|
|
830
840
|
"import": "./dist/chains/thorchain/ruji/services/fetchMergeableTokenBalances.js",
|
|
@@ -1743,6 +1753,16 @@
|
|
|
1743
1753
|
"import": "./dist/swap/native/halts/getNativeSwapTradingHalt.js",
|
|
1744
1754
|
"default": "./dist/swap/native/halts/getNativeSwapTradingHalt.js"
|
|
1745
1755
|
},
|
|
1756
|
+
"./swap/native/limitSwapAvailability": {
|
|
1757
|
+
"types": "./dist/swap/native/limitSwapAvailability.d.ts",
|
|
1758
|
+
"import": "./dist/swap/native/limitSwapAvailability.js",
|
|
1759
|
+
"default": "./dist/swap/native/limitSwapAvailability.js"
|
|
1760
|
+
},
|
|
1761
|
+
"./swap/native/limitSwapInbound": {
|
|
1762
|
+
"types": "./dist/swap/native/limitSwapInbound.d.ts",
|
|
1763
|
+
"import": "./dist/swap/native/limitSwapInbound.js",
|
|
1764
|
+
"default": "./dist/swap/native/limitSwapInbound.js"
|
|
1765
|
+
},
|
|
1746
1766
|
"./swap/native/limitSwapMemo": {
|
|
1747
1767
|
"types": "./dist/swap/native/limitSwapMemo.d.ts",
|
|
1748
1768
|
"import": "./dist/swap/native/limitSwapMemo.js",
|
|
@@ -2149,13 +2169,13 @@
|
|
|
2149
2169
|
},
|
|
2150
2170
|
"dependencies": {
|
|
2151
2171
|
"7z-wasm": "^1.2.0",
|
|
2152
|
-
"@bufbuild/protobuf": "^2.
|
|
2172
|
+
"@bufbuild/protobuf": "^2.13.0",
|
|
2153
2173
|
"@cosmjs/amino": "^0.39.0",
|
|
2154
2174
|
"@cosmjs/encoding": "^0.39.0",
|
|
2155
2175
|
"@cosmjs/proto-signing": "^0.39.0",
|
|
2156
2176
|
"@cosmjs/stargate": "^0.39.0",
|
|
2157
2177
|
"@lifi/sdk": "^4.1.0",
|
|
2158
|
-
"@mysten/sui": "^2.
|
|
2178
|
+
"@mysten/sui": "^2.22.1",
|
|
2159
2179
|
"@noble/hashes": "^1.8.0",
|
|
2160
2180
|
"@polkadot/api": "^16.5.6",
|
|
2161
2181
|
"@polkadot/util": "^14.0.3",
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves the effective Cosmos gas limit and fee amount for a native send,
|
|
3
|
-
* honoring a relayed dynamic `gas_limit` when present.
|
|
4
|
-
*
|
|
5
|
-
* Shared by the signing-inputs resolver (what gets signed) and the fee-display
|
|
6
|
-
* resolver (what the user sees) so the shown and signed fee can never drift —
|
|
7
|
-
* the gas limit is part of the SignDoc, so both sides MUST agree.
|
|
8
|
-
*
|
|
9
|
-
* When the relayed limit exceeds the static per-chain limit, the fee amount is
|
|
10
|
-
* scaled proportionally with a ceiling (exact integer math) so the tx pays for
|
|
11
|
-
* the extra gas. Below or equal to the static limit, both values are left
|
|
12
|
-
* untouched, keeping the non-dynamic path byte-identical.
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* COSMOS-02: an IBC transfer (ICS-20 `MsgTransfer`, optionally PFM-forwarded
|
|
16
|
-
* via memo) does measurably more work on the source leg than a plain bank
|
|
17
|
-
* send — channel-state writes plus a relayer event — so the flat per-chain
|
|
18
|
-
* limit (calibrated for `MsgSend`) is undersized and can run out of gas
|
|
19
|
-
* mid-execution: the fee is spent, the transfer fails, and funds don't move
|
|
20
|
-
* but the fee is still burned. PFM hops are budgeted by each forwarding
|
|
21
|
-
* chain, not the source leg here, so ×2 headroom on the source leg is
|
|
22
|
-
* sufficient. Mirrors the app's own `IBC_GAS_MULTIPLIER`
|
|
23
|
-
* (vultiagent-app/src/services/cosmosTx.ts).
|
|
24
|
-
*/
|
|
25
|
-
export declare const IBC_GAS_MULTIPLIER = 2n;
|
|
26
|
-
type ResolveCosmosGasFeeInput = {
|
|
27
|
-
/** static per-chain fee amount already stored in `CosmosSpecific.gas` */
|
|
28
|
-
gas: bigint;
|
|
29
|
-
/** relayed `CosmosSpecific.gas_limit` (undefined / 0 → use the static limit) */
|
|
30
|
-
relayedGasLimit: bigint | undefined;
|
|
31
|
-
/** static per-chain gas limit (`getCosmosGasLimit`) */
|
|
32
|
-
staticGasLimit: bigint;
|
|
33
|
-
/**
|
|
34
|
-
* Whether this tx is an IBC transfer (`MsgTransfer`, optionally
|
|
35
|
-
* PFM-forwarded). Applies `IBC_GAS_MULTIPLIER` to both the static gas
|
|
36
|
-
* limit and its matching fee before resolving against a relayed limit.
|
|
37
|
-
* Defaults to `false` so every other Cosmos message (plain sends, wasm
|
|
38
|
-
* executes, staking) keeps paying the calibrated flat fee — a blanket
|
|
39
|
-
* multiplier on all Cosmos messages would overpay non-IBC sends.
|
|
40
|
-
*/
|
|
41
|
-
isIbcTransfer?: boolean;
|
|
42
|
-
};
|
|
43
|
-
type ResolveCosmosGasFeeResult = {
|
|
44
|
-
resolvedGasLimit: bigint;
|
|
45
|
-
feeAmount: bigint;
|
|
46
|
-
};
|
|
47
|
-
export declare const resolveCosmosGasFee: ({ gas, relayedGasLimit, staticGasLimit, isIbcTransfer, }: ResolveCosmosGasFeeInput) => ResolveCosmosGasFeeResult;
|
|
48
|
-
export {};
|
|
49
|
-
//# sourceMappingURL=resolveCosmosGasFee.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveCosmosGasFee.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/resolveCosmosGasFee.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAEpC,KAAK,wBAAwB,GAAG;IAC9B,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,eAAe,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAA;IACtB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,0DAKjC,wBAAwB,KAAG,yBAY7B,CAAA"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolves the effective Cosmos gas limit and fee amount for a native send,
|
|
3
|
-
* honoring a relayed dynamic `gas_limit` when present.
|
|
4
|
-
*
|
|
5
|
-
* Shared by the signing-inputs resolver (what gets signed) and the fee-display
|
|
6
|
-
* resolver (what the user sees) so the shown and signed fee can never drift —
|
|
7
|
-
* the gas limit is part of the SignDoc, so both sides MUST agree.
|
|
8
|
-
*
|
|
9
|
-
* When the relayed limit exceeds the static per-chain limit, the fee amount is
|
|
10
|
-
* scaled proportionally with a ceiling (exact integer math) so the tx pays for
|
|
11
|
-
* the extra gas. Below or equal to the static limit, both values are left
|
|
12
|
-
* untouched, keeping the non-dynamic path byte-identical.
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* COSMOS-02: an IBC transfer (ICS-20 `MsgTransfer`, optionally PFM-forwarded
|
|
16
|
-
* via memo) does measurably more work on the source leg than a plain bank
|
|
17
|
-
* send — channel-state writes plus a relayer event — so the flat per-chain
|
|
18
|
-
* limit (calibrated for `MsgSend`) is undersized and can run out of gas
|
|
19
|
-
* mid-execution: the fee is spent, the transfer fails, and funds don't move
|
|
20
|
-
* but the fee is still burned. PFM hops are budgeted by each forwarding
|
|
21
|
-
* chain, not the source leg here, so ×2 headroom on the source leg is
|
|
22
|
-
* sufficient. Mirrors the app's own `IBC_GAS_MULTIPLIER`
|
|
23
|
-
* (vultiagent-app/src/services/cosmosTx.ts).
|
|
24
|
-
*/
|
|
25
|
-
export const IBC_GAS_MULTIPLIER = 2n;
|
|
26
|
-
export const resolveCosmosGasFee = ({ gas, relayedGasLimit, staticGasLimit, isIbcTransfer = false, }) => {
|
|
27
|
-
const effectiveStaticGasLimit = isIbcTransfer ? staticGasLimit * IBC_GAS_MULTIPLIER : staticGasLimit;
|
|
28
|
-
const effectiveGas = isIbcTransfer ? gas * IBC_GAS_MULTIPLIER : gas;
|
|
29
|
-
const resolvedGasLimit = relayedGasLimit && relayedGasLimit > 0n ? relayedGasLimit : effectiveStaticGasLimit;
|
|
30
|
-
const feeAmount = resolvedGasLimit > effectiveStaticGasLimit
|
|
31
|
-
? (effectiveGas * resolvedGasLimit + effectiveStaticGasLimit - 1n) / effectiveStaticGasLimit
|
|
32
|
-
: effectiveGas;
|
|
33
|
-
return { resolvedGasLimit, feeAmount };
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=resolveCosmosGasFee.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveCosmosGasFee.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/resolveCosmosGasFee.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAyBpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,GAAG,EACH,eAAe,EACf,cAAc,EACd,aAAa,GAAG,KAAK,GACI,EAA6B,EAAE;IACxD,MAAM,uBAAuB,GAAG,aAAa,CAAC,CAAC,CAAC,cAAc,GAAG,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAA;IACpG,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAA;IAEnE,MAAM,gBAAgB,GAAG,eAAe,IAAI,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB,CAAA;IAE5G,MAAM,SAAS,GACb,gBAAgB,GAAG,uBAAuB;QACxC,CAAC,CAAC,CAAC,YAAY,GAAG,gBAAgB,GAAG,uBAAuB,GAAG,EAAE,CAAC,GAAG,uBAAuB;QAC5F,CAAC,CAAC,YAAY,CAAA;IAElB,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAA;AACxC,CAAC,CAAA"}
|