@vultisig/core-chain 2.12.0 → 2.14.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 (27) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/security/blockaid/simulationChains.d.ts +1 -1
  3. package/dist/security/blockaid/simulationChains.d.ts.map +1 -1
  4. package/dist/security/blockaid/simulationChains.js +5 -1
  5. package/dist/security/blockaid/simulationChains.js.map +1 -1
  6. package/dist/security/blockaid/tx/simulation/api/core.d.ts +48 -1
  7. package/dist/security/blockaid/tx/simulation/api/core.d.ts.map +1 -1
  8. package/dist/security/blockaid/tx/simulation/api/core.js +121 -0
  9. package/dist/security/blockaid/tx/simulation/api/core.js.map +1 -1
  10. package/dist/security/blockaid/tx/simulation/core.d.ts +19 -0
  11. package/dist/security/blockaid/tx/simulation/core.d.ts.map +1 -1
  12. package/dist/security/blockaid/tx/simulation/index.d.ts +1 -0
  13. package/dist/security/blockaid/tx/simulation/index.d.ts.map +1 -1
  14. package/dist/security/blockaid/tx/simulation/index.js +5 -0
  15. package/dist/security/blockaid/tx/simulation/index.js.map +1 -1
  16. package/dist/security/blockaid/tx/simulation/resolver.d.ts +2 -1
  17. package/dist/security/blockaid/tx/simulation/resolver.d.ts.map +1 -1
  18. package/dist/security/blockaid/tx/simulation/resolvers/sui.d.ts +9 -0
  19. package/dist/security/blockaid/tx/simulation/resolvers/sui.d.ts.map +1 -0
  20. package/dist/security/blockaid/tx/simulation/resolvers/sui.js +11 -0
  21. package/dist/security/blockaid/tx/simulation/resolvers/sui.js.map +1 -0
  22. package/dist/swap/native/limitSwapMemo.d.ts +20 -0
  23. package/dist/swap/native/limitSwapMemo.d.ts.map +1 -0
  24. package/dist/swap/native/limitSwapMemo.js +193 -0
  25. package/dist/swap/native/limitSwapMemo.js.map +1 -0
  26. package/fixtures/limit-swap-memos.json +170 -0
  27. package/package.json +14 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @vultisig/core-chain
2
2
 
3
+ ## 2.14.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#676](https://github.com/vultisig/vultisig-sdk/pull/676) [`7572dc0`](https://github.com/vultisig/vultisig-sdk/commit/7572dc0e7fa785453e36a419d678f8a1bf17c8b5) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Add THORChain limit swap memo builder, validation helpers, and JSON test vectors.
8
+
9
+ ## 2.13.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [#672](https://github.com/vultisig/vultisig-sdk/pull/672) [`7fa4860`](https://github.com/vultisig/vultisig-sdk/commit/7fa48602ba1acfb57746fd22c87ec3aa30bac4a6) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Add Blockaid Sui transaction simulation support. The existing Sui Blockaid
14
+ scan resolver only requested `validation`; this exposes the simulation block
15
+ returned by the same `/sui/transaction/scan` endpoint via a new
16
+ `getSuiTxBlockaidSimulation` resolver and a `parseBlockaidSuiSimulation`
17
+ parser that produces a UI-facing `{ swap } | { transfer }` headline
18
+ (mirroring the Solana shape). `OtherChain.Sui` is now a member of
19
+ `blockaidSimulationSupportedChains`, with a new `getTxBlockaidSimulation`
20
+ overload, and the mpc package gains a matching
21
+ `getSuiBlockaidTxSimulationInput` for the `KeysignPayload`-driven flow.
22
+
23
+ The parser keeps `null` as its failure mode rather than throwing — Blockaid
24
+ field renames degrade to "no preview" instead of breaking consumers.
25
+
26
+ Closes [#671](https://github.com/vultisig/vultisig-sdk/issues/671)
27
+
3
28
  ## 2.12.0
4
29
 
5
30
  ### Minor Changes
@@ -1,6 +1,6 @@
1
1
  import { OtherChain } from '../../Chain.js';
2
2
  import { DeriveChainKind } from '../../ChainKind.js';
3
- export declare const blockaidSimulationSupportedChains: readonly [...("Arbitrum" | "Base" | "Blast" | "Optimism" | "Zksync" | "Mantle" | "Avalanche" | "BSC" | "Ethereum" | "Polygon" | "Hyperliquid" | "Sei")[], OtherChain.Solana];
3
+ export declare const blockaidSimulationSupportedChains: readonly [...("Arbitrum" | "Base" | "Blast" | "Optimism" | "Zksync" | "Mantle" | "Avalanche" | "BSC" | "Ethereum" | "Polygon" | "Hyperliquid" | "Sei")[], OtherChain.Solana, OtherChain.Sui];
4
4
  export type BlockaidSimulationSupportedChain = (typeof blockaidSimulationSupportedChains)[number];
5
5
  export type BlockaidSimulationSupportedChainKind = DeriveChainKind<BlockaidSimulationSupportedChain>;
6
6
  //# sourceMappingURL=simulationChains.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulationChains.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/security/blockaid/simulationChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGjD,eAAO,MAAM,iCAAiC,8KAA8D,CAAA;AAE5G,MAAM,MAAM,gCAAgC,GAAG,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAA;AACjG,MAAM,MAAM,oCAAoC,GAAG,eAAe,CAAC,gCAAgC,CAAC,CAAA"}
1
+ {"version":3,"file":"simulationChains.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/security/blockaid/simulationChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGjD,eAAO,MAAM,iCAAiC,8LAIpC,CAAA;AAEV,MAAM,MAAM,gCAAgC,GAAG,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAA;AACjG,MAAM,MAAM,oCAAoC,GAAG,eAAe,CAAC,gCAAgC,CAAC,CAAA"}
@@ -1,4 +1,8 @@
1
1
  import { OtherChain } from '../../Chain.js';
2
2
  import { blockaidSupportedEvmChains } from './evmChains.js';
3
- export const blockaidSimulationSupportedChains = [...blockaidSupportedEvmChains, OtherChain.Solana];
3
+ export const blockaidSimulationSupportedChains = [
4
+ ...blockaidSupportedEvmChains,
5
+ OtherChain.Solana,
6
+ OtherChain.Sui,
7
+ ];
4
8
  //# sourceMappingURL=simulationChains.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulationChains.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/security/blockaid/simulationChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAExD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,GAAG,0BAA0B,EAAE,UAAU,CAAC,MAAM,CAAU,CAAA"}
1
+ {"version":3,"file":"simulationChains.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/security/blockaid/simulationChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAExD,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,GAAG,0BAA0B;IAC7B,UAAU,CAAC,MAAM;IACjB,UAAU,CAAC,GAAG;CACN,CAAA"}
@@ -1,5 +1,51 @@
1
1
  import { EvmChain } from '@vultisig/core-chain/Chain';
2
- import { BlockaidEvmSimulationInfo, BlockaidSolanaSimulationInfo } from '../core.js';
2
+ import { BlockaidEvmSimulationInfo, BlockaidSolanaSimulationInfo, BlockaidSuiSimulationInfo } from '../core.js';
3
+ type BlockaidSuiRawAssetSide = {
4
+ usd_price?: number;
5
+ summary?: string;
6
+ value?: number | string;
7
+ raw_value: number | string;
8
+ };
9
+ type BlockaidSuiRawAsset = {
10
+ type?: 'NATIVE' | 'COIN' | 'TOKEN' | 'SUI' | string;
11
+ asset_type?: 'NATIVE' | 'COIN' | 'TOKEN' | 'SUI' | string;
12
+ name?: string;
13
+ symbol?: string;
14
+ id?: string;
15
+ coin_type?: string;
16
+ address?: string;
17
+ decimals: number;
18
+ logo?: string;
19
+ logo_url?: string;
20
+ };
21
+ type BlockaidSuiRawAssetDiff = {
22
+ asset: BlockaidSuiRawAsset;
23
+ in: BlockaidSuiRawAssetSide | null;
24
+ out: BlockaidSuiRawAssetSide | null;
25
+ asset_type?: 'NATIVE' | 'COIN' | 'TOKEN' | 'SUI' | string;
26
+ };
27
+ export type BlockaidSuiSimulation = {
28
+ status?: 'Success' | 'Failure';
29
+ account_summary?: {
30
+ account_assets_diffs?: BlockaidSuiRawAssetDiff[];
31
+ account_assets_diff?: BlockaidSuiRawAssetDiff[];
32
+ };
33
+ };
34
+ /**
35
+ * Parse a Blockaid Sui simulation into the user's net balance changes,
36
+ * mirroring how Solana classifies into a `swap` or `transfer` headline.
37
+ *
38
+ * Only emits a headline when the relevant diff set is unambiguous:
39
+ * - exactly one out-only diff → `transfer`
40
+ * - exactly two diffs, one out-only + one in-only on different assets
41
+ * → `swap`
42
+ *
43
+ * Anything more complex (e.g. a swap that also sends a third asset)
44
+ * returns `null` — a partial "you're swapping…" headline would hide the
45
+ * additional movement and mislead users approving the transaction. The
46
+ * popup falls back to the decoded-command view when this returns `null`.
47
+ */
48
+ export declare const parseBlockaidSuiSimulation: (simulation: BlockaidSuiSimulation) => Promise<BlockaidSuiSimulationInfo | null>;
3
49
  export type BlockaidSolanaSimulation = {
4
50
  account_summary: {
5
51
  account_assets_diff: Array<{
@@ -84,4 +130,5 @@ export declare const parseBlockaidSolanaSimulation: (simulation: BlockaidSolanaS
84
130
  * accurate "no change" outcome.
85
131
  */
86
132
  export declare const parseBlockaidEvmSimulation: (simulation: BlockaidEVMSimulation, chain: EvmChain) => Promise<BlockaidEvmSimulationInfo>;
133
+ export {};
87
134
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/api/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAKrD,OAAO,EAA4B,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAE3G,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,EAAE;QACf,mBAAmB,EAAE,KAAK,CAAC;YACzB,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO,GAAG,KAAK,CAAA;gBACrB,IAAI,CAAC,EAAE,MAAM,CAAA;gBACb,MAAM,CAAC,EAAE,MAAM,CAAA;gBACf,OAAO,CAAC,EAAE,MAAM,CAAA;gBAChB,QAAQ,EAAE,MAAM,CAAA;gBAChB,IAAI,EAAE,MAAM,CAAA;aACb,CAAA;YACD,EAAE,EAAE;gBACF,SAAS,EAAE,MAAM,CAAA;gBACjB,OAAO,EAAE,MAAM,CAAA;gBACf,KAAK,EAAE,MAAM,CAAA;gBACb,SAAS,EAAE,MAAM,CAAA;aAClB,GAAG,IAAI,CAAA;YACR,GAAG,EAAE;gBACH,SAAS,EAAE,MAAM,CAAA;gBACjB,OAAO,EAAE,MAAM,CAAA;gBACf,KAAK,EAAE,MAAM,CAAA;gBACb,SAAS,EAAE,MAAM,CAAA;aAClB,GAAG,IAAI,CAAA;YACR,UAAU,EAAE,OAAO,GAAG,KAAK,CAAA;SAC5B,CAAC,CAAA;KACH,CAAA;CACF,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,eAAe,EAAE;QACf,YAAY,EAAE,KAAK,CAAC;YAClB,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAA;YAC9B,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;gBACxB,UAAU,EAAE,MAAM,CAAA;gBAClB,QAAQ,EAAE,MAAM,CAAA;gBAChB,QAAQ,EAAE,MAAM,CAAA;gBAChB,OAAO,CAAC,EAAE,MAAM,CAAA;gBAChB,QAAQ,EAAE,MAAM,CAAA;gBAChB,IAAI,EAAE,MAAM,CAAA;gBACZ,MAAM,EAAE,MAAM,CAAA;aACf,CAAA;YACD,EAAE,EAAE,KAAK,CAAC;gBACR,SAAS,EAAE,MAAM,CAAA;gBACjB,OAAO,EAAE,MAAM,CAAA;gBACf,KAAK,EAAE,MAAM,CAAA;gBACb,SAAS,EAAE,MAAM,CAAA;aAClB,CAAC,CAAA;YACF,GAAG,EAAE,KAAK,CAAC;gBACT,SAAS,EAAE,MAAM,CAAA;gBACjB,OAAO,EAAE,MAAM,CAAA;gBACf,KAAK,EAAE,MAAM,CAAA;gBACb,SAAS,EAAE,MAAM,CAAA;aAClB,CAAC,CAAA;YACF,eAAe,EAAE;gBACf,MAAM,EAAE;oBACN,SAAS,EAAE,MAAM,CAAA;oBACjB,KAAK,EAAE,MAAM,CAAA;oBACb,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,KAAK,EAAE;oBACL,SAAS,EAAE,MAAM,CAAA;oBACjB,KAAK,EAAE,MAAM,CAAA;oBACb,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;aACF,CAAA;SACF,CAAC,CAAA;KACH,CAAA;CACF,CAAA;AAED,eAAO,MAAM,6BAA6B,GACxC,YAAY,wBAAwB,KACnC,OAAO,CAAC,4BAA4B,CA2EtC,CAAA;AA6CD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,0BAA0B,GACrC,YAAY,qBAAqB,EACjC,OAAO,QAAQ,KACd,OAAO,CAAC,yBAAyB,CAuDnC,CAAA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/api/core.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,126 @@
1
1
  import { isChainOfKind } from '@vultisig/core-chain/ChainKind';
2
2
  import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
3
+ const SUI_NATIVE_COIN_TYPE = '0x2::sui::SUI';
4
+ const isNativeSui = (asset) => asset.type === 'NATIVE' ||
5
+ asset.type === 'SUI' ||
6
+ asset.asset_type === 'NATIVE' ||
7
+ asset.coin_type === SUI_NATIVE_COIN_TYPE ||
8
+ (!asset.id && !asset.coin_type && !asset.address && asset.symbol === 'SUI');
9
+ const coinTypeFromAsset = (asset) => {
10
+ if (asset.id)
11
+ return asset.id;
12
+ if (asset.coin_type)
13
+ return asset.coin_type;
14
+ if (asset.address)
15
+ return asset.address;
16
+ if (isNativeSui(asset))
17
+ return SUI_NATIVE_COIN_TYPE;
18
+ return null;
19
+ };
20
+ // Convert Blockaid's `raw_value` (always an integer in the asset's base unit,
21
+ // emitted as either a JS number or a numeric string) to a bigint. Returns
22
+ // `null` for any input we can't safely represent — `NaN`, `Infinity`, unsafe
23
+ // JS numbers (precision loss above 2^53), or non-integer strings. The parser
24
+ // propagates the `null` so a malformed amount degrades to "no preview"
25
+ // instead of throwing or quietly corrupting the displayed value.
26
+ const toBigInt = (raw) => {
27
+ if (typeof raw === 'number') {
28
+ if (!Number.isFinite(raw) || !Number.isSafeInteger(raw))
29
+ return null;
30
+ return BigInt(raw);
31
+ }
32
+ if (!/^-?\d+$/.test(raw))
33
+ return null;
34
+ return BigInt(raw);
35
+ };
36
+ /**
37
+ * Parse a Blockaid Sui simulation into the user's net balance changes,
38
+ * mirroring how Solana classifies into a `swap` or `transfer` headline.
39
+ *
40
+ * Only emits a headline when the relevant diff set is unambiguous:
41
+ * - exactly one out-only diff → `transfer`
42
+ * - exactly two diffs, one out-only + one in-only on different assets
43
+ * → `swap`
44
+ *
45
+ * Anything more complex (e.g. a swap that also sends a third asset)
46
+ * returns `null` — a partial "you're swapping…" headline would hide the
47
+ * additional movement and mislead users approving the transaction. The
48
+ * popup falls back to the decoded-command view when this returns `null`.
49
+ */
50
+ export const parseBlockaidSuiSimulation = async (simulation) => {
51
+ const assetDiffs = simulation.account_summary?.account_assets_diffs ?? simulation.account_summary?.account_assets_diff;
52
+ if (!assetDiffs || assetDiffs.length === 0)
53
+ return null;
54
+ // When we have 3 items and one is native SUI, filter it out and use the
55
+ // other two tokens — the native SUI is likely the gas charge, not part of
56
+ // the swap itself. Same heuristic as Solana.
57
+ let relevantDiffs = assetDiffs;
58
+ if (assetDiffs.length === 3) {
59
+ const nativeIdx = assetDiffs.findIndex(diff => isNativeSui(diff.asset));
60
+ if (nativeIdx !== -1) {
61
+ relevantDiffs = assetDiffs.filter((_, i) => i !== nativeIdx);
62
+ }
63
+ }
64
+ if (relevantDiffs.length === 1) {
65
+ const [diff] = relevantDiffs;
66
+ // A single diff with an `in` side but no `out` would be a pure receive;
67
+ // we don't surface that as a "you're sending" headline.
68
+ if (!diff.out || diff.in)
69
+ return null;
70
+ const from = blockaidSuiAssetFrom(diff.asset);
71
+ if (!from)
72
+ return null;
73
+ const fromAmount = toBigInt(diff.out.raw_value);
74
+ if (fromAmount === null)
75
+ return null;
76
+ return {
77
+ transfer: {
78
+ from,
79
+ fromAmount,
80
+ },
81
+ };
82
+ }
83
+ // Strict two-diff swap: one diff is out-only, the other is in-only, and
84
+ // they're on different assets. Anything else (mixed in+out on one side,
85
+ // three+ relevant diffs, same-asset refund pair) returns `null` rather
86
+ // than risk a misleading partial headline.
87
+ if (relevantDiffs.length !== 2)
88
+ return null;
89
+ const [a, b] = relevantDiffs;
90
+ const outDiff = !a.in && a.out ? a : !b.in && b.out ? b : null;
91
+ const inDiff = !a.out && a.in ? a : !b.out && b.in ? b : null;
92
+ if (!outDiff || !inDiff || outDiff === inDiff)
93
+ return null;
94
+ if (!outDiff.out || !inDiff.in)
95
+ return null;
96
+ const from = blockaidSuiAssetFrom(outDiff.asset);
97
+ const to = blockaidSuiAssetFrom(inDiff.asset);
98
+ if (!from || !to || from.coinType === to.coinType)
99
+ return null;
100
+ const fromAmount = toBigInt(outDiff.out.raw_value);
101
+ const toAmount = toBigInt(inDiff.in.raw_value);
102
+ if (fromAmount === null || toAmount === null)
103
+ return null;
104
+ return {
105
+ swap: {
106
+ from,
107
+ to,
108
+ fromAmount,
109
+ toAmount,
110
+ },
111
+ };
112
+ };
113
+ const blockaidSuiAssetFrom = (asset) => {
114
+ const coinType = coinTypeFromAsset(asset);
115
+ if (!coinType)
116
+ return null;
117
+ return {
118
+ coinType,
119
+ symbol: asset.symbol || coinType.split('::').pop() || coinType,
120
+ decimals: asset.decimals,
121
+ logo: asset.logo_url ?? asset.logo,
122
+ };
123
+ };
3
124
  export const parseBlockaidSolanaSimulation = async (simulation) => {
4
125
  const assetDiffs = simulation.account_summary.account_assets_diff;
5
126
  // When we have 3 items and one is native SOL, filter it out and use the other two tokens.
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/api/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/api/core.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,23 @@
1
1
  import { Coin } from '../../../../coin/Coin.js';
2
+ export type BlockaidSuiAsset = {
3
+ coinType: string;
4
+ symbol: string;
5
+ decimals: number;
6
+ logo?: string;
7
+ };
8
+ export type BlockaidSuiSimulationInfo = {
9
+ swap: {
10
+ from: BlockaidSuiAsset;
11
+ to: BlockaidSuiAsset;
12
+ fromAmount: bigint;
13
+ toAmount: bigint;
14
+ };
15
+ } | {
16
+ transfer: {
17
+ from: BlockaidSuiAsset;
18
+ fromAmount: bigint;
19
+ };
20
+ };
2
21
  export type BlockaidSolanaSimulationInfo = {
3
22
  swap: {
4
23
  fromMint: string;
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,MAAM,MAAM,4BAA4B,GACpC;IACE,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;CACF,GACD;IACE,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AAEL,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,wBAAwB,EAAE,CAAA;CACpC,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,yBAAyB,GACjC;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,gBAAgB,CAAA;QACtB,EAAE,EAAE,gBAAgB,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF,GACD;IACE,QAAQ,EAAE;QACR,IAAI,EAAE,gBAAgB,CAAA;QACtB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AAEL,MAAM,MAAM,4BAA4B,GACpC;IACE,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;CACF,GACD;IACE,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AAEL,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,wBAAwB,EAAE,CAAA;CACpC,GAAG,IAAI,CAAA"}
@@ -3,4 +3,5 @@ import { BlockaidSupportedEvmChain } from '../../evmChains.js';
3
3
  import { BlockaidSimulationForChainKind, BlockaidTxSimulationInput } from './resolver.js';
4
4
  export declare function getTxBlockaidSimulation(input: BlockaidTxSimulationInput<BlockaidSupportedEvmChain>): Promise<BlockaidSimulationForChainKind<'evm'>>;
5
5
  export declare function getTxBlockaidSimulation(input: BlockaidTxSimulationInput<typeof Chain.Solana>): Promise<BlockaidSimulationForChainKind<'solana'>>;
6
+ export declare function getTxBlockaidSimulation(input: BlockaidTxSimulationInput<typeof Chain.Sui>): Promise<BlockaidSimulationForChainKind<'sui'>>;
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAgC,MAAM,YAAY,CAAA;AAcpH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,yBAAyB,CAAC,yBAAyB,CAAC,GAC1D,OAAO,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;AAEjD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,yBAAyB,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,GACpD,OAAO,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAgC,MAAM,YAAY,CAAA;AAiBpH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,yBAAyB,CAAC,yBAAyB,CAAC,GAC1D,OAAO,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;AAEjD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,yBAAyB,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,GACpD,OAAO,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEpD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,yBAAyB,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GACjD,OAAO,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA"}
@@ -1,15 +1,20 @@
1
1
  import { getChainKind } from '@vultisig/core-chain/ChainKind';
2
2
  import { getEvmTxBlockaidSimulation } from './resolvers/evm.js';
3
3
  import { getSolanaTxBlockaidSimulation } from './resolvers/solana.js';
4
+ import { getSuiTxBlockaidSimulation } from './resolvers/sui.js';
4
5
  const resolvers = {
5
6
  solana: getSolanaTxBlockaidSimulation,
6
7
  evm: getEvmTxBlockaidSimulation,
8
+ sui: getSuiTxBlockaidSimulation,
7
9
  };
8
10
  export async function getTxBlockaidSimulation(input) {
9
11
  const chainKind = getChainKind(input.chain);
10
12
  if (chainKind === 'solana') {
11
13
  return resolvers.solana(input);
12
14
  }
15
+ if (chainKind === 'sui') {
16
+ return resolvers.sui(input);
17
+ }
13
18
  return resolvers.evm(input);
14
19
  }
15
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAK9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAA;AAOlE,MAAM,SAAS,GAAgB;IAC7B,MAAM,EAAE,6BAA6B;IACrC,GAAG,EAAE,0BAA0B;CAChC,CAAA;AAUD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAmC;IAEnC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAE3C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAgE,CAAA;IAC/F,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAgE,CAAA;AAC5F,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAK9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAQ5D,MAAM,SAAS,GAAgB;IAC7B,MAAM,EAAE,6BAA6B;IACrC,GAAG,EAAE,0BAA0B;IAC/B,GAAG,EAAE,0BAA0B;CAChC,CAAA;AAcD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAmC;IAEnC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAE3C,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAgE,CAAA;IAC/F,CAAC;IAED,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAgE,CAAA;IAC5F,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAgE,CAAA;AAC5F,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Resolver } from '@vultisig/lib-utils/types/Resolver';
2
2
  import { BlockaidSimulationSupportedChain, BlockaidSimulationSupportedChainKind } from '../../simulationChains.js';
3
- import { BlockaidEVMSimulation, BlockaidSolanaSimulation } from './api/core.js';
3
+ import { BlockaidEVMSimulation, BlockaidSolanaSimulation, BlockaidSuiSimulation } from './api/core.js';
4
4
  export type BlockaidTxSimulationInput<T extends BlockaidSimulationSupportedChain = BlockaidSimulationSupportedChain> = {
5
5
  chain: T;
6
6
  data: Record<string, unknown>;
@@ -8,6 +8,7 @@ export type BlockaidTxSimulationInput<T extends BlockaidSimulationSupportedChain
8
8
  type BlockaidSimulationByKind = {
9
9
  evm: BlockaidEVMSimulation;
10
10
  solana: BlockaidSolanaSimulation;
11
+ sui: BlockaidSuiSimulation;
11
12
  };
12
13
  export type BlockaidSimulationForChainKind<K extends BlockaidSimulationSupportedChainKind> = BlockaidSimulationByKind[K];
13
14
  export type BlockaidTxSimulationResolver<T extends BlockaidSimulationSupportedChain = BlockaidSimulationSupportedChain, K extends BlockaidSimulationSupportedChainKind = BlockaidSimulationSupportedChainKind> = Resolver<BlockaidTxSimulationInput<T>, Promise<BlockaidSimulationForChainKind<K>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,gCAAgC,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAA;AAC/G,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAE5E,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,gCAAgC,GAAG,gCAAgC,IAAI;IACrH,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,qBAAqB,CAAA;IAC1B,MAAM,EAAE,wBAAwB,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,8BAA8B,CAAC,CAAC,SAAS,oCAAoC,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAAA;AAExH,MAAM,MAAM,4BAA4B,CACtC,CAAC,SAAS,gCAAgC,GAAG,gCAAgC,EAC7E,CAAC,SAAS,oCAAoC,GAAG,oCAAoC,IACnF,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,gCAAgC,EAAE,oCAAoC,EAAE,MAAM,wBAAwB,CAAA;AAC/G,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEnG,MAAM,MAAM,yBAAyB,CAAC,CAAC,SAAS,gCAAgC,GAAG,gCAAgC,IAAI;IACrH,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,qBAAqB,CAAA;IAC1B,MAAM,EAAE,wBAAwB,CAAA;IAChC,GAAG,EAAE,qBAAqB,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,8BAA8B,CAAC,CAAC,SAAS,oCAAoC,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAAA;AAExH,MAAM,MAAM,4BAA4B,CACtC,CAAC,SAAS,gCAAgC,GAAG,gCAAgC,EAC7E,CAAC,SAAS,oCAAoC,GAAG,oCAAoC,IACnF,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { OtherChain } from '@vultisig/core-chain/Chain';
2
+ import { BlockaidTxSimulationResolver } from '../resolver.js';
3
+ /**
4
+ * Asks Blockaid's `/sui/transaction/scan` endpoint for the simulation block
5
+ * only. The same endpoint also serves validation (security risk) — the
6
+ * separate `getSuiTxBlockaidValidation` resolver requests that.
7
+ */
8
+ export declare const getSuiTxBlockaidSimulation: BlockaidTxSimulationResolver<OtherChain.Sui, 'sui'>;
9
+ //# sourceMappingURL=sui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAIvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AAM1D;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,4BAA4B,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAG1F,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { queryBlockaid } from '../../../core/query.js';
2
+ /**
3
+ * Asks Blockaid's `/sui/transaction/scan` endpoint for the simulation block
4
+ * only. The same endpoint also serves validation (security risk) — the
5
+ * separate `getSuiTxBlockaidValidation` resolver requests that.
6
+ */
7
+ export const getSuiTxBlockaidSimulation = async ({ data }) => {
8
+ const { simulation } = await queryBlockaid('/sui/transaction/scan', data);
9
+ return simulation;
10
+ };
11
+ //# sourceMappingURL=sui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../../../packages/core/chain/security/blockaid/tx/simulation/resolvers/sui.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAQnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAwD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IAChH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAA0B,uBAAuB,EAAE,IAAI,CAAC,CAAA;IAClG,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ export declare const limitSwapExpiryHours: readonly [12, 24, 72];
2
+ export type LimitSwapExpiryHours = (typeof limitSwapExpiryHours)[number];
3
+ export type LimitSwapNumericInput = bigint | number | string;
4
+ export type LimitSwapMemoInput = {
5
+ source_asset: string;
6
+ source_amount: LimitSwapNumericInput;
7
+ target_asset: string;
8
+ dest_addr: string;
9
+ target_price: LimitSwapNumericInput;
10
+ expiry_hours: LimitSwapExpiryHours;
11
+ };
12
+ export type LimitSwapSourceChainKind = 'utxo' | 'other';
13
+ export declare const limitSwapMemoByteLimit: Record<LimitSwapSourceChainKind, number>;
14
+ export declare const getLimitSwapSourceChainKind: (sourceAsset: string) => LimitSwapSourceChainKind;
15
+ export declare const getLimitSwapIntervalBlocks: (expiryHours: LimitSwapExpiryHours) => number;
16
+ export declare const getLimitSwapLimitAmount: ({ source_amount, target_price, }: Pick<LimitSwapMemoInput, "source_amount" | "target_price">) => bigint;
17
+ export declare const assertMemoByteLength: (memo: string, sourceChainKind: LimitSwapSourceChainKind) => void;
18
+ export declare const validateLimitSwapInputs: (inputs: LimitSwapMemoInput) => void;
19
+ export declare const buildLimitSwapMemo: (inputs: LimitSwapMemoInput) => string;
20
+ //# sourceMappingURL=limitSwapMemo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitSwapMemo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapMemo.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oBAAoB,uBAAwB,CAAA;AACzD,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAExE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAE5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,qBAAqB,CAAA;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,qBAAqB,CAAA;IACnC,YAAY,EAAE,oBAAoB,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,OAAO,CAAA;AAEvD,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAG3E,CAAA;AA8FD,eAAO,MAAM,2BAA2B,GAAI,aAAa,MAAM,KAAG,wBAGjE,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,aAAa,oBAAoB,KAAG,MAM9E,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,kCAGrC,IAAI,CAAC,kBAAkB,EAAE,eAAe,GAAG,cAAc,CAAC,KAAG,MAK/D,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,EAAE,iBAAiB,wBAAwB,KAAG,IAU9F,CAAA;AAkDD,eAAO,MAAM,uBAAuB,GAAI,QAAQ,kBAAkB,KAAG,IASpE,CAAA;AAUD,eAAO,MAAM,kBAAkB,GAAI,QAAQ,kBAAkB,KAAG,MAmB/D,CAAA"}
@@ -0,0 +1,193 @@
1
+ import { fromBech32 } from '@cosmjs/encoding';
2
+ import { Chain } from '../../Chain.js';
3
+ import { getChainKind } from '../../ChainKind.js';
4
+ import { chainPrefixToChain } from '../../chains/cosmos/thor/lp/lpChainMap.js';
5
+ import { assertValidPoolId } from '../../chains/cosmos/thor/lp/pools.js';
6
+ import { baseAffiliateBps } from '../affiliate/config.js';
7
+ import { nativeSwapAffiliateConfig } from './nativeSwapAffiliateConfig.js';
8
+ export const limitSwapExpiryHours = [12, 24, 72];
9
+ export const limitSwapMemoByteLimit = {
10
+ utxo: 80,
11
+ other: 250,
12
+ };
13
+ const priceScale = 100000000n;
14
+ const expiryHoursToIntervalBlocks = {
15
+ 12: 7_200,
16
+ 24: 14_400,
17
+ 72: 43_200,
18
+ };
19
+ const assertMemoSegmentSafe = (value, fieldName) => {
20
+ if (typeof value !== 'string' || value.length === 0) {
21
+ throw new Error(`${fieldName} must be a non-empty string`);
22
+ }
23
+ if (value.includes(':') || value.includes('/')) {
24
+ throw new Error(`${fieldName} must not contain memo separators ":" or "/"`);
25
+ }
26
+ if (/\s/.test(value)) {
27
+ throw new Error(`${fieldName} must not contain whitespace`);
28
+ }
29
+ if (!/^[\x21-\x7E]+$/.test(value)) {
30
+ throw new Error(`${fieldName} must contain printable ASCII characters only`);
31
+ }
32
+ };
33
+ const getAssetChainPrefix = (asset) => {
34
+ const [prefix] = asset.split('.');
35
+ return prefix;
36
+ };
37
+ const getSupportedThorchainAssetChain = (asset, fieldName) => {
38
+ assertValidPoolId(asset);
39
+ const prefix = getAssetChainPrefix(asset);
40
+ const chain = chainPrefixToChain(prefix);
41
+ if (!chain) {
42
+ throw new Error(`${fieldName} has unsupported THORChain asset prefix: ${prefix}`);
43
+ }
44
+ return chain;
45
+ };
46
+ const parsePositiveInteger = (value, fieldName) => {
47
+ if (typeof value === 'bigint') {
48
+ if (value > 0n)
49
+ return value;
50
+ throw new Error(`${fieldName} must be greater than 0`);
51
+ }
52
+ if (typeof value === 'number') {
53
+ if (Number.isSafeInteger(value) && value > 0)
54
+ return BigInt(value);
55
+ throw new Error(`${fieldName} must be a positive safe integer`);
56
+ }
57
+ const normalized = value.trim();
58
+ if (!/^[1-9]\d*$/.test(normalized)) {
59
+ throw new Error(`${fieldName} must be a positive integer string`);
60
+ }
61
+ return BigInt(normalized);
62
+ };
63
+ const parsePositiveDecimal = (value, fieldName) => {
64
+ if (typeof value === 'bigint') {
65
+ if (value > 0n)
66
+ return value * priceScale;
67
+ throw new Error(`${fieldName} must be greater than 0`);
68
+ }
69
+ let normalized;
70
+ if (typeof value === 'number') {
71
+ if (!Number.isFinite(value) || value <= 0) {
72
+ throw new Error(`${fieldName} must be greater than 0`);
73
+ }
74
+ normalized = value.toString();
75
+ if (normalized.includes('e')) {
76
+ normalized = value.toFixed(8);
77
+ }
78
+ if (Number(normalized) !== value) {
79
+ throw new Error(`${fieldName} must be a positive decimal with at most 8 fractional digits`);
80
+ }
81
+ }
82
+ else {
83
+ normalized = value.trim();
84
+ }
85
+ const match = normalized.match(/^(\d+)(?:\.(\d{1,8})?)?$/);
86
+ if (!match) {
87
+ throw new Error(`${fieldName} must be a positive decimal with at most 8 fractional digits`);
88
+ }
89
+ const [, whole, fractional = ''] = match;
90
+ const scaled = BigInt(whole) * priceScale + BigInt(fractional.padEnd(8, '0'));
91
+ if (scaled <= 0n) {
92
+ throw new Error(`${fieldName} must be greater than 0`);
93
+ }
94
+ return scaled;
95
+ };
96
+ export const getLimitSwapSourceChainKind = (sourceAsset) => {
97
+ const chain = getSupportedThorchainAssetChain(sourceAsset, 'source_asset');
98
+ return getChainKind(chain) === 'utxo' ? 'utxo' : 'other';
99
+ };
100
+ export const getLimitSwapIntervalBlocks = (expiryHours) => {
101
+ const interval = expiryHoursToIntervalBlocks[expiryHours];
102
+ if (!interval) {
103
+ throw new Error(`expiry_hours must be one of ${limitSwapExpiryHours.join(', ')}, got ${expiryHours}`);
104
+ }
105
+ return interval;
106
+ };
107
+ export const getLimitSwapLimitAmount = ({ source_amount, target_price, }) => {
108
+ const sourceAmount = parsePositiveInteger(source_amount, 'source_amount');
109
+ const targetPrice = parsePositiveDecimal(target_price, 'target_price');
110
+ return (sourceAmount * targetPrice) / priceScale;
111
+ };
112
+ export const assertMemoByteLength = (memo, sourceChainKind) => {
113
+ const limit = limitSwapMemoByteLimit[sourceChainKind];
114
+ if (!limit) {
115
+ throw new Error(`Unknown source chain kind: ${sourceChainKind}`);
116
+ }
117
+ const byteLength = new TextEncoder().encode(memo).length;
118
+ if (byteLength > limit) {
119
+ throw new Error(`THORChain limit swap memo is ${byteLength} bytes, exceeding ${sourceChainKind} limit ${limit}`);
120
+ }
121
+ };
122
+ const base58AddressChars = '1-9A-HJ-NP-Za-km-z';
123
+ const isBech32Address = (address, prefix) => {
124
+ try {
125
+ const decoded = fromBech32(address);
126
+ return decoded.prefix === prefix && decoded.data.length > 0;
127
+ }
128
+ catch {
129
+ return false;
130
+ }
131
+ };
132
+ const isEvmAddress = (address) => /^0x[0-9a-fA-F]{40}$/.test(address);
133
+ const limitSwapDestinationValidators = {
134
+ [Chain.Arbitrum]: isEvmAddress,
135
+ [Chain.Avalanche]: isEvmAddress,
136
+ [Chain.Base]: isEvmAddress,
137
+ [Chain.BSC]: isEvmAddress,
138
+ [Chain.Ethereum]: isEvmAddress,
139
+ [Chain.Bitcoin]: address => new RegExp(`^(bc1[ac-hj-np-z02-9]{11,71}|[13][${base58AddressChars}]{25,34})$`, 'i').test(address),
140
+ [Chain.BitcoinCash]: address => new RegExp(`^([qp][0-9a-z]{41}|[13][${base58AddressChars}]{25,34})$`, 'i').test(address),
141
+ [Chain.Dash]: address => new RegExp(`^X[${base58AddressChars}]{33}$`).test(address),
142
+ [Chain.Dogecoin]: address => new RegExp(`^D[5-9A-HJ-NP-U][${base58AddressChars}]{32}$`).test(address),
143
+ [Chain.Litecoin]: address => new RegExp(`^(ltc1[ac-hj-np-z02-9]{11,71}|[LM3][${base58AddressChars}]{25,34})$`, 'i').test(address),
144
+ [Chain.Zcash]: address => new RegExp(`^t[13][${base58AddressChars}]{33}$`).test(address),
145
+ [Chain.Cosmos]: address => isBech32Address(address, 'cosmos'),
146
+ [Chain.Kujira]: address => isBech32Address(address, 'kujira'),
147
+ [Chain.THORChain]: address => isBech32Address(address, 'thor'),
148
+ [Chain.Ripple]: address => new RegExp(`^r[${base58AddressChars}]{24,34}$`).test(address),
149
+ [Chain.Tron]: address => new RegExp(`^T[${base58AddressChars}]{33}$`).test(address),
150
+ };
151
+ const assertValidLimitSwapDestinationAddress = (targetChain, address) => {
152
+ const validator = limitSwapDestinationValidators[targetChain];
153
+ if (!validator) {
154
+ throw new Error(`target_asset chain ${targetChain} is not supported for limit swap destinations`);
155
+ }
156
+ if (!validator(address)) {
157
+ throw new Error(`dest_addr is not a valid ${targetChain} address`);
158
+ }
159
+ };
160
+ export const validateLimitSwapInputs = (inputs) => {
161
+ getSupportedThorchainAssetChain(inputs.source_asset, 'source_asset');
162
+ const targetChain = getSupportedThorchainAssetChain(inputs.target_asset, 'target_asset');
163
+ assertMemoSegmentSafe(inputs.dest_addr, 'dest_addr');
164
+ assertValidLimitSwapDestinationAddress(targetChain, inputs.dest_addr);
165
+ parsePositiveInteger(inputs.source_amount, 'source_amount');
166
+ parsePositiveDecimal(inputs.target_price, 'target_price');
167
+ getLimitSwapIntervalBlocks(inputs.expiry_hours);
168
+ };
169
+ const buildMemo = (inputs, includeAffiliate) => {
170
+ const limit = getLimitSwapLimitAmount(inputs);
171
+ const interval = getLimitSwapIntervalBlocks(inputs.expiry_hours);
172
+ const memo = `=<:${inputs.target_asset}:${inputs.dest_addr}:${limit}/${interval}/0`;
173
+ return includeAffiliate ? `${memo}:${nativeSwapAffiliateConfig.affiliateFeeAddress}:${baseAffiliateBps}` : memo;
174
+ };
175
+ export const buildLimitSwapMemo = (inputs) => {
176
+ validateLimitSwapInputs(inputs);
177
+ const sourceChainKind = getLimitSwapSourceChainKind(inputs.source_asset);
178
+ const affiliateMemo = buildMemo(inputs, true);
179
+ if (sourceChainKind === 'utxo') {
180
+ try {
181
+ assertMemoByteLength(affiliateMemo, sourceChainKind);
182
+ return affiliateMemo;
183
+ }
184
+ catch {
185
+ const memoWithoutAffiliate = buildMemo(inputs, false);
186
+ assertMemoByteLength(memoWithoutAffiliate, sourceChainKind);
187
+ return memoWithoutAffiliate;
188
+ }
189
+ }
190
+ assertMemoByteLength(affiliateMemo, sourceChainKind);
191
+ return affiliateMemo;
192
+ };
193
+ //# sourceMappingURL=limitSwapMemo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitSwapMemo.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapMemo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ [
2
+ {
3
+ "name": "eth-to-btc-12h",
4
+ "source_chain_kind": "other",
5
+ "affiliate_included": true,
6
+ "inputs": {
7
+ "source_asset": "ETH.ETH",
8
+ "source_amount": 100000000,
9
+ "target_asset": "BTC.BTC",
10
+ "dest_addr": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
11
+ "target_price": 0.04,
12
+ "expiry_hours": 12
13
+ },
14
+ "expected_memo": "=<:BTC.BTC:bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh:4000000/7200/0:v0:50"
15
+ },
16
+ {
17
+ "name": "eth-to-btc-24h",
18
+ "source_chain_kind": "other",
19
+ "affiliate_included": true,
20
+ "inputs": {
21
+ "source_asset": "ETH.ETH",
22
+ "source_amount": 100000000,
23
+ "target_asset": "BTC.BTC",
24
+ "dest_addr": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
25
+ "target_price": 0.04,
26
+ "expiry_hours": 24
27
+ },
28
+ "expected_memo": "=<:BTC.BTC:bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh:4000000/14400/0:v0:50"
29
+ },
30
+ {
31
+ "name": "eth-to-btc-3d",
32
+ "source_chain_kind": "other",
33
+ "affiliate_included": true,
34
+ "inputs": {
35
+ "source_asset": "ETH.ETH",
36
+ "source_amount": 100000000,
37
+ "target_asset": "BTC.BTC",
38
+ "dest_addr": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
39
+ "target_price": 0.04,
40
+ "expiry_hours": 72
41
+ },
42
+ "expected_memo": "=<:BTC.BTC:bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh:4000000/43200/0:v0:50"
43
+ },
44
+ {
45
+ "name": "btc-to-eth-12h",
46
+ "source_chain_kind": "utxo",
47
+ "affiliate_included": true,
48
+ "inputs": {
49
+ "source_asset": "BTC.BTC",
50
+ "source_amount": 100000000,
51
+ "target_asset": "ETH.ETH",
52
+ "dest_addr": "0x742d35Cc6634C0532925a3b844Bc9e7595f12345",
53
+ "target_price": 16,
54
+ "expiry_hours": 12
55
+ },
56
+ "expected_memo": "=<:ETH.ETH:0x742d35Cc6634C0532925a3b844Bc9e7595f12345:1600000000/7200/0:v0:50"
57
+ },
58
+ {
59
+ "name": "btc-to-eth-24h",
60
+ "source_chain_kind": "utxo",
61
+ "affiliate_included": true,
62
+ "inputs": {
63
+ "source_asset": "BTC.BTC",
64
+ "source_amount": 100000000,
65
+ "target_asset": "ETH.ETH",
66
+ "dest_addr": "0x742d35Cc6634C0532925a3b844Bc9e7595f12345",
67
+ "target_price": 16,
68
+ "expiry_hours": 24
69
+ },
70
+ "expected_memo": "=<:ETH.ETH:0x742d35Cc6634C0532925a3b844Bc9e7595f12345:1600000000/14400/0:v0:50"
71
+ },
72
+ {
73
+ "name": "btc-to-eth-3d",
74
+ "source_chain_kind": "utxo",
75
+ "affiliate_included": true,
76
+ "inputs": {
77
+ "source_asset": "BTC.BTC",
78
+ "source_amount": 100000000,
79
+ "target_asset": "ETH.ETH",
80
+ "dest_addr": "0x742d35Cc6634C0532925a3b844Bc9e7595f12345",
81
+ "target_price": 16,
82
+ "expiry_hours": 72
83
+ },
84
+ "expected_memo": "=<:ETH.ETH:0x742d35Cc6634C0532925a3b844Bc9e7595f12345:1600000000/43200/0:v0:50"
85
+ },
86
+ {
87
+ "name": "usdt-to-btc-12h",
88
+ "source_chain_kind": "other",
89
+ "affiliate_included": true,
90
+ "inputs": {
91
+ "source_asset": "ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7",
92
+ "source_amount": 100000000,
93
+ "target_asset": "BTC.BTC",
94
+ "dest_addr": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
95
+ "target_price": 0.00001,
96
+ "expiry_hours": 12
97
+ },
98
+ "expected_memo": "=<:BTC.BTC:bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh:1000/7200/0:v0:50"
99
+ },
100
+ {
101
+ "name": "usdt-to-btc-24h",
102
+ "source_chain_kind": "other",
103
+ "affiliate_included": true,
104
+ "inputs": {
105
+ "source_asset": "ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7",
106
+ "source_amount": 100000000,
107
+ "target_asset": "BTC.BTC",
108
+ "dest_addr": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
109
+ "target_price": 0.00001,
110
+ "expiry_hours": 24
111
+ },
112
+ "expected_memo": "=<:BTC.BTC:bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh:1000/14400/0:v0:50"
113
+ },
114
+ {
115
+ "name": "usdt-to-btc-3d",
116
+ "source_chain_kind": "other",
117
+ "affiliate_included": true,
118
+ "inputs": {
119
+ "source_asset": "ETH.USDT-0XDAC17F958D2EE523A2206206994597C13D831EC7",
120
+ "source_amount": 100000000,
121
+ "target_asset": "BTC.BTC",
122
+ "dest_addr": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
123
+ "target_price": 0.00001,
124
+ "expiry_hours": 72
125
+ },
126
+ "expected_memo": "=<:BTC.BTC:bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh:1000/43200/0:v0:50"
127
+ },
128
+ {
129
+ "name": "btc-to-rune-12h",
130
+ "source_chain_kind": "utxo",
131
+ "affiliate_included": true,
132
+ "inputs": {
133
+ "source_asset": "BTC.BTC",
134
+ "source_amount": 100000000,
135
+ "target_asset": "THOR.RUNE",
136
+ "dest_addr": "thor1x2whgc2nt665y0kc44uywhynazvp0l8tp0vtu6",
137
+ "target_price": 10,
138
+ "expiry_hours": 12
139
+ },
140
+ "expected_memo": "=<:THOR.RUNE:thor1x2whgc2nt665y0kc44uywhynazvp0l8tp0vtu6:1000000000/7200/0:v0:50"
141
+ },
142
+ {
143
+ "name": "btc-to-rune-24h",
144
+ "source_chain_kind": "utxo",
145
+ "affiliate_included": false,
146
+ "inputs": {
147
+ "source_asset": "BTC.BTC",
148
+ "source_amount": 100000000,
149
+ "target_asset": "THOR.RUNE",
150
+ "dest_addr": "thor1x2whgc2nt665y0kc44uywhynazvp0l8tp0vtu6",
151
+ "target_price": 10,
152
+ "expiry_hours": 24
153
+ },
154
+ "expected_memo": "=<:THOR.RUNE:thor1x2whgc2nt665y0kc44uywhynazvp0l8tp0vtu6:1000000000/14400/0"
155
+ },
156
+ {
157
+ "name": "btc-to-rune-3d",
158
+ "source_chain_kind": "utxo",
159
+ "affiliate_included": false,
160
+ "inputs": {
161
+ "source_asset": "BTC.BTC",
162
+ "source_amount": 100000000,
163
+ "target_asset": "THOR.RUNE",
164
+ "dest_addr": "thor1x2whgc2nt665y0kc44uywhynazvp0l8tp0vtu6",
165
+ "target_price": 10,
166
+ "expiry_hours": 72
167
+ },
168
+ "expected_memo": "=<:THOR.RUNE:thor1x2whgc2nt665y0kc44uywhynazvp0l8tp0vtu6:1000000000/43200/0"
169
+ }
170
+ ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vultisig/core-chain",
3
- "version": "2.12.0",
3
+ "version": "2.14.0",
4
4
  "description": "Blockchain chain logic shared across Vultisig clients",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -11,7 +11,8 @@
11
11
  "type": "module",
12
12
  "sideEffects": false,
13
13
  "files": [
14
- "dist"
14
+ "dist",
15
+ "fixtures"
15
16
  ],
16
17
  "exports": {
17
18
  "./amount/fromChainAmount": {
@@ -1074,6 +1075,7 @@
1074
1075
  "import": "./dist/coin/utils/sortCoinsByBalance.js",
1075
1076
  "default": "./dist/coin/utils/sortCoinsByBalance.js"
1076
1077
  },
1078
+ "./fixtures/limit-swap-memos.json": "./fixtures/limit-swap-memos.json",
1077
1079
  "./package.json": "./package.json",
1078
1080
  "./publicKey/address/bittensor": {
1079
1081
  "types": "./dist/publicKey/address/bittensor.d.ts",
@@ -1210,6 +1212,11 @@
1210
1212
  "import": "./dist/security/blockaid/tx/simulation/resolvers/solana.js",
1211
1213
  "default": "./dist/security/blockaid/tx/simulation/resolvers/solana.js"
1212
1214
  },
1215
+ "./security/blockaid/tx/simulation/resolvers/sui": {
1216
+ "types": "./dist/security/blockaid/tx/simulation/resolvers/sui.d.ts",
1217
+ "import": "./dist/security/blockaid/tx/simulation/resolvers/sui.js",
1218
+ "default": "./dist/security/blockaid/tx/simulation/resolvers/sui.js"
1219
+ },
1213
1220
  "./security/blockaid/tx/validation": {
1214
1221
  "types": "./dist/security/blockaid/tx/validation/index.d.ts",
1215
1222
  "import": "./dist/security/blockaid/tx/validation/index.js",
@@ -1465,6 +1472,11 @@
1465
1472
  "import": "./dist/swap/native/asset/toNativeSwapAsset.js",
1466
1473
  "default": "./dist/swap/native/asset/toNativeSwapAsset.js"
1467
1474
  },
1475
+ "./swap/native/limitSwapMemo": {
1476
+ "types": "./dist/swap/native/limitSwapMemo.d.ts",
1477
+ "import": "./dist/swap/native/limitSwapMemo.js",
1478
+ "default": "./dist/swap/native/limitSwapMemo.js"
1479
+ },
1468
1480
  "./swap/native/minimum/getNativeSwapMinAmountIn": {
1469
1481
  "types": "./dist/swap/native/minimum/getNativeSwapMinAmountIn.d.ts",
1470
1482
  "import": "./dist/swap/native/minimum/getNativeSwapMinAmountIn.js",