@vultisig/core-mpc 1.8.2 → 1.8.4
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 +19 -0
- package/dist/swap/native/utils/nativeSwapQuoteToSwapPayload.d.ts +4 -0
- package/dist/swap/native/utils/nativeSwapQuoteToSwapPayload.d.ts.map +1 -1
- package/dist/swap/native/utils/nativeSwapQuoteToSwapPayload.js +30 -4
- package/dist/swap/native/utils/nativeSwapQuoteToSwapPayload.js.map +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @vultisig/core-mpc
|
|
2
2
|
|
|
3
|
+
## 1.8.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#809](https://github.com/vultisig/vultisig-sdk/pull/809) [`e53230e`](https://github.com/vultisig/vultisig-sdk/commit/e53230efd2bb8a4e68f85f74c24655190af405d4) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Honor native swap quote expiry and validate THORChain inbound vault addresses before broadcasting stale signed swaps.
|
|
8
|
+
|
|
9
|
+
- [#808](https://github.com/vultisig/vultisig-sdk/pull/808) [`ab9cc91`](https://github.com/vultisig/vultisig-sdk/commit/ab9cc91c48588e9ecd96ec7eb50fd8138b88ba13) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Apply native THORChain/Maya swap slippage tolerance to quote requests and signed payload limits so native swaps no longer use a zero minimum-output floor.
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [[`e53230e`](https://github.com/vultisig/vultisig-sdk/commit/e53230efd2bb8a4e68f85f74c24655190af405d4), [`ab9cc91`](https://github.com/vultisig/vultisig-sdk/commit/ab9cc91c48588e9ecd96ec7eb50fd8138b88ba13)]:
|
|
12
|
+
- @vultisig/core-chain@2.17.7
|
|
13
|
+
|
|
14
|
+
## 1.8.3
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [[`0f350ff`](https://github.com/vultisig/vultisig-sdk/commit/0f350ff128a42764950e71b4c156907ec59a3c37), [`6f53d2c`](https://github.com/vultisig/vultisig-sdk/commit/6f53d2cb3d1a56ff9377cc32c7c6f4e750fe8f21), [`b51902b`](https://github.com/vultisig/vultisig-sdk/commit/b51902bc08045e3977116565e430c1454d0ba607)]:
|
|
19
|
+
- @vultisig/core-chain@2.17.6
|
|
20
|
+
- @vultisig/lib-utils@0.10.2
|
|
21
|
+
|
|
3
22
|
## 1.8.2
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
|
@@ -11,6 +11,10 @@ type Input = {
|
|
|
11
11
|
};
|
|
12
12
|
amount: bigint;
|
|
13
13
|
};
|
|
14
|
+
export declare const getNativeSwapToAmountLimit: ({ expectedAmountOut, slippageToleranceBps, }: {
|
|
15
|
+
expectedAmountOut: string;
|
|
16
|
+
slippageToleranceBps?: number;
|
|
17
|
+
}) => string;
|
|
14
18
|
export declare const nativeSwapQuoteToSwapPayload: ({ quote, fromCoin, amount, toCoin }: Input) => CommKeysignSwapPayload;
|
|
15
19
|
export {};
|
|
16
20
|
//# sourceMappingURL=nativeSwapQuoteToSwapPayload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeSwapQuoteToSwapPayload.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/swap/native/utils/nativeSwapQuoteToSwapPayload.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"nativeSwapQuoteToSwapPayload.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/swap/native/utils/nativeSwapQuoteToSwapPayload.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAA;AAIlF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AAIjF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,eAAe,CAAA;IACtB,QAAQ,EAAE,WAAW,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;IAChD,MAAM,EAAE,WAAW,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAsBD,eAAO,MAAM,0BAA0B,GAAI,8CAGxC;IACD,iBAAiB,EAAE,MAAM,CAAA;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B,KAAG,MAYH,CAAA;AAED,eAAO,MAAM,4BAA4B,GAAI,qCAAqC,KAAK,KAAG,sBAoCzF,CAAA"}
|
|
@@ -1,14 +1,37 @@
|
|
|
1
1
|
import { create } from '@bufbuild/protobuf';
|
|
2
2
|
import { fromChainAmount } from '@vultisig/core-chain/amount/fromChainAmount';
|
|
3
3
|
import { Chain } from '@vultisig/core-chain/Chain';
|
|
4
|
+
import { DEFAULT_NATIVE_SWAP_SLIPPAGE_TOLERANCE_BPS } from '@vultisig/core-chain/swap/native/api/getNativeSwapQuote';
|
|
4
5
|
import { nativeSwapPayloadCase, nativeSwapStreamingInterval } from '@vultisig/core-chain/swap/native/NativeSwapChain';
|
|
5
6
|
import { getNativeSwapDecimals } from '@vultisig/core-chain/swap/native/utils/getNativeSwapDecimals';
|
|
6
7
|
import { parseThorchainSwapMemoStreaming } from '@vultisig/core-chain/swap/native/utils/parseThorchainSwapMemoStreaming';
|
|
7
|
-
import { convertDuration } from '@vultisig/lib-utils/time/convertDuration';
|
|
8
|
-
import { addMinutes } from 'date-fns';
|
|
9
8
|
import { toCommCoin } from '../../../types/utils/commCoin.js';
|
|
10
9
|
import { THORChainSwapPayloadSchema } from '../../../types/vultisig/keysign/v1/thorchain_swap_payload_pb.js';
|
|
10
|
+
const assertQuoteNotExpired = (expirySeconds) => {
|
|
11
|
+
if (expirySeconds <= Math.floor(Date.now() / 1000)) {
|
|
12
|
+
throw new Error('Native swap quote is expired; refresh the quote before signing');
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const BASIS_POINTS_DENOMINATOR = 10000n;
|
|
16
|
+
const assertValidSlippageToleranceBps = (slippageToleranceBps) => {
|
|
17
|
+
if (!Number.isSafeInteger(slippageToleranceBps) ||
|
|
18
|
+
slippageToleranceBps < 0 ||
|
|
19
|
+
slippageToleranceBps > Number(BASIS_POINTS_DENOMINATOR)) {
|
|
20
|
+
throw new Error(`slippageToleranceBps must be an integer between 0 and ${BASIS_POINTS_DENOMINATOR}. Received "${slippageToleranceBps}".`);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export const getNativeSwapToAmountLimit = ({ expectedAmountOut, slippageToleranceBps = DEFAULT_NATIVE_SWAP_SLIPPAGE_TOLERANCE_BPS, }) => {
|
|
24
|
+
assertValidSlippageToleranceBps(slippageToleranceBps);
|
|
25
|
+
const expected = BigInt(expectedAmountOut);
|
|
26
|
+
const tolerance = BigInt(slippageToleranceBps);
|
|
27
|
+
const limit = (expected * (BASIS_POINTS_DENOMINATOR - tolerance)) / BASIS_POINTS_DENOMINATOR;
|
|
28
|
+
if (expected > 0n && tolerance < BASIS_POINTS_DENOMINATOR && limit === 0n) {
|
|
29
|
+
return '1';
|
|
30
|
+
}
|
|
31
|
+
return limit.toString();
|
|
32
|
+
};
|
|
11
33
|
export const nativeSwapQuoteToSwapPayload = ({ quote, fromCoin, amount, toCoin }) => {
|
|
34
|
+
assertQuoteNotExpired(quote.expiry);
|
|
12
35
|
const isAffiliate = !!quote.fees.affiliate && Number(quote.fees.affiliate) > 0;
|
|
13
36
|
const { streamingInterval, streamingQuantity } = quote.swapChain === Chain.THORChain
|
|
14
37
|
? parseThorchainSwapMemoStreaming(quote.memo)
|
|
@@ -27,10 +50,13 @@ export const nativeSwapQuoteToSwapPayload = ({ quote, fromCoin, amount, toCoin }
|
|
|
27
50
|
routerAddress: quote.router,
|
|
28
51
|
fromAmount: amount.toString(),
|
|
29
52
|
toAmountDecimal: fromChainAmount(quote.expected_amount_out, toDecimals).toFixed(toDecimals),
|
|
30
|
-
expirationTime: BigInt(
|
|
53
|
+
expirationTime: BigInt(quote.expiry),
|
|
31
54
|
streamingInterval,
|
|
32
55
|
streamingQuantity,
|
|
33
|
-
toAmountLimit:
|
|
56
|
+
toAmountLimit: getNativeSwapToAmountLimit({
|
|
57
|
+
expectedAmountOut: quote.expected_amount_out,
|
|
58
|
+
slippageToleranceBps: quote.liquidity_tolerance_bps,
|
|
59
|
+
}),
|
|
34
60
|
isAffiliate,
|
|
35
61
|
fee: quote.fees.total,
|
|
36
62
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeSwapQuoteToSwapPayload.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/swap/native/utils/nativeSwapQuoteToSwapPayload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAA;AAErH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAA;AACpG,OAAO,EAAE,+BAA+B,EAAE,MAAM,wEAAwE,CAAA;
|
|
1
|
+
{"version":3,"file":"nativeSwapQuoteToSwapPayload.js","sourceRoot":"","sources":["../../../../../../../packages/core/mpc/swap/native/utils/nativeSwapQuoteToSwapPayload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAA;AAC7E,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,0CAA0C,EAAE,MAAM,yDAAyD,CAAA;AACpH,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAA;AAErH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAA;AACpG,OAAO,EAAE,+BAA+B,EAAE,MAAM,wEAAwE,CAAA;AAGxH,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8DAA8D,CAAA;AASzG,MAAM,qBAAqB,GAAG,CAAC,aAAqB,EAAQ,EAAE;IAC5D,IAAI,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IACnF,CAAC;AACH,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,MAAO,CAAA;AAExC,MAAM,+BAA+B,GAAG,CAAC,oBAA4B,EAAQ,EAAE;IAC7E,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC;QAC3C,oBAAoB,GAAG,CAAC;QACxB,oBAAoB,GAAG,MAAM,CAAC,wBAAwB,CAAC,EACvD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yDAAyD,wBAAwB,eAAe,oBAAoB,IAAI,CACzH,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACzC,iBAAiB,EACjB,oBAAoB,GAAG,0CAA0C,GAIlE,EAAU,EAAE;IACX,+BAA+B,CAAC,oBAAoB,CAAC,CAAA;IAErD,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC9C,MAAM,KAAK,GAAG,CAAC,QAAQ,GAAG,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAC,GAAG,wBAAwB,CAAA;IAE5F,IAAI,QAAQ,GAAG,EAAE,IAAI,SAAS,GAAG,wBAAwB,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC1E,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAS,EAA0B,EAAE;IACjH,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAEnC,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAE9E,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,GAC5C,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;QACjC,CAAC,CAAC,+BAA+B,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7C,CAAC,CAAC;YACE,iBAAiB,EAAE,MAAM,CAAC,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACvE,iBAAiB,EAAE,GAAG;SACvB,CAAA;IAEP,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAEhD,OAAO;QACL,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC;QAC5C,KAAK,EAAE,MAAM,CAAC,0BAA0B,EAAE;YACxC,WAAW,EAAE,QAAQ,CAAC,OAAO;YAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;YAC1B,YAAY,EAAE,KAAK,CAAC,eAAe,IAAI,QAAQ,CAAC,OAAO;YACvD,aAAa,EAAE,KAAK,CAAC,MAAM;YAC3B,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE;YAC7B,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;YAC3F,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACpC,iBAAiB;YACjB,iBAAiB;YACjB,aAAa,EAAE,0BAA0B,CAAC;gBACxC,iBAAiB,EAAE,KAAK,CAAC,mBAAmB;gBAC5C,oBAAoB,EAAE,KAAK,CAAC,uBAAuB;aACpD,CAAC;YACF,WAAW;YACX,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;SACtB,CAAC;KACH,CAAA;AACH,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/core-mpc",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.4",
|
|
4
4
|
"description": "MPC, keysign, and vault types shared across Vultisig clients",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -1010,16 +1010,16 @@
|
|
|
1010
1010
|
"7z-wasm": "^1.2.0",
|
|
1011
1011
|
"@bufbuild/protobuf": "^2.12.0",
|
|
1012
1012
|
"@cosmjs/encoding": "^0.39.0",
|
|
1013
|
-
"@mysten/sui": "^2.
|
|
1013
|
+
"@mysten/sui": "^2.19.0",
|
|
1014
1014
|
"@noble/hashes": "^1.8.0",
|
|
1015
1015
|
"@solana/web3.js": "^1.98.4",
|
|
1016
|
-
"@trustwallet/wallet-core": "^4.6.
|
|
1017
|
-
"@vultisig/core-chain": "2.17.
|
|
1016
|
+
"@trustwallet/wallet-core": "^4.6.15",
|
|
1017
|
+
"@vultisig/core-chain": "2.17.7",
|
|
1018
1018
|
"@vultisig/core-config": "0.9.1",
|
|
1019
1019
|
"@vultisig/lib-dkls": "0.9.0",
|
|
1020
1020
|
"@vultisig/lib-mldsa": "0.9.0",
|
|
1021
1021
|
"@vultisig/lib-schnorr": "0.9.0",
|
|
1022
|
-
"@vultisig/lib-utils": "0.10.
|
|
1022
|
+
"@vultisig/lib-utils": "0.10.2",
|
|
1023
1023
|
"@vultisig/mpc-types": "0.2.3",
|
|
1024
1024
|
"bitcoinjs-lib": "^7.0.1",
|
|
1025
1025
|
"bs58": "^6.0.0",
|