@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.
Files changed (85) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/dist/chains/cosmos/cosmosGasLimitRecord.js +3 -3
  3. package/dist/chains/cosmos/cosmosGasLimitRecord.js.map +1 -1
  4. package/dist/chains/cosmos/gas.d.ts +28 -1
  5. package/dist/chains/cosmos/gas.d.ts.map +1 -1
  6. package/dist/chains/cosmos/gas.js +37 -5
  7. package/dist/chains/cosmos/gas.js.map +1 -1
  8. package/dist/chains/cosmos/resolveCosmosGasLimit.d.ts +82 -0
  9. package/dist/chains/cosmos/resolveCosmosGasLimit.d.ts.map +1 -0
  10. package/dist/chains/cosmos/resolveCosmosGasLimit.js +71 -0
  11. package/dist/chains/cosmos/resolveCosmosGasLimit.js.map +1 -0
  12. package/dist/chains/cosmos/terraClassicTax.d.ts +68 -0
  13. package/dist/chains/cosmos/terraClassicTax.d.ts.map +1 -1
  14. package/dist/chains/cosmos/terraClassicTax.js +85 -0
  15. package/dist/chains/cosmos/terraClassicTax.js.map +1 -1
  16. package/dist/chains/sui/client.d.ts +11 -2
  17. package/dist/chains/sui/client.d.ts.map +1 -1
  18. package/dist/chains/sui/client.js +5 -4
  19. package/dist/chains/sui/client.js.map +1 -1
  20. package/dist/chains/sui/config.d.ts +28 -0
  21. package/dist/chains/sui/config.d.ts.map +1 -1
  22. package/dist/chains/sui/config.js +27 -0
  23. package/dist/chains/sui/config.js.map +1 -1
  24. package/dist/chains/sui/listAllCoins.d.ts +44 -0
  25. package/dist/chains/sui/listAllCoins.d.ts.map +1 -0
  26. package/dist/chains/sui/listAllCoins.js +43 -0
  27. package/dist/chains/sui/listAllCoins.js.map +1 -0
  28. package/dist/chains/sui/transactionResult.d.ts +59 -0
  29. package/dist/chains/sui/transactionResult.d.ts.map +1 -0
  30. package/dist/chains/sui/transactionResult.js +43 -0
  31. package/dist/chains/sui/transactionResult.js.map +1 -0
  32. package/dist/coin/balance/resolvers/sui.d.ts.map +1 -1
  33. package/dist/coin/balance/resolvers/sui.js +6 -3
  34. package/dist/coin/balance/resolvers/sui.js.map +1 -1
  35. package/dist/coin/token/metadata/resolvers/sui.d.ts +1 -1
  36. package/dist/coin/token/metadata/resolvers/sui.d.ts.map +1 -1
  37. package/dist/coin/token/metadata/resolvers/sui.js +6 -3
  38. package/dist/coin/token/metadata/resolvers/sui.js.map +1 -1
  39. package/dist/swap/general/jupiter/api/getJupiterSwapQuote.d.ts.map +1 -1
  40. package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js +2 -1
  41. package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js.map +1 -1
  42. package/dist/swap/native/NativeSwapChain.d.ts +2 -0
  43. package/dist/swap/native/NativeSwapChain.d.ts.map +1 -1
  44. package/dist/swap/native/NativeSwapChain.js +3 -0
  45. package/dist/swap/native/NativeSwapChain.js.map +1 -1
  46. package/dist/swap/native/asset/toNativeSwapAsset.d.ts.map +1 -1
  47. package/dist/swap/native/asset/toNativeSwapAsset.js +2 -5
  48. package/dist/swap/native/asset/toNativeSwapAsset.js.map +1 -1
  49. package/dist/swap/native/limitSwapAvailability.d.ts +21 -0
  50. package/dist/swap/native/limitSwapAvailability.d.ts.map +1 -0
  51. package/dist/swap/native/limitSwapAvailability.js +32 -0
  52. package/dist/swap/native/limitSwapAvailability.js.map +1 -0
  53. package/dist/swap/native/limitSwapInbound.d.ts +53 -0
  54. package/dist/swap/native/limitSwapInbound.d.ts.map +1 -0
  55. package/dist/swap/native/limitSwapInbound.js +73 -0
  56. package/dist/swap/native/limitSwapInbound.js.map +1 -0
  57. package/dist/swap/native/limitSwapMemo.d.ts +49 -0
  58. package/dist/swap/native/limitSwapMemo.d.ts.map +1 -1
  59. package/dist/swap/native/limitSwapMemo.js +80 -1
  60. package/dist/swap/native/limitSwapMemo.js.map +1 -1
  61. package/dist/tx/broadcast/resolvers/sui.d.ts +2 -8
  62. package/dist/tx/broadcast/resolvers/sui.d.ts.map +1 -1
  63. package/dist/tx/broadcast/resolvers/sui.js +18 -17
  64. package/dist/tx/broadcast/resolvers/sui.js.map +1 -1
  65. package/dist/tx/broadcast/transientRetry.d.ts.map +1 -1
  66. package/dist/tx/broadcast/transientRetry.js +30 -2
  67. package/dist/tx/broadcast/transientRetry.js.map +1 -1
  68. package/dist/tx/broadcast/verifyBroadcastByHash.d.ts +8 -4
  69. package/dist/tx/broadcast/verifyBroadcastByHash.d.ts.map +1 -1
  70. package/dist/tx/broadcast/verifyBroadcastByHash.js +33 -11
  71. package/dist/tx/broadcast/verifyBroadcastByHash.js.map +1 -1
  72. package/dist/tx/hash/resolvers/sui.d.ts.map +1 -1
  73. package/dist/tx/hash/resolvers/sui.js +13 -3
  74. package/dist/tx/hash/resolvers/sui.js.map +1 -1
  75. package/dist/tx/status/resolvers/sui.d.ts.map +1 -1
  76. package/dist/tx/status/resolvers/sui.js +15 -6
  77. package/dist/tx/status/resolvers/sui.js.map +1 -1
  78. package/dist/tx/status/resolvers/tron.d.ts.map +1 -1
  79. package/dist/tx/status/resolvers/tron.js +35 -6
  80. package/dist/tx/status/resolvers/tron.js.map +1 -1
  81. package/package.json +27 -7
  82. package/dist/chains/cosmos/resolveCosmosGasFee.d.ts +0 -49
  83. package/dist/chains/cosmos/resolveCosmosGasFee.d.ts.map +0 -1
  84. package/dist/chains/cosmos/resolveCosmosGasFee.js +0 -35
  85. 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":"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"}
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 re-runs `getTxHash` + `getTxStatus` on the signed output.
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
- * Any failure inside verification (hash/status RPC down, tx not indexed
24
- * yet, network error) falls through to re-throwing the original error
25
- * verification is a safety net, never a new failure mode.
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":"AAAA,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;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qBAAqB,GAAU,CAAC,SAAS,KAAK,EAAE,sBAAsB,WAAW,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,IAAI,CAa/G,CAAA"}
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 re-runs `getTxHash` + `getTxStatus` on the signed output.
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
- * Any failure inside verification (hash/status RPC down, tx not indexed
19
- * yet, network error) falls through to re-throwing the original error
20
- * verification is a safety net, never a new failure mode.
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
- const hash = await getTxHash({ chain, tx });
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
- // fall through — verification unavailable, rethrow the original error
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":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAQvC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAmB,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAkB,EAAiB,EAAE;IAClH,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;QAC3C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACjD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAA;QAE9E,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,EAAE,CAAC;YAClD,OAAM;QACR,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IACD,MAAM,KAAK,CAAA;AACb,CAAC,CAAA"}
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAUvD,CAAA"}
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
- const { effects: { transactionDigest }, } = await client.dryRunTransactionBlock({
5
- transactionBlock: unsignedTx,
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":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AAIrE,MAAM,CAAC,MAAM,YAAY,GAAmC,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;IACnF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAE7B,MAAM,EACJ,OAAO,EAAE,EAAE,iBAAiB,EAAE,GAC/B,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC;QACtC,gBAAgB,EAAE,UAAU;KAC7B,CAAC,CAAA;IAEF,OAAO,iBAAiB,CAAA;AAC1B,CAAC,CAAA"}
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;AAK9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,CA2C3D,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
- const { data, error } = await attempt(client.getTransactionBlock({
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
- options: { showEffects: true },
13
+ include: { effects: true },
10
14
  }));
11
15
  if (error || !data) {
12
16
  return { status: 'pending', isKnown: false };
13
17
  }
14
- const effectsStatus = data.effects?.status?.status;
15
- if (effectsStatus === 'success') {
16
- const gasUsed = data.effects?.gasUsed;
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
- if (effectsStatus === 'failure') {
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,mBAAmB,CAAC;QACzB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;KAC/B,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,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAA;IAElD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAA;QACrC,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,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,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
+ {"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;AAgC9C,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAkD7D,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
- return { status, receipt };
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;CAClB,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,oDAAoD;IACpD,4EAA4E;IAC5E,sGAAsG;IACtG,mFAAmF;IACnF,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,4BAA4B,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IACrH,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,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC,CAAA"}
1
+ {"version":3,"file":"tron.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/tron.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vultisig/core-chain",
3
- "version": "2.27.0",
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/resolveCosmosGasFee": {
379
- "types": "./dist/chains/cosmos/resolveCosmosGasFee.d.ts",
380
- "import": "./dist/chains/cosmos/resolveCosmosGasFee.js",
381
- "default": "./dist/chains/cosmos/resolveCosmosGasFee.js"
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.12.0",
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.20.3",
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"}