@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.
- package/CHANGELOG.md +70 -0
- package/dist/chains/cosmos/qbtc/QBTCHelper.js +11 -0
- package/dist/chains/cosmos/qbtc/QBTCHelper.js.map +1 -1
- package/dist/chains/cosmos/qbtc/QBTCTx.d.ts +1 -1
- package/dist/chains/cosmos/qbtc/QBTCTx.d.ts.map +1 -1
- package/dist/chains/cosmos/qbtc/QBTCTx.js +8 -2
- package/dist/chains/cosmos/qbtc/QBTCTx.js.map +1 -1
- package/dist/keysign/chainSpecific/resolvers/cosmos/index.d.ts.map +1 -1
- package/dist/keysign/chainSpecific/resolvers/cosmos/index.js +6 -4
- package/dist/keysign/chainSpecific/resolvers/cosmos/index.js.map +1 -1
- package/dist/keysign/chainSpecific/resolvers/maya.js +2 -2
- package/dist/keysign/chainSpecific/resolvers/maya.js.map +1 -1
- package/dist/keysign/chainSpecific/resolvers/sui/index.d.ts.map +1 -1
- package/dist/keysign/chainSpecific/resolvers/sui/index.js +51 -6
- package/dist/keysign/chainSpecific/resolvers/sui/index.js.map +1 -1
- package/dist/keysign/chainSpecific/resolvers/thor.js +2 -2
- package/dist/keysign/chainSpecific/resolvers/thor.js.map +1 -1
- package/dist/keysign/signingInputs/index.d.ts.map +1 -1
- package/dist/keysign/signingInputs/index.js +12 -0
- package/dist/keysign/signingInputs/index.js.map +1 -1
- package/dist/keysign/signingInputs/resolvers/cardano.d.ts.map +1 -1
- package/dist/keysign/signingInputs/resolvers/cardano.js +17 -2
- package/dist/keysign/signingInputs/resolvers/cardano.js.map +1 -1
- package/dist/keysign/signingInputs/resolvers/cosmos/index.d.ts.map +1 -1
- package/dist/keysign/signingInputs/resolvers/cosmos/index.js +6 -2
- package/dist/keysign/signingInputs/resolvers/cosmos/index.js.map +1 -1
- package/dist/keysign/signingInputs/resolvers/evm/index.d.ts.map +1 -1
- package/dist/keysign/signingInputs/resolvers/evm/index.js +37 -0
- package/dist/keysign/signingInputs/resolvers/evm/index.js.map +1 -1
- package/dist/keysign/signingInputs/resolvers/solana/index.d.ts.map +1 -1
- package/dist/keysign/signingInputs/resolvers/solana/index.js +43 -14
- package/dist/keysign/signingInputs/resolvers/solana/index.js.map +1 -1
- package/dist/keysign/signingInputs/resolvers/solana/rawTx.d.ts +52 -0
- package/dist/keysign/signingInputs/resolvers/solana/rawTx.d.ts.map +1 -0
- package/dist/keysign/signingInputs/resolvers/solana/rawTx.js +84 -0
- package/dist/keysign/signingInputs/resolvers/solana/rawTx.js.map +1 -0
- package/dist/keysign/signingInputs/resolvers/sui.d.ts.map +1 -1
- package/dist/keysign/signingInputs/resolvers/sui.js +13 -6
- package/dist/keysign/signingInputs/resolvers/sui.js.map +1 -1
- package/dist/keysign/signingInputs/resolvers/ton/jetton.d.ts.map +1 -1
- package/dist/keysign/signingInputs/resolvers/ton/jetton.js +4 -6
- package/dist/keysign/signingInputs/resolvers/ton/jetton.js.map +1 -1
- package/dist/keysign/signingInputs/resolvers/ton/native.d.ts +2 -0
- package/dist/keysign/signingInputs/resolvers/ton/native.d.ts.map +1 -1
- package/dist/keysign/signingInputs/resolvers/ton/native.js +25 -4
- package/dist/keysign/signingInputs/resolvers/ton/native.js.map +1 -1
- package/dist/keysign/suiCoinSelection.d.ts +20 -0
- package/dist/keysign/suiCoinSelection.d.ts.map +1 -0
- package/dist/keysign/suiCoinSelection.js +88 -0
- package/dist/keysign/suiCoinSelection.js.map +1 -0
- package/dist/keysign/swap/assertNativeSwapReadyForBroadcast.d.ts +26 -0
- package/dist/keysign/swap/assertNativeSwapReadyForBroadcast.d.ts.map +1 -0
- package/dist/keysign/swap/assertNativeSwapReadyForBroadcast.js +96 -0
- package/dist/keysign/swap/assertNativeSwapReadyForBroadcast.js.map +1 -0
- package/dist/keysign/swap/build.d.ts.map +1 -1
- package/dist/keysign/swap/build.js +5 -1
- package/dist/keysign/swap/build.js.map +1 -1
- package/dist/keysign/swap/buildLimitSwapKeysignPayload.d.ts +70 -0
- package/dist/keysign/swap/buildLimitSwapKeysignPayload.d.ts.map +1 -0
- package/dist/keysign/swap/buildLimitSwapKeysignPayload.js +160 -0
- package/dist/keysign/swap/buildLimitSwapKeysignPayload.js.map +1 -0
- package/dist/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.d.ts.map +1 -1
- package/dist/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.js +12 -0
- package/dist/security/blockaid/tx/utils/getCompiledTxsForBlockaidInput.js.map +1 -1
- package/dist/swap/utils/getSwapTrackingUrl.d.ts.map +1 -1
- package/dist/swap/utils/getSwapTrackingUrl.js +5 -60
- package/dist/swap/utils/getSwapTrackingUrl.js.map +1 -1
- package/dist/tx/compile/compileTx.d.ts.map +1 -1
- package/dist/tx/compile/compileTx.js +28 -0
- package/dist/tx/compile/compileTx.js.map +1 -1
- package/dist/tx/preSigningHashes/index.d.ts.map +1 -1
- package/dist/tx/preSigningHashes/index.js +10 -0
- package/dist/tx/preSigningHashes/index.js.map +1 -1
- 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 ?
|
|
47
|
+
const amount = sendMaxAmount ? 0n : keysignPayload.toAmount;
|
|
27
48
|
return TW.TheOpenNetwork.Proto.Transfer.create({
|
|
28
49
|
dest: keysignPayload.toAddress,
|
|
29
|
-
amount:
|
|
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:
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../../../../../../../packages/core/mpc/keysign/signingInputs/resolvers/ton/native.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAA;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;AACzC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAA;AAE3C,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAU,EAAE;IACtD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IACjE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACtC,OAAO,KAAK,OAAO,IAAI,GAAG,EAAE,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,GAAG,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAA;AAC7F,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,GAAW,EAAW,EAAE,CACrE,oBAAoB,CAAC,GAAG,CAAC,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAA6B,EAAW,EAAE,CAClF,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAA;AAEhD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,OAAO,EAA4B,EAAU,EAAE;IACjF,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,KAAyB,EACzB,MAAc,EACd,UAAU,GAAG,sBAAsB,EACxB,EAAE;IACb,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACzC,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC9B,OAAO,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC;QAED,OAAO,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAc,EAAE,CAAA;IAC9B,IAAI,WAAW,GAAG,EAAE,CAAA;IACpB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,IAAI,MAAM;YAAE,MAAK;QACvD,IAAI,QAAQ,CAAC,MAAM,IAAI,UAAU;YAAE,MAAK;QAExC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,WAAW,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,WAAW,GAAG,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAChF,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAyB,EAAE,SAAiB,EAAuB,EAAE;IACtG,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACjD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAE9C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAA;IACjF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAChC,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;YACzC,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;YACzC,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;gBAC9B,OAAO,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzC,CAAC;YAED,OAAO,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACzD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gDAAgD,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AACzF,CAAC,CAAA;AAUD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,KAAK,EACL,aAAa,EACb,QAAQ,EACR,MAAM,EACN,SAAS,GACkB,EAAa,EAAE;IAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAEjD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,IAAI,iBAAiB,CAAA;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;IACpF,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAC9D,MAAM,aAAa,GAAG,CAAC,GAAG,WAAW,CAAC;SACnC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjB,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACzC,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC9B,OAAO,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC;QAED,OAAO,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IACzD,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAA;IAEvC,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,aAAa,CAAC,CAAA;AAC9C,CAAC,CAAA"}
|
|
@@ -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,
|
|
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
|
|
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"}
|