@vultisig/core-mpc 1.12.0 → 1.13.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 (74) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/dist/chains/cosmos/qbtc/QBTCHelper.js +11 -0
  3. package/dist/chains/cosmos/qbtc/QBTCHelper.js.map +1 -1
  4. package/dist/chains/cosmos/qbtc/QBTCTx.d.ts +1 -1
  5. package/dist/chains/cosmos/qbtc/QBTCTx.d.ts.map +1 -1
  6. package/dist/chains/cosmos/qbtc/QBTCTx.js +8 -2
  7. package/dist/chains/cosmos/qbtc/QBTCTx.js.map +1 -1
  8. package/dist/keysign/chainSpecific/resolvers/cosmos/index.d.ts.map +1 -1
  9. package/dist/keysign/chainSpecific/resolvers/cosmos/index.js +6 -4
  10. package/dist/keysign/chainSpecific/resolvers/cosmos/index.js.map +1 -1
  11. package/dist/keysign/chainSpecific/resolvers/maya.js +2 -2
  12. package/dist/keysign/chainSpecific/resolvers/maya.js.map +1 -1
  13. package/dist/keysign/chainSpecific/resolvers/sui/index.d.ts.map +1 -1
  14. package/dist/keysign/chainSpecific/resolvers/sui/index.js +51 -6
  15. package/dist/keysign/chainSpecific/resolvers/sui/index.js.map +1 -1
  16. package/dist/keysign/chainSpecific/resolvers/thor.js +2 -2
  17. package/dist/keysign/chainSpecific/resolvers/thor.js.map +1 -1
  18. package/dist/keysign/signingInputs/index.d.ts.map +1 -1
  19. package/dist/keysign/signingInputs/index.js +12 -0
  20. package/dist/keysign/signingInputs/index.js.map +1 -1
  21. package/dist/keysign/signingInputs/resolvers/cardano.d.ts.map +1 -1
  22. package/dist/keysign/signingInputs/resolvers/cardano.js +17 -2
  23. package/dist/keysign/signingInputs/resolvers/cardano.js.map +1 -1
  24. package/dist/keysign/signingInputs/resolvers/cosmos/index.d.ts.map +1 -1
  25. package/dist/keysign/signingInputs/resolvers/cosmos/index.js +6 -2
  26. package/dist/keysign/signingInputs/resolvers/cosmos/index.js.map +1 -1
  27. package/dist/keysign/signingInputs/resolvers/evm/index.d.ts.map +1 -1
  28. package/dist/keysign/signingInputs/resolvers/evm/index.js +37 -0
  29. package/dist/keysign/signingInputs/resolvers/evm/index.js.map +1 -1
  30. package/dist/keysign/signingInputs/resolvers/solana/index.d.ts.map +1 -1
  31. package/dist/keysign/signingInputs/resolvers/solana/index.js +43 -14
  32. package/dist/keysign/signingInputs/resolvers/solana/index.js.map +1 -1
  33. package/dist/keysign/signingInputs/resolvers/solana/rawTx.d.ts +52 -0
  34. package/dist/keysign/signingInputs/resolvers/solana/rawTx.d.ts.map +1 -0
  35. package/dist/keysign/signingInputs/resolvers/solana/rawTx.js +84 -0
  36. package/dist/keysign/signingInputs/resolvers/solana/rawTx.js.map +1 -0
  37. package/dist/keysign/signingInputs/resolvers/sui.d.ts.map +1 -1
  38. package/dist/keysign/signingInputs/resolvers/sui.js +13 -6
  39. package/dist/keysign/signingInputs/resolvers/sui.js.map +1 -1
  40. package/dist/keysign/signingInputs/resolvers/ton/jetton.d.ts.map +1 -1
  41. package/dist/keysign/signingInputs/resolvers/ton/jetton.js +4 -6
  42. package/dist/keysign/signingInputs/resolvers/ton/jetton.js.map +1 -1
  43. package/dist/keysign/signingInputs/resolvers/ton/native.d.ts +2 -0
  44. package/dist/keysign/signingInputs/resolvers/ton/native.d.ts.map +1 -1
  45. package/dist/keysign/signingInputs/resolvers/ton/native.js +25 -4
  46. package/dist/keysign/signingInputs/resolvers/ton/native.js.map +1 -1
  47. package/dist/keysign/suiCoinSelection.d.ts +20 -0
  48. package/dist/keysign/suiCoinSelection.d.ts.map +1 -0
  49. package/dist/keysign/suiCoinSelection.js +88 -0
  50. package/dist/keysign/suiCoinSelection.js.map +1 -0
  51. package/dist/keysign/swap/assertNativeSwapReadyForBroadcast.d.ts +26 -0
  52. package/dist/keysign/swap/assertNativeSwapReadyForBroadcast.d.ts.map +1 -0
  53. package/dist/keysign/swap/assertNativeSwapReadyForBroadcast.js +96 -0
  54. package/dist/keysign/swap/assertNativeSwapReadyForBroadcast.js.map +1 -0
  55. package/dist/keysign/swap/build.d.ts.map +1 -1
  56. package/dist/keysign/swap/build.js +5 -1
  57. package/dist/keysign/swap/build.js.map +1 -1
  58. package/dist/keysign/swap/buildLimitSwapKeysignPayload.d.ts +70 -0
  59. package/dist/keysign/swap/buildLimitSwapKeysignPayload.d.ts.map +1 -0
  60. package/dist/keysign/swap/buildLimitSwapKeysignPayload.js +160 -0
  61. package/dist/keysign/swap/buildLimitSwapKeysignPayload.js.map +1 -0
  62. package/dist/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.d.ts.map +1 -1
  63. package/dist/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.js +12 -0
  64. package/dist/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.js.map +1 -1
  65. package/dist/swap/utils/getSwapTrackingUrl.d.ts.map +1 -1
  66. package/dist/swap/utils/getSwapTrackingUrl.js +5 -60
  67. package/dist/swap/utils/getSwapTrackingUrl.js.map +1 -1
  68. package/dist/tx/compile/compileTx.d.ts.map +1 -1
  69. package/dist/tx/compile/compileTx.js +28 -0
  70. package/dist/tx/compile/compileTx.js.map +1 -1
  71. package/dist/tx/preSigningHashes/index.d.ts.map +1 -1
  72. package/dist/tx/preSigningHashes/index.js +10 -0
  73. package/dist/tx/preSigningHashes/index.js.map +1 -1
  74. package/package.json +23 -3
@@ -1,7 +1,6 @@
1
1
  import { Buffer } from 'buffer';
2
2
  import { numberToEvenHex } from '@vultisig/lib-utils/hex/numberToHex';
3
3
  import { TW } from '@trustwallet/wallet-core';
4
- import Long from 'long';
5
4
  /** TON cell limit is 1023 bits; comment uses ~32 bits opcode + text. Max ~123 bytes. */
6
5
  const tonCommentMaxBytes = 123;
7
6
  const tonCommentTooLongError = `TON memo exceeds ${tonCommentMaxBytes} bytes and would be truncated; reject oversized memos upstream`;
@@ -18,15 +17,37 @@ export const validateTonComment = (memo) => {
18
17
  throw new Error(`TON memo must be at most ${tonCommentMaxBytes} bytes (got ${bytes.length})`);
19
18
  }
20
19
  };
20
+ const tonUnsignedDecimalRegex = /^\d+$/;
21
+ const tonMaxAmount = (1n << 120n) - 1n;
22
+ const tonMaxAmountDecimal = tonMaxAmount.toString();
23
+ export const tonAmountToBytes = (amount) => {
24
+ if (typeof amount === 'string' && !tonUnsignedDecimalRegex.test(amount)) {
25
+ throw new Error('TON amount must be a non-negative integer');
26
+ }
27
+ const normalizedAmount = typeof amount === 'string' ? amount.replace(/^0+(?=\d)/, '') : amount;
28
+ if (typeof normalizedAmount === 'string' &&
29
+ (normalizedAmount.length > tonMaxAmountDecimal.length ||
30
+ (normalizedAmount.length === tonMaxAmountDecimal.length && normalizedAmount > tonMaxAmountDecimal))) {
31
+ throw new Error('TON amount exceeds the VarUInteger 16 maximum');
32
+ }
33
+ const value = typeof normalizedAmount === 'bigint' ? normalizedAmount : BigInt(normalizedAmount);
34
+ if (value < 0n) {
35
+ throw new Error('TON amount must be a non-negative integer');
36
+ }
37
+ if (value > tonMaxAmount) {
38
+ throw new Error('TON amount exceeds the VarUInteger 16 maximum');
39
+ }
40
+ return Buffer.from(numberToEvenHex(value), 'hex');
41
+ };
21
42
  export const buildNativeTonTransfer = ({ keysignPayload, bounceable, sendMaxAmount, }) => {
22
43
  const mode = (sendMaxAmount
23
44
  ? TW.TheOpenNetwork.Proto.SendMode.ATTACH_ALL_CONTRACT_BALANCE
24
45
  : TW.TheOpenNetwork.Proto.SendMode.PAY_FEES_SEPARATELY) |
25
46
  TW.TheOpenNetwork.Proto.SendMode.IGNORE_ACTION_PHASE_ERRORS;
26
- const amount = sendMaxAmount ? Long.ZERO : Long.fromString(keysignPayload.toAmount);
47
+ const amount = sendMaxAmount ? 0n : keysignPayload.toAmount;
27
48
  return TW.TheOpenNetwork.Proto.Transfer.create({
28
49
  dest: keysignPayload.toAddress,
29
- amount: Buffer.from(numberToEvenHex(amount), 'hex'),
50
+ amount: tonAmountToBytes(amount),
30
51
  bounceable,
31
52
  comment: toSafeComment(keysignPayload.memo || ''),
32
53
  mode,
@@ -36,7 +57,7 @@ export const buildNativeTonTransferFromMessage = ({ to, amount, payload = '', st
36
57
  const mode = TW.TheOpenNetwork.Proto.SendMode.PAY_FEES_SEPARATELY | TW.TheOpenNetwork.Proto.SendMode.IGNORE_ACTION_PHASE_ERRORS;
37
58
  return TW.TheOpenNetwork.Proto.Transfer.create({
38
59
  dest: to,
39
- amount: Buffer.from(numberToEvenHex(Long.fromString(amount)), 'hex'),
60
+ amount: tonAmountToBytes(amount),
40
61
  bounceable,
41
62
  comment: '',
42
63
  customPayload: payload || undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/ton/native.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/ton/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAA;AAgB7C,wFAAwF;AACxF,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAE9B,MAAM,sBAAsB,GAAG,oBAAoB,kBAAkB,gEAAgE,CAAA;AAErI,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAe,EAAU,EAAE;IACvD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC/C,IAAI,KAAK,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACzC,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAQ,EAAE;IACvD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,4BAA4B,kBAAkB,eAAe,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IAC/F,CAAC;AACH,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,OAAO,CAAA;AACvC,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;AACtC,MAAM,mBAAmB,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAA;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAuB,EAAU,EAAE;IAClE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC9D,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9F,IACE,OAAO,gBAAgB,KAAK,QAAQ;QACpC,CAAC,gBAAgB,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM;YACnD,CAAC,gBAAgB,CAAC,MAAM,KAAK,mBAAmB,CAAC,MAAM,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,EACrG,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAChG,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC9D,CAAC;IACD,IAAI,KAAK,GAAG,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,cAAc,EACd,UAAU,EACV,aAAa,GACe,EAAoC,EAAE;IAClE,MAAM,IAAI,GACR,CAAC,aAAa;QACZ,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B;QAC9D,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACzD,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAA;IAE7D,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAA;IAE3D,OAAO,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC7C,IAAI,EAAE,cAAc,CAAC,SAAS;QAC9B,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAChC,UAAU;QACV,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC;QACjD,IAAI;KACL,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,EAChD,EAAE,EACF,MAAM,EACN,OAAO,GAAG,EAAE,EACZ,SAAS,EACT,UAAU,GAC6B,EAAoC,EAAE;IAC7E,MAAM,IAAI,GACR,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAA;IAEpH,OAAO,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC7C,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAChC,UAAU;QACV,OAAO,EAAE,EAAE;QACX,aAAa,EAAE,OAAO,IAAI,SAAS;QACnC,SAAS,EAAE,SAAS,IAAI,SAAS;QACjC,IAAI;KACL,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { SuiCoin } from '../types/vultisig/keysign/v1/blockchain_specific_pb.js';
2
+ export declare const suiNativeCoinType = "0x2::sui::SUI";
3
+ export declare const maxSuiInputCoinObjects = 255;
4
+ export declare const suiGasCandidateObjectCount = 5;
5
+ export declare const normalizeSuiCoinType: (coinType: string) => string;
6
+ export declare const isSameSuiCoinType: (lhs: string, rhs: string) => boolean;
7
+ export declare const isNativeSuiCoin: ({ coinType }: Pick<SuiCoin, "coinType">) => boolean;
8
+ export declare const getSuiCoinBalance: ({ balance }: Pick<SuiCoin, "balance">) => bigint;
9
+ export declare const selectSuiInputCoins: (coins: readonly SuiCoin[], target: bigint, maxObjects?: number) => SuiCoin[];
10
+ export declare const selectSuiGasObject: (coins: readonly SuiCoin[], gasBudget: bigint) => SuiCoin | undefined;
11
+ type SelectSuiPayloadCoinsInput = {
12
+ coins: readonly SuiCoin[];
13
+ isNativeToken: boolean;
14
+ coinType?: string;
15
+ amount: bigint;
16
+ gasBudget: bigint;
17
+ };
18
+ export declare const selectSuiPayloadCoins: ({ coins, isNativeToken, coinType, amount, gasBudget, }: SelectSuiPayloadCoinsInput) => SuiCoin[];
19
+ export {};
20
+ //# sourceMappingURL=suiCoinSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suiCoinSelection.d.ts","sourceRoot":"","sources":["../../../../../packages/core/mpc/keysign/suiCoinSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qDAAqD,CAAA;AAE7E,eAAO,MAAM,iBAAiB,kBAAkB,CAAA;AAEhD,eAAO,MAAM,sBAAsB,MAAM,CAAA;AACzC,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAS3C,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,KAAG,MAOvD,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,OACJ,CAAA;AAEzD,eAAO,MAAM,eAAe,GAAI,cAAc,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAG,OAC1B,CAAA;AAEhD,eAAO,MAAM,iBAAiB,GAAI,aAAa,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,KAAG,MAMzE,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,OAAO,SAAS,OAAO,EAAE,EACzB,QAAQ,MAAM,EACd,mBAAmC,KAClC,OAAO,EA0BT,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,OAAO,EAAE,EAAE,WAAW,MAAM,KAAG,OAAO,GAAG,SAkB3F,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;IACzB,aAAa,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,wDAMnC,0BAA0B,KAAG,OAAO,EAuBtC,CAAA"}
@@ -0,0 +1,88 @@
1
+ export const suiNativeCoinType = '0x2::sui::SUI';
2
+ export const maxSuiInputCoinObjects = 255;
3
+ export const suiGasCandidateObjectCount = 5;
4
+ const normalizeSuiAddress = (address) => {
5
+ const lowered = address.toLowerCase();
6
+ const hex = lowered.startsWith('0x') ? lowered.slice(2) : lowered;
7
+ const trimmed = hex.replace(/^0+/, '');
8
+ return `0x${trimmed || '0'}`;
9
+ };
10
+ export const normalizeSuiCoinType = (coinType) => {
11
+ const addressEnd = coinType.indexOf('::');
12
+ if (addressEnd < 0) {
13
+ return normalizeSuiAddress(coinType);
14
+ }
15
+ return `${normalizeSuiAddress(coinType.slice(0, addressEnd))}${coinType.slice(addressEnd)}`;
16
+ };
17
+ export const isSameSuiCoinType = (lhs, rhs) => normalizeSuiCoinType(lhs) === normalizeSuiCoinType(rhs);
18
+ export const isNativeSuiCoin = ({ coinType }) => isSameSuiCoinType(coinType, suiNativeCoinType);
19
+ export const getSuiCoinBalance = ({ balance }) => {
20
+ try {
21
+ return BigInt(balance || '0');
22
+ }
23
+ catch {
24
+ return 0n;
25
+ }
26
+ };
27
+ export const selectSuiInputCoins = (coins, target, maxObjects = maxSuiInputCoinObjects) => {
28
+ const sorted = [...coins].sort((lhs, rhs) => {
29
+ const lhsBalance = getSuiCoinBalance(lhs);
30
+ const rhsBalance = getSuiCoinBalance(rhs);
31
+ if (lhsBalance !== rhsBalance) {
32
+ return lhsBalance > rhsBalance ? -1 : 1;
33
+ }
34
+ return lhs.coinObjectId.localeCompare(rhs.coinObjectId);
35
+ });
36
+ const selected = [];
37
+ let accumulated = 0n;
38
+ for (const coin of sorted) {
39
+ if (selected.length > 0 && accumulated >= target)
40
+ break;
41
+ if (selected.length >= maxObjects)
42
+ break;
43
+ selected.push(coin);
44
+ accumulated += getSuiCoinBalance(coin);
45
+ }
46
+ if (accumulated < target) {
47
+ throw new Error(`Insufficient Sui coin balance to cover ${target.toString()}`);
48
+ }
49
+ return selected;
50
+ };
51
+ export const selectSuiGasObject = (coins, gasBudget) => {
52
+ const nativeCoins = coins.filter(isNativeSuiCoin);
53
+ if (nativeCoins.length === 0)
54
+ return undefined;
55
+ const covering = nativeCoins.filter(coin => getSuiCoinBalance(coin) >= gasBudget);
56
+ if (covering.length > 0) {
57
+ return covering.sort((lhs, rhs) => {
58
+ const lhsBalance = getSuiCoinBalance(lhs);
59
+ const rhsBalance = getSuiCoinBalance(rhs);
60
+ if (lhsBalance !== rhsBalance) {
61
+ return lhsBalance < rhsBalance ? -1 : 1;
62
+ }
63
+ return lhs.coinObjectId.localeCompare(rhs.coinObjectId);
64
+ })[0];
65
+ }
66
+ throw new Error(`Insufficient SUI balance to cover gas budget ${gasBudget.toString()}`);
67
+ };
68
+ export const selectSuiPayloadCoins = ({ coins, isNativeToken, coinType, amount, gasBudget, }) => {
69
+ const nativeCoins = coins.filter(isNativeSuiCoin);
70
+ if (isNativeToken) {
71
+ return selectSuiInputCoins(nativeCoins, amount + gasBudget);
72
+ }
73
+ const tokenType = coinType || suiNativeCoinType;
74
+ const tokenCoins = coins.filter(coin => isSameSuiCoinType(coin.coinType, tokenType));
75
+ const selectedTokens = selectSuiInputCoins(tokenCoins, amount);
76
+ const gasCandidates = [...nativeCoins]
77
+ .sort((lhs, rhs) => {
78
+ const lhsBalance = getSuiCoinBalance(lhs);
79
+ const rhsBalance = getSuiCoinBalance(rhs);
80
+ if (lhsBalance !== rhsBalance) {
81
+ return lhsBalance > rhsBalance ? -1 : 1;
82
+ }
83
+ return lhs.coinObjectId.localeCompare(rhs.coinObjectId);
84
+ })
85
+ .slice(0, suiGasCandidateObjectCount);
86
+ return [...selectedTokens, ...gasCandidates];
87
+ };
88
+ //# sourceMappingURL=suiCoinSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suiCoinSelection.js","sourceRoot":"","sources":["../../../../../packages/core/mpc/keysign/suiCoinSelection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ import { type ThorchainInboundAddress } from '@vultisig/core-chain/chains/cosmos/thor/getThorchainInboundAddress';
3
+ import { type NativeSwapChain } from '@vultisig/core-chain/swap/native/NativeSwapChain';
4
+ import type { KeysignPayload } from '../../types/vultisig/keysign/v1/keysign_message_pb.js';
5
+ type GetNativeSwapInboundAddresses = (nativeChain: NativeSwapChain) => Promise<ThorchainInboundAddress[]>;
6
+ export type NativeSwapBroadcastGuardInput = {
7
+ chain: Chain;
8
+ keysignPayload: KeysignPayload;
9
+ getInboundAddresses?: GetNativeSwapInboundAddresses;
10
+ now?: () => number;
11
+ };
12
+ export type NativeSwapBroadcastGuardErrorCode = 'invalid_config' | 'invalid_vault' | 'network_error' | 'unsupported_chain';
13
+ export declare class NativeSwapBroadcastGuardError extends Error {
14
+ readonly code: NativeSwapBroadcastGuardErrorCode;
15
+ constructor(code: NativeSwapBroadcastGuardErrorCode, message: string);
16
+ }
17
+ /**
18
+ * Revalidate a native-swap payload immediately before signing or broadcast.
19
+ *
20
+ * This helper is intentionally owned by core-mpc: shipping wallets already
21
+ * consume the keysign payload and core packages directly, while the SDK facade
22
+ * delegates here to keep one guard implementation across every client.
23
+ */
24
+ export declare const assertNativeSwapReadyForBroadcast: ({ chain, keysignPayload, getInboundAddresses, now, }: NativeSwapBroadcastGuardInput) => Promise<void>;
25
+ export {};
26
+ //# sourceMappingURL=assertNativeSwapReadyForBroadcast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertNativeSwapReadyForBroadcast.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/swap/assertNativeSwapReadyForBroadcast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oEAAoE,CAAA;AAC3E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,kDAAkD,CAAA;AAIzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAA;AAGxF,KAAK,6BAA6B,GAAG,CAAC,WAAW,EAAE,eAAe,KAAK,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAA;AAEzG,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,KAAK,CAAA;IACZ,cAAc,EAAE,cAAc,CAAA;IAC9B,mBAAmB,CAAC,EAAE,6BAA6B,CAAA;IACnD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,iCAAiC,GACzC,gBAAgB,GAChB,eAAe,GACf,eAAe,GACf,mBAAmB,CAAA;AAEvB,qBAAa,6BAA8B,SAAQ,KAAK;IAEpD,QAAQ,CAAC,IAAI,EAAE,iCAAiC;gBAAvC,IAAI,EAAE,iCAAiC,EAChD,OAAO,EAAE,MAAM;CAKlB;AAUD;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,GAAU,sDAKrD,6BAA6B,KAAG,OAAO,CAAC,IAAI,CAqG9C,CAAA"}
@@ -0,0 +1,96 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ import { getThorchainInboundAddress, } from '@vultisig/core-chain/chains/cosmos/thor/getThorchainInboundAddress';
3
+ import { getNativeSwapChainId, nativeSwapApiBaseUrl, } from '@vultisig/core-chain/swap/native/NativeSwapChain';
4
+ import { withoutDuplicates } from '@vultisig/lib-utils/array/withoutDuplicates';
5
+ import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
6
+ import { getKeysignSwapPayload, isSecuredAssetWithdrawal } from './getKeysignSwapPayload.js';
7
+ export class NativeSwapBroadcastGuardError extends Error {
8
+ code;
9
+ constructor(code, message) {
10
+ super(message);
11
+ this.code = code;
12
+ this.name = 'NativeSwapBroadcastGuardError';
13
+ }
14
+ }
15
+ const getDefaultNativeSwapInboundAddresses = nativeChain => {
16
+ if (nativeChain === Chain.THORChain) {
17
+ return getThorchainInboundAddress();
18
+ }
19
+ return queryUrl(`${nativeSwapApiBaseUrl[nativeChain]}/inbound_addresses`);
20
+ };
21
+ /**
22
+ * Revalidate a native-swap payload immediately before signing or broadcast.
23
+ *
24
+ * This helper is intentionally owned by core-mpc: shipping wallets already
25
+ * consume the keysign payload and core packages directly, while the SDK facade
26
+ * delegates here to keep one guard implementation across every client.
27
+ */
28
+ export const assertNativeSwapReadyForBroadcast = async ({ chain, keysignPayload, getInboundAddresses = getDefaultNativeSwapInboundAddresses, now = Date.now, }) => {
29
+ const swapPayload = getKeysignSwapPayload(keysignPayload);
30
+ if (!swapPayload || !('native' in swapPayload)) {
31
+ return;
32
+ }
33
+ const { native } = swapPayload;
34
+ // Secured-asset withdrawals use the native payload union as L1 asset metadata,
35
+ // not as a quote. Their MsgDeposit has no quote expiry or inbound vault.
36
+ if (isSecuredAssetWithdrawal({ chain, keysignPayload, native })) {
37
+ return;
38
+ }
39
+ const currentSeconds = BigInt(Math.floor(now() / 1000));
40
+ if (typeof native.expirationTime !== 'bigint' || native.expirationTime <= 0n) {
41
+ throw new NativeSwapBroadcastGuardError('invalid_config', 'Native swap quote has a missing or invalid expiration; refresh the quote before broadcasting');
42
+ }
43
+ if (native.expirationTime <= currentSeconds) {
44
+ throw new NativeSwapBroadcastGuardError('invalid_config', 'Native swap quote is expired; refresh the quote before broadcasting');
45
+ }
46
+ if (native.chain !== Chain.THORChain && native.chain !== Chain.MayaChain) {
47
+ return;
48
+ }
49
+ const sourceChainId = getNativeSwapChainId(chain);
50
+ if (!sourceChainId) {
51
+ throw new NativeSwapBroadcastGuardError('unsupported_chain', `Cannot validate ${native.chain} inbound vault for unsupported source chain ${chain}`);
52
+ }
53
+ let inboundAddresses;
54
+ try {
55
+ inboundAddresses = await getInboundAddresses(native.chain);
56
+ }
57
+ catch {
58
+ throw new NativeSwapBroadcastGuardError('network_error', `Cannot fetch ${native.chain} inbound vaults for source chain ${sourceChainId}`);
59
+ }
60
+ const inboundByChainId = new Map(inboundAddresses.map(info => [info.chain.toUpperCase(), info]));
61
+ const activeInbound = inboundByChainId.get(sourceChainId.toUpperCase());
62
+ if (!activeInbound?.address) {
63
+ throw new NativeSwapBroadcastGuardError('network_error', `Cannot validate ${native.chain} inbound vault for source chain ${sourceChainId}`);
64
+ }
65
+ // sdk#1360: re-check the trading-halt flags at BROADCAST, not only at quote time
66
+ // (findSwapQuote via getNativeSwapTradingHalt). THORChain can HALT<CHAIN>TRADING between the
67
+ // quote and the broadcast (mimir halt, churn, ragnarok) while the inbound vault address stays
68
+ // current - so the address check below would pass and the deposit would broadcast into a halted
69
+ // chain. Mirror quote-time's chain selection and evaluate BOTH ends of the route (source AND
70
+ // destination): a source halt is a refused/refunded deposit, but a DESTINATION halt (healthy at
71
+ // quote, halted before broadcast) lets the deposit land while the outbound cannot leave - stuck
72
+ // funds. `native.toCoin.chain` is already on the payload. Tolerance mirrors getNativeSwapTradingHalt:
73
+ // a route leg that resolves to no inbound entry (e.g. RUNE/CACAO, the native chain itself) is not
74
+ // haltable via this feed, so it is skipped rather than false-blocked. `global_trading_paused` is a
75
+ // network-wide flag read across all entries (not just the source). All flags ride the SAME
76
+ // already-fetched inbound object, so this is fail-closed at zero extra network cost.
77
+ const destinationChain = native.toCoin?.chain;
78
+ const destinationChainId = destinationChain ? getNativeSwapChainId(destinationChain) : undefined;
79
+ const globalTradingPaused = inboundAddresses.some(info => info.global_trading_paused);
80
+ const routeChainIds = withoutDuplicates([sourceChainId, destinationChainId].filter((id) => id !== undefined).map(id => id.toUpperCase()));
81
+ for (const chainId of routeChainIds) {
82
+ const inbound = inboundByChainId.get(chainId);
83
+ if (!inbound) {
84
+ continue;
85
+ }
86
+ if (inbound.halted || globalTradingPaused || inbound.chain_trading_paused) {
87
+ throw new NativeSwapBroadcastGuardError('invalid_config', `${native.chain} trading is halted for ${chainId} (halted=${inbound.halted}, ` +
88
+ `global_paused=${globalTradingPaused}, chain_paused=${inbound.chain_trading_paused}); ` +
89
+ `refusing to broadcast into a halted chain`);
90
+ }
91
+ }
92
+ if (activeInbound.address.toLowerCase() !== native.vaultAddress.toLowerCase()) {
93
+ throw new NativeSwapBroadcastGuardError('invalid_vault', `${native.chain} inbound vault address changed; refresh the swap quote before broadcasting`);
94
+ }
95
+ };
96
+ //# sourceMappingURL=assertNativeSwapReadyForBroadcast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assertNativeSwapReadyForBroadcast.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/swap/assertNativeSwapReadyForBroadcast.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/swap/build.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAQnE,OAAO,EAAE,SAAS,EAAmB,MAAM,2CAA2C,CAAA;AAMtF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAU1D,OAAO,EAAE,cAAc,EAAwB,MAAM,iEAAiE,CAAA;AAGtH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAGzE,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,WAAW,CAAA;IACrB,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,SAAS,CAAA;IACxB,WAAW,EAAE,SAAS,CAAA;IACtB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAsCD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAAU,oIAY3C,4BAA4B,4BAoR9B,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/swap/build.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAQnE,OAAO,EAAE,SAAS,EAAmB,MAAM,2CAA2C,CAAA;AAMtF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAU1D,OAAO,EAAE,cAAc,EAAwB,MAAM,iEAAiE,CAAA;AAGtH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAGzE,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,WAAW,CAAA;IACrB,MAAM,EAAE,WAAW,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,SAAS,CAAA;IACxB,WAAW,EAAE,SAAS,CAAA;IACtB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAsCD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAAU,oIAY3C,4BAA4B,4BAwR9B,CAAA"}
@@ -288,7 +288,11 @@ export const buildSwapKeysignPayload = async ({ fromCoin, toCoin, amount, swapQu
288
288
  keysignPayload.swapPayload.value.quote.tx.gas = BigInt(gasLimit);
289
289
  }
290
290
  if (isChainOfKind(chain, 'evm') && fromCoin.id) {
291
- const spender = keysignPayload.toAddress;
291
+ const approvalAddress = matchRecordUnion(swapQuote.quote, {
292
+ native: () => undefined,
293
+ general: ({ tx }) => ('evm' in tx ? tx.evm.approvalAddress : undefined),
294
+ });
295
+ const spender = approvalAddress ?? keysignPayload.toAddress;
292
296
  const allowance = await getErc20Allowance({
293
297
  chain,
294
298
  id: fromCoin.id,
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/swap/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/swap/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { AccountCoin } from '@vultisig/core-chain/coin/AccountCoin';
2
+ import { WalletCore } from '@trustwallet/wallet-core';
3
+ import { PublicKey } from '@trustwallet/wallet-core/dist/src/wallet-core';
4
+ import { KeysignLibType } from '../../mpcLib.js';
5
+ export type BuildLimitSwapKeysignPayloadInput = {
6
+ fromCoin: AccountCoin;
7
+ toCoin: AccountCoin;
8
+ /** Source amount in the coin's native smallest units. */
9
+ amount: bigint;
10
+ /** The `=<` memo from `buildLimitSwapMemo`. */
11
+ memo: string;
12
+ vaultId: string;
13
+ localPartyId: string;
14
+ fromPublicKey: PublicKey;
15
+ toPublicKey: PublicKey;
16
+ libType: KeysignLibType;
17
+ walletCore: WalletCore;
18
+ /**
19
+ * The order's guaranteed-minimum output (the memo's LIM) in the target's
20
+ * smallest units, for cross-device "you receive" display only. Never
21
+ * influences signing.
22
+ *
23
+ * Taken as a chain amount rather than a decimal so it is formatted the same
24
+ * way the market path formats its expected output — `Number#toString()` would
25
+ * emit scientific notation for dust values and render as `1e-8` on a co-signer.
26
+ */
27
+ expectedToAmount?: bigint;
28
+ /** Epoch milliseconds; parameterised so the router expiry is deterministic under test. */
29
+ now?: number;
30
+ };
31
+ /**
32
+ * Build the `KeysignPayload` for a THORChain limit order.
33
+ *
34
+ * The limit-ness always lives in the memo (`=<` vs the market `=>`); how that
35
+ * memo reaches the chain depends on the source asset:
36
+ *
37
+ * - **Native RUNE** — `MsgDeposit` on THORChain itself. No inbound vault and no
38
+ * real destination, so `toAddress` carries the signer's own address as a
39
+ * placeholder (the Cosmos signer keys off `isDeposit`, not `toAddress`).
40
+ * - **Native gas asset** (BTC/ETH/AVAX/…) — a plain transfer to the Asgard
41
+ * inbound vault with the memo in tx `data` / `OP_RETURN`. No swap payload.
42
+ * - **ERC20** — the router's `depositWithExpiry(vault, asset, amount, memo,
43
+ * expiry)` call, which needs `approve(router, amount)` first. Both ride one
44
+ * ceremony, mirroring the market ERC20 THORChain swap. A token source signed
45
+ * *without* a swap payload would fall through to a plain ERC20 transfer,
46
+ * dropping the memo and stranding the tokens on the router — so it must carry
47
+ * one.
48
+ *
49
+ * Fund-safety gates, all fail-closed:
50
+ * - The `EnableAdvSwapQueue` mimir is re-checked here, at sign time. Placement
51
+ * was already gated on it, but it can flip while the user sits on Verify, and
52
+ * a `=<` order on a network with the queue disabled can execute as an
53
+ * unprotected market swap.
54
+ * - The memo must actually be a limit memo.
55
+ * - RUNE deposits are blocked on THORChain's global trading pause (they bypass
56
+ * the per-chain inbound halt filter entirely), including when the inbound list
57
+ * is unverifiable — and on a halted destination chain: with no swap payload
58
+ * attached, the broadcast guard's destination-leg re-check never runs for
59
+ * them, so sign time is their only destination gate.
60
+ * - External sources must resolve a live, non-halted, non-paused inbound row,
61
+ * and the destination is taken from that same live view rather than a cache.
62
+ *
63
+ * Gas: unlike iOS, no EVM gas-limit override is applied. iOS pins a native-EVM
64
+ * limit deposit to 120000 to match its own market path; here both paths put the
65
+ * memo on `keysignPayload.memo` and neither sets a general swap payload, so both
66
+ * already floor at `deriveEvmGasLimit`'s 600000 data-tx limit. Forcing 120000
67
+ * would make the limit path diverge from the market path and risk under-gassing.
68
+ */
69
+ export declare const buildLimitSwapKeysignPayload: ({ fromCoin, toCoin, amount, memo, vaultId, localPartyId, fromPublicKey, toPublicKey, libType, walletCore, expectedToAmount, now, }: BuildLimitSwapKeysignPayloadInput) => Promise<import("../../types/vultisig/keysign/v1/keysign_message_pb.js").KeysignPayload>;
70
+ //# sourceMappingURL=buildLimitSwapKeysignPayload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildLimitSwapKeysignPayload.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/mpc/keysign/swap/buildLimitSwapKeysignPayload.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAYnE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAKzE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAiB7C,MAAM,MAAM,iCAAiC,GAAG;IAC9C,QAAQ,EAAE,WAAW,CAAA;IACrB,MAAM,EAAE,WAAW,CAAA;IACnB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAA;IACd,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,SAAS,CAAA;IACxB,WAAW,EAAE,SAAS,CAAA;IACtB,OAAO,EAAE,cAAc,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,0FAA0F;IAC1F,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,4BAA4B,GAAU,oIAahD,iCAAiC,yFAuHnC,CAAA"}