@vultisig/core-chain 2.27.0 → 2.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +157 -0
- package/dist/chains/cosmos/cosmosGasLimitRecord.js +3 -3
- package/dist/chains/cosmos/cosmosGasLimitRecord.js.map +1 -1
- package/dist/chains/cosmos/gas.d.ts +28 -1
- package/dist/chains/cosmos/gas.d.ts.map +1 -1
- package/dist/chains/cosmos/gas.js +37 -5
- package/dist/chains/cosmos/gas.js.map +1 -1
- package/dist/chains/cosmos/resolveCosmosGasLimit.d.ts +82 -0
- package/dist/chains/cosmos/resolveCosmosGasLimit.d.ts.map +1 -0
- package/dist/chains/cosmos/resolveCosmosGasLimit.js +71 -0
- package/dist/chains/cosmos/resolveCosmosGasLimit.js.map +1 -0
- package/dist/chains/cosmos/terraClassicTax.d.ts +68 -0
- package/dist/chains/cosmos/terraClassicTax.d.ts.map +1 -1
- package/dist/chains/cosmos/terraClassicTax.js +85 -0
- package/dist/chains/cosmos/terraClassicTax.js.map +1 -1
- package/dist/chains/sui/client.d.ts +11 -2
- package/dist/chains/sui/client.d.ts.map +1 -1
- package/dist/chains/sui/client.js +5 -4
- package/dist/chains/sui/client.js.map +1 -1
- package/dist/chains/sui/config.d.ts +28 -0
- package/dist/chains/sui/config.d.ts.map +1 -1
- package/dist/chains/sui/config.js +27 -0
- package/dist/chains/sui/config.js.map +1 -1
- package/dist/chains/sui/listAllCoins.d.ts +44 -0
- package/dist/chains/sui/listAllCoins.d.ts.map +1 -0
- package/dist/chains/sui/listAllCoins.js +43 -0
- package/dist/chains/sui/listAllCoins.js.map +1 -0
- package/dist/chains/sui/transactionResult.d.ts +59 -0
- package/dist/chains/sui/transactionResult.d.ts.map +1 -0
- package/dist/chains/sui/transactionResult.js +43 -0
- package/dist/chains/sui/transactionResult.js.map +1 -0
- package/dist/coin/balance/resolvers/sui.d.ts.map +1 -1
- package/dist/coin/balance/resolvers/sui.js +6 -3
- package/dist/coin/balance/resolvers/sui.js.map +1 -1
- package/dist/coin/token/metadata/resolvers/sui.d.ts +1 -1
- package/dist/coin/token/metadata/resolvers/sui.d.ts.map +1 -1
- package/dist/coin/token/metadata/resolvers/sui.js +6 -3
- package/dist/coin/token/metadata/resolvers/sui.js.map +1 -1
- package/dist/swap/general/jupiter/api/getJupiterSwapQuote.d.ts.map +1 -1
- package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js +2 -1
- package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js.map +1 -1
- package/dist/swap/native/NativeSwapChain.d.ts +2 -0
- package/dist/swap/native/NativeSwapChain.d.ts.map +1 -1
- package/dist/swap/native/NativeSwapChain.js +3 -0
- package/dist/swap/native/NativeSwapChain.js.map +1 -1
- package/dist/swap/native/asset/toNativeSwapAsset.d.ts.map +1 -1
- package/dist/swap/native/asset/toNativeSwapAsset.js +2 -5
- package/dist/swap/native/asset/toNativeSwapAsset.js.map +1 -1
- package/dist/swap/native/limitSwapAvailability.d.ts +21 -0
- package/dist/swap/native/limitSwapAvailability.d.ts.map +1 -0
- package/dist/swap/native/limitSwapAvailability.js +32 -0
- package/dist/swap/native/limitSwapAvailability.js.map +1 -0
- package/dist/swap/native/limitSwapInbound.d.ts +53 -0
- package/dist/swap/native/limitSwapInbound.d.ts.map +1 -0
- package/dist/swap/native/limitSwapInbound.js +73 -0
- package/dist/swap/native/limitSwapInbound.js.map +1 -0
- package/dist/swap/native/limitSwapMemo.d.ts +49 -0
- package/dist/swap/native/limitSwapMemo.d.ts.map +1 -1
- package/dist/swap/native/limitSwapMemo.js +80 -1
- package/dist/swap/native/limitSwapMemo.js.map +1 -1
- package/dist/tx/broadcast/resolvers/sui.d.ts +2 -8
- package/dist/tx/broadcast/resolvers/sui.d.ts.map +1 -1
- package/dist/tx/broadcast/resolvers/sui.js +18 -17
- package/dist/tx/broadcast/resolvers/sui.js.map +1 -1
- package/dist/tx/broadcast/transientRetry.d.ts.map +1 -1
- package/dist/tx/broadcast/transientRetry.js +30 -2
- package/dist/tx/broadcast/transientRetry.js.map +1 -1
- package/dist/tx/broadcast/verifyBroadcastByHash.d.ts +8 -4
- package/dist/tx/broadcast/verifyBroadcastByHash.d.ts.map +1 -1
- package/dist/tx/broadcast/verifyBroadcastByHash.js +33 -11
- package/dist/tx/broadcast/verifyBroadcastByHash.js.map +1 -1
- package/dist/tx/hash/resolvers/sui.d.ts.map +1 -1
- package/dist/tx/hash/resolvers/sui.js +13 -3
- package/dist/tx/hash/resolvers/sui.js.map +1 -1
- package/dist/tx/status/resolvers/sui.d.ts.map +1 -1
- package/dist/tx/status/resolvers/sui.js +15 -6
- package/dist/tx/status/resolvers/sui.js.map +1 -1
- package/dist/tx/status/resolvers/tron.d.ts.map +1 -1
- package/dist/tx/status/resolvers/tron.js +35 -6
- package/dist/tx/status/resolvers/tron.js.map +1 -1
- package/package.json +27 -7
- package/dist/chains/cosmos/resolveCosmosGasFee.d.ts +0 -49
- package/dist/chains/cosmos/resolveCosmosGasFee.d.ts.map +0 -1
- package/dist/chains/cosmos/resolveCosmosGasFee.js +0 -35
- package/dist/chains/cosmos/resolveCosmosGasFee.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeSwapChain.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/NativeSwapChain.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"NativeSwapChain.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/NativeSwapChain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toNativeSwapAsset.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/asset/toNativeSwapAsset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAA;
|
|
1
|
+
{"version":3,"file":"toNativeSwapAsset.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/asset/toNativeSwapAsset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAA;AA+DhF,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,GAAI,uBAAuB,OAAO,GAAG,gBAAgB,KAAG,MAoBrF,CAAA"}
|
|
@@ -2,10 +2,7 @@ import { Chain } from '@vultisig/core-chain/Chain';
|
|
|
2
2
|
import { isOneOf } from '@vultisig/lib-utils/array/isOneOf';
|
|
3
3
|
import { shouldBePresent } from '@vultisig/lib-utils/assert/shouldBePresent';
|
|
4
4
|
import { isFeeCoin } from '../../../coin/utils/isFeeCoin.js';
|
|
5
|
-
import { nativeSwapChainIds, nativeSwapChains, nativeSwapEnabledChains } from '../NativeSwapChain.js';
|
|
6
|
-
const nativeSwapChainIdValues = Object.values(nativeSwapChainIds);
|
|
7
|
-
const securedAssetDenomChainKeyToSwapId = Object.fromEntries(nativeSwapChainIdValues.map(swapId => [swapId.toLowerCase(), swapId]));
|
|
8
|
-
const getSecuredAssetSwapId = (chainKey) => securedAssetDenomChainKeyToSwapId[chainKey.toLowerCase()];
|
|
5
|
+
import { getNativeSwapChainIdFromDenomPrefix, nativeSwapChainIds, nativeSwapChains, nativeSwapEnabledChains, } from '../NativeSwapChain.js';
|
|
9
6
|
const formatSecuredAssetRest = (rest) => {
|
|
10
7
|
const evmTail = rest.match(/^(.+)-(0x[0-9a-fA-F]+)$/i);
|
|
11
8
|
if (evmTail) {
|
|
@@ -26,7 +23,7 @@ const normalizeNativeSwapChainDenom = ({ chain, id, ticker, }) => {
|
|
|
26
23
|
}
|
|
27
24
|
const segments = denom.split('-');
|
|
28
25
|
if (segments.length >= 2) {
|
|
29
|
-
const swapId =
|
|
26
|
+
const swapId = getNativeSwapChainIdFromDenomPrefix(segments[0]);
|
|
30
27
|
if (swapId) {
|
|
31
28
|
const rest = segments.slice(1).join('-');
|
|
32
29
|
// THORChain secured assets settle on THORChain (a thor1 destination), so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toNativeSwapAsset.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/asset/toNativeSwapAsset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAA;AAG5E,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAEzD,OAAO,
|
|
1
|
+
{"version":3,"file":"toNativeSwapAsset.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/native/asset/toNativeSwapAsset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** The mimir key gating THORChain's Advanced Swap Queue — what makes `=<` a real resting limit order. */
|
|
2
|
+
export declare const advancedSwapQueueMimirKey = "EnableAdvSwapQueue";
|
|
3
|
+
/**
|
|
4
|
+
* Interpret a `/thorchain/mimir/key/<KEY>` body. THORChain returns the value as a
|
|
5
|
+
* bare integer, and only an exact `1` (after trimming whitespace) means enabled.
|
|
6
|
+
*
|
|
7
|
+
* Deliberately not integer-parsed: on a gate that protects funds an over-broad
|
|
8
|
+
* accept set is worse than a rare false block. `0`, `2`, `-1`, a quoted `"1"`,
|
|
9
|
+
* `01`, `+1`, and `1.0` all read as disabled.
|
|
10
|
+
*/
|
|
11
|
+
export declare const parseAdvancedSwapQueueMimir: (raw: string) => boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Whether THORChain currently accepts resting limit orders.
|
|
14
|
+
*
|
|
15
|
+
* Fails closed — any network, HTTP, or parse failure returns `false`. A `=<`
|
|
16
|
+
* order placed while the queue is disabled can be treated as a market swap or
|
|
17
|
+
* rejected on-chain, executing at a price the user never agreed to, so the only
|
|
18
|
+
* value that unblocks placement is a live, confirmed `1`.
|
|
19
|
+
*/
|
|
20
|
+
export declare const getAdvancedSwapQueueEnabled: () => Promise<boolean>;
|
|
21
|
+
//# sourceMappingURL=limitSwapAvailability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitSwapAvailability.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapAvailability.ts"],"names":[],"mappings":"AAMA,yGAAyG;AACzG,eAAO,MAAM,yBAAyB,uBAAuB,CAAA;AAI7D;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,GAAI,KAAK,MAAM,KAAG,OAA6B,CAAA;AAEvF;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,QAAa,OAAO,CAAC,OAAO,CAYnE,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { attempt, withFallback } from '@vultisig/lib-utils/attempt';
|
|
2
|
+
import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
|
|
3
|
+
import { Chain } from '../../Chain.js';
|
|
4
|
+
import { cosmosRpcUrl } from '../../chains/cosmos/cosmosRpcUrl.js';
|
|
5
|
+
/** The mimir key gating THORChain's Advanced Swap Queue — what makes `=<` a real resting limit order. */
|
|
6
|
+
export const advancedSwapQueueMimirKey = 'EnableAdvSwapQueue';
|
|
7
|
+
const advancedSwapQueueMimirUrl = `${cosmosRpcUrl[Chain.THORChain]}/thorchain/mimir/key/${advancedSwapQueueMimirKey}`;
|
|
8
|
+
/**
|
|
9
|
+
* Interpret a `/thorchain/mimir/key/<KEY>` body. THORChain returns the value as a
|
|
10
|
+
* bare integer, and only an exact `1` (after trimming whitespace) means enabled.
|
|
11
|
+
*
|
|
12
|
+
* Deliberately not integer-parsed: on a gate that protects funds an over-broad
|
|
13
|
+
* accept set is worse than a rare false block. `0`, `2`, `-1`, a quoted `"1"`,
|
|
14
|
+
* `01`, `+1`, and `1.0` all read as disabled.
|
|
15
|
+
*/
|
|
16
|
+
export const parseAdvancedSwapQueueMimir = (raw) => raw.trim() === '1';
|
|
17
|
+
/**
|
|
18
|
+
* Whether THORChain currently accepts resting limit orders.
|
|
19
|
+
*
|
|
20
|
+
* Fails closed — any network, HTTP, or parse failure returns `false`. A `=<`
|
|
21
|
+
* order placed while the queue is disabled can be treated as a market swap or
|
|
22
|
+
* rejected on-chain, executing at a price the user never agreed to, so the only
|
|
23
|
+
* value that unblocks placement is a live, confirmed `1`.
|
|
24
|
+
*/
|
|
25
|
+
export const getAdvancedSwapQueueEnabled = async () => {
|
|
26
|
+
const raw = await withFallback(attempt(() => queryUrl(advancedSwapQueueMimirUrl, {
|
|
27
|
+
responseType: 'text',
|
|
28
|
+
headers: { 'X-Client-ID': 'vultisig' },
|
|
29
|
+
})), '');
|
|
30
|
+
return parseAdvancedSwapQueueMimir(raw);
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=limitSwapAvailability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitSwapAvailability.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapAvailability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAE/D,yGAAyG;AACzG,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAA;AAE7D,MAAM,yBAAyB,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,wBAAwB,yBAAyB,EAAE,CAAA;AAErH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAA;AAEvF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,IAAsB,EAAE;IACtE,MAAM,GAAG,GAAG,MAAM,YAAY,CAC5B,OAAO,CAAC,GAAG,EAAE,CACX,QAAQ,CAAS,yBAAyB,EAAE;QAC1C,YAAY,EAAE,MAAM;QACpB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE;KACvC,CAAC,CACH,EACD,EAAE,CACH,CAAA;IAED,OAAO,2BAA2B,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Chain } from '../../Chain.js';
|
|
2
|
+
import { ThorchainInboundAddress } from '../../chains/cosmos/thor/getThorchainInboundAddress.js';
|
|
3
|
+
/**
|
|
4
|
+
* Whether THORChain has globally paused trading, per a live `inbound_addresses`
|
|
5
|
+
* list. THORChain sets `global_trading_paused` on every inbound row when it halts
|
|
6
|
+
* network-wide.
|
|
7
|
+
*/
|
|
8
|
+
export declare const isThorchainGloballyPaused: (inbounds: ThorchainInboundAddress[]) => boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Whether a native RUNE `MsgDeposit` must be blocked given the live inbound list.
|
|
11
|
+
*
|
|
12
|
+
* RUNE settles on THORChain itself with no inbound vault, so it never passes
|
|
13
|
+
* through the per-chain halt filter an external source does — this global signal
|
|
14
|
+
* is its gate. Blocks on an empty list too: a real `inbound_addresses` response
|
|
15
|
+
* always carries many rows, so an empty (but non-throwing) result means the pause
|
|
16
|
+
* state is unverifiable and a deposit must not be signed against it.
|
|
17
|
+
*/
|
|
18
|
+
export declare const shouldBlockRuneDeposit: (inbounds: ThorchainInboundAddress[]) => boolean;
|
|
19
|
+
type IsLimitSwapDestinationHaltedInput = {
|
|
20
|
+
inbounds: ThorchainInboundAddress[];
|
|
21
|
+
chain: Chain;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Whether a limit order's destination chain is halted or trading-paused, per the
|
|
25
|
+
* live inbound list.
|
|
26
|
+
*
|
|
27
|
+
* The market path re-checks both route legs at broadcast through the native swap
|
|
28
|
+
* payload, but a RUNE `MsgDeposit` never carries one — this sign-time gate is
|
|
29
|
+
* its only destination check, so it fails closed.
|
|
30
|
+
*
|
|
31
|
+
* Two legs are genuinely not haltable through this feed and read as live: a
|
|
32
|
+
* chain with no memo prefix (nothing this builder can encode reaches here), and
|
|
33
|
+
* THORChain itself, which never appears in `inbound_addresses` because it has no
|
|
34
|
+
* Asgard vault. Every other mapped chain **must** produce a row: a partial or
|
|
35
|
+
* stale feed that silently drops one would otherwise let an order be signed into
|
|
36
|
+
* a destination whose halt status was never verified.
|
|
37
|
+
*/
|
|
38
|
+
export declare const isLimitSwapDestinationHalted: ({ inbounds, chain }: IsLimitSwapDestinationHaltedInput) => boolean;
|
|
39
|
+
type FindLimitSwapInboundInput = {
|
|
40
|
+
inbounds: ThorchainInboundAddress[];
|
|
41
|
+
chain: Chain;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Select the live, tradeable inbound row a limit-swap deposit should target.
|
|
45
|
+
*
|
|
46
|
+
* Resolves the chain through the same prefix table the memo builder uses, so a
|
|
47
|
+
* source the memo could not encode can never resolve an inbound. Throws rather
|
|
48
|
+
* than returning undefined: every caller is about to sign a value-bearing
|
|
49
|
+
* deposit, and there is no safe fallback for "no usable vault".
|
|
50
|
+
*/
|
|
51
|
+
export declare const findLimitSwapInbound: ({ inbounds, chain }: FindLimitSwapInboundInput) => ThorchainInboundAddress;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=limitSwapInbound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitSwapInbound.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapInbound.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAA;AAkB7F;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,UAAU,uBAAuB,EAAE,KAAG,OACX,CAAA;AAErE;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GAAI,UAAU,uBAAuB,EAAE,KAAG,OACf,CAAA;AAE9D,KAAK,iCAAiC,GAAG;IACvC,QAAQ,EAAE,uBAAuB,EAAE,CAAA;IACnC,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,4BAA4B,GAAI,qBAAqB,iCAAiC,KAAG,OAYrG,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,EAAE,uBAAuB,EAAE,CAAA;IACnC,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,qBAAqB,yBAAyB,KAAG,uBAgBrF,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Chain } from '../../Chain.js';
|
|
2
|
+
import { thorchainMemoAssetChainPrefix } from './thorchainMemoAsset.js';
|
|
3
|
+
/**
|
|
4
|
+
* Whether an inbound row is usable right now.
|
|
5
|
+
*
|
|
6
|
+
* Missing pause flags read as "not paused", matching the market swap's halt gate.
|
|
7
|
+
* The vault address must also be present: it becomes the deposit's `toAddress`,
|
|
8
|
+
* and an empty one would sign funds to nowhere.
|
|
9
|
+
*/
|
|
10
|
+
const isTradeable = ({ address, halted, global_trading_paused, chain_trading_paused, }) => Boolean(address?.trim()) && !halted && !global_trading_paused && !chain_trading_paused;
|
|
11
|
+
/**
|
|
12
|
+
* Whether THORChain has globally paused trading, per a live `inbound_addresses`
|
|
13
|
+
* list. THORChain sets `global_trading_paused` on every inbound row when it halts
|
|
14
|
+
* network-wide.
|
|
15
|
+
*/
|
|
16
|
+
export const isThorchainGloballyPaused = (inbounds) => inbounds.some(({ global_trading_paused }) => global_trading_paused);
|
|
17
|
+
/**
|
|
18
|
+
* Whether a native RUNE `MsgDeposit` must be blocked given the live inbound list.
|
|
19
|
+
*
|
|
20
|
+
* RUNE settles on THORChain itself with no inbound vault, so it never passes
|
|
21
|
+
* through the per-chain halt filter an external source does — this global signal
|
|
22
|
+
* is its gate. Blocks on an empty list too: a real `inbound_addresses` response
|
|
23
|
+
* always carries many rows, so an empty (but non-throwing) result means the pause
|
|
24
|
+
* state is unverifiable and a deposit must not be signed against it.
|
|
25
|
+
*/
|
|
26
|
+
export const shouldBlockRuneDeposit = (inbounds) => inbounds.length === 0 || isThorchainGloballyPaused(inbounds);
|
|
27
|
+
/**
|
|
28
|
+
* Whether a limit order's destination chain is halted or trading-paused, per the
|
|
29
|
+
* live inbound list.
|
|
30
|
+
*
|
|
31
|
+
* The market path re-checks both route legs at broadcast through the native swap
|
|
32
|
+
* payload, but a RUNE `MsgDeposit` never carries one — this sign-time gate is
|
|
33
|
+
* its only destination check, so it fails closed.
|
|
34
|
+
*
|
|
35
|
+
* Two legs are genuinely not haltable through this feed and read as live: a
|
|
36
|
+
* chain with no memo prefix (nothing this builder can encode reaches here), and
|
|
37
|
+
* THORChain itself, which never appears in `inbound_addresses` because it has no
|
|
38
|
+
* Asgard vault. Every other mapped chain **must** produce a row: a partial or
|
|
39
|
+
* stale feed that silently drops one would otherwise let an order be signed into
|
|
40
|
+
* a destination whose halt status was never verified.
|
|
41
|
+
*/
|
|
42
|
+
export const isLimitSwapDestinationHalted = ({ inbounds, chain }) => {
|
|
43
|
+
const chainSymbol = thorchainMemoAssetChainPrefix[chain];
|
|
44
|
+
if (!chainSymbol || chain === Chain.THORChain) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
const inbound = inbounds.find(entry => entry.chain.trim().toUpperCase() === chainSymbol);
|
|
48
|
+
if (!inbound) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return inbound.halted || inbound.global_trading_paused || inbound.chain_trading_paused;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Select the live, tradeable inbound row a limit-swap deposit should target.
|
|
55
|
+
*
|
|
56
|
+
* Resolves the chain through the same prefix table the memo builder uses, so a
|
|
57
|
+
* source the memo could not encode can never resolve an inbound. Throws rather
|
|
58
|
+
* than returning undefined: every caller is about to sign a value-bearing
|
|
59
|
+
* deposit, and there is no safe fallback for "no usable vault".
|
|
60
|
+
*/
|
|
61
|
+
export const findLimitSwapInbound = ({ inbounds, chain }) => {
|
|
62
|
+
const chainSymbol = thorchainMemoAssetChainPrefix[chain];
|
|
63
|
+
if (!chainSymbol) {
|
|
64
|
+
throw new Error(`findLimitSwapInbound: ${chain} is not routable through THORChain`);
|
|
65
|
+
}
|
|
66
|
+
const inbound = inbounds.find(entry => entry.chain.trim().toUpperCase() === chainSymbol && isTradeable(entry));
|
|
67
|
+
if (!inbound) {
|
|
68
|
+
throw new Error(`findLimitSwapInbound: no live, tradeable THORChain inbound address for ${chainSymbol}. ` +
|
|
69
|
+
'The chain may be halted or trading-paused.');
|
|
70
|
+
}
|
|
71
|
+
return inbound;
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=limitSwapInbound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"limitSwapInbound.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapInbound.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAA;AAEpE;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAAC,EACnB,OAAO,EACP,MAAM,EACN,qBAAqB,EACrB,oBAAoB,GACI,EAAW,EAAE,CACrC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,qBAAqB,IAAI,CAAC,oBAAoB,CAAA;AAExF;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,QAAmC,EAAW,EAAE,CACxF,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAA;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAmC,EAAW,EAAE,CACrF,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAA;AAO9D;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAqC,EAAW,EAAE;IAC9G,MAAM,WAAW,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAA;IACxD,IAAI,CAAC,WAAW,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,CAAA;IACxF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,qBAAqB,IAAI,OAAO,CAAC,oBAAoB,CAAA;AACxF,CAAC,CAAA;AAOD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAA6B,EAA2B,EAAE;IAC9G,MAAM,WAAW,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAA;IACxD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,oCAAoC,CAAC,CAAA;IACrF,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;IAE9G,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,0EAA0E,WAAW,IAAI;YACvF,4CAA4C,CAC/C,CAAA;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -16,5 +16,54 @@ export declare const getLimitSwapIntervalBlocks: (expiryHours: LimitSwapExpiryHo
|
|
|
16
16
|
export declare const getLimitSwapLimitAmount: ({ source_amount, target_price, }: Pick<LimitSwapMemoInput, "source_amount" | "target_price">) => bigint;
|
|
17
17
|
export declare const assertMemoByteLength: (memo: string, sourceChainKind: LimitSwapSourceChainKind) => void;
|
|
18
18
|
export declare const validateLimitSwapInputs: (inputs: LimitSwapMemoInput) => void;
|
|
19
|
+
/**
|
|
20
|
+
* THORChain memo prefix selecting the advanced swap queue — what makes a deposit
|
|
21
|
+
* a resting limit order rather than a market swap (`=>`).
|
|
22
|
+
*/
|
|
23
|
+
export declare const limitSwapMemoPrefix = "=<:";
|
|
24
|
+
/** The order terms a `=<` memo encodes, as decoded from the memo itself. */
|
|
25
|
+
export type ParsedLimitSwapMemo = {
|
|
26
|
+
/** THORChain asset notation for the buy side, e.g. `ETH.USDC-06EB48`. */
|
|
27
|
+
targetAsset: string;
|
|
28
|
+
/** Where a filled order pays out. */
|
|
29
|
+
destinationAddress: string;
|
|
30
|
+
/** Guaranteed-minimum received (LIM), in THORChain's 1e8 fixed point. */
|
|
31
|
+
limit: bigint;
|
|
32
|
+
/** How long the order rests, in THORChain blocks. */
|
|
33
|
+
intervalBlocks: number;
|
|
34
|
+
/** Streaming quantity; `0` for the orders this SDK builds. */
|
|
35
|
+
quantity: number;
|
|
36
|
+
affiliate?: string;
|
|
37
|
+
affiliateBps?: number;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Decode a THORChain limit-swap memo into the order terms it encodes.
|
|
41
|
+
*
|
|
42
|
+
* Fail closed on anything that is not a well-formed limit memo. This guards the
|
|
43
|
+
* signing path: the limit deposit builder accepts a pre-built memo string, so a
|
|
44
|
+
* market (`=>`) memo, an unrelated action, or a truncated/corrupted limit memo
|
|
45
|
+
* would otherwise sign a value-bearing deposit that executes with completely
|
|
46
|
+
* different semantics — or with no price protection at all.
|
|
47
|
+
*
|
|
48
|
+
* Validates the shape `=<:TARGET:DEST:LIM/INTERVAL/QUANTITY[:AFFILIATE:BPS]`
|
|
49
|
+
* rather than only the prefix, because it is the trade-target segment that
|
|
50
|
+
* carries the order's price floor: a memo whose LIM is missing or non-numeric is
|
|
51
|
+
* exactly the case that must never reach a signer.
|
|
52
|
+
*
|
|
53
|
+
* Returning the terms rather than only validating them is what lets a *joining*
|
|
54
|
+
* device review a limit order. The memo is the order — it rides on the keysign
|
|
55
|
+
* payload for every source branch, and it is the exact string THORChain
|
|
56
|
+
* executes — so terms derived from it cannot disagree with what gets signed, the
|
|
57
|
+
* way a separately-supplied display field can.
|
|
58
|
+
*/
|
|
59
|
+
export declare const parseLimitSwapMemo: (memo: string) => ParsedLimitSwapMemo;
|
|
60
|
+
/**
|
|
61
|
+
* Fail closed on anything that is not a well-formed THORChain limit-swap memo.
|
|
62
|
+
*
|
|
63
|
+
* Thin wrapper over {@link parseLimitSwapMemo} so the grammar has exactly one
|
|
64
|
+
* implementation — a validator that could drift from the parser is how a memo
|
|
65
|
+
* ends up reviewed as one order and executed as another.
|
|
66
|
+
*/
|
|
67
|
+
export declare const assertLimitSwapMemo: (memo: string) => void;
|
|
19
68
|
export declare const buildLimitSwapMemo: (inputs: LimitSwapMemoInput) => string;
|
|
20
69
|
//# sourceMappingURL=limitSwapMemo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitSwapMemo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapMemo.ts"],"names":[],"mappings":"AAUA,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,MAoB/D,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,EAAE,iBAAiB,wBAAwB,KAAG,IAU9F,CAAA;AAgED,eAAO,MAAM,uBAAuB,GAAI,QAAQ,kBAAkB,KAAG,IASpE,CAAA;AAUD,eAAO,MAAM,kBAAkB,GAAI,QAAQ,kBAAkB,KAAG,MAmB/D,CAAA"}
|
|
1
|
+
{"version":3,"file":"limitSwapMemo.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapMemo.ts"],"names":[],"mappings":"AAUA,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,MAoB/D,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,EAAE,iBAAiB,wBAAwB,KAAG,IAU9F,CAAA;AAgED,eAAO,MAAM,uBAAuB,GAAI,QAAQ,kBAAkB,KAAG,IASpE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAA;AAQxC,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAAG;IAChC,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAA;IACnB,qCAAqC;IACrC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAA;IACb,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAA;IACtB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,mBAsDjD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,IAElD,CAAA;AAUD,eAAO,MAAM,kBAAkB,GAAI,QAAQ,kBAAkB,KAAG,MAmB/D,CAAA"}
|
|
@@ -191,10 +191,89 @@ export const validateLimitSwapInputs = (inputs) => {
|
|
|
191
191
|
parsePositiveDecimal(inputs.target_price, 'target_price');
|
|
192
192
|
getLimitSwapIntervalBlocks(inputs.expiry_hours);
|
|
193
193
|
};
|
|
194
|
+
/**
|
|
195
|
+
* THORChain memo prefix selecting the advanced swap queue — what makes a deposit
|
|
196
|
+
* a resting limit order rather than a market swap (`=>`).
|
|
197
|
+
*/
|
|
198
|
+
export const limitSwapMemoPrefix = '=<:';
|
|
199
|
+
/** `<LIM>/<interval>/<quantity>`, the segment that makes the order a limit order. */
|
|
200
|
+
const limitSwapMemoTradeTargetPattern = /^\d+\/\d+\/\d+$/;
|
|
201
|
+
/** Basis points are a bare integer; the affiliate name is a printable, separator-free token. */
|
|
202
|
+
const limitSwapMemoAffiliateBpsPattern = /^\d+$/;
|
|
203
|
+
/**
|
|
204
|
+
* Decode a THORChain limit-swap memo into the order terms it encodes.
|
|
205
|
+
*
|
|
206
|
+
* Fail closed on anything that is not a well-formed limit memo. This guards the
|
|
207
|
+
* signing path: the limit deposit builder accepts a pre-built memo string, so a
|
|
208
|
+
* market (`=>`) memo, an unrelated action, or a truncated/corrupted limit memo
|
|
209
|
+
* would otherwise sign a value-bearing deposit that executes with completely
|
|
210
|
+
* different semantics — or with no price protection at all.
|
|
211
|
+
*
|
|
212
|
+
* Validates the shape `=<:TARGET:DEST:LIM/INTERVAL/QUANTITY[:AFFILIATE:BPS]`
|
|
213
|
+
* rather than only the prefix, because it is the trade-target segment that
|
|
214
|
+
* carries the order's price floor: a memo whose LIM is missing or non-numeric is
|
|
215
|
+
* exactly the case that must never reach a signer.
|
|
216
|
+
*
|
|
217
|
+
* Returning the terms rather than only validating them is what lets a *joining*
|
|
218
|
+
* device review a limit order. The memo is the order — it rides on the keysign
|
|
219
|
+
* payload for every source branch, and it is the exact string THORChain
|
|
220
|
+
* executes — so terms derived from it cannot disagree with what gets signed, the
|
|
221
|
+
* way a separately-supplied display field can.
|
|
222
|
+
*/
|
|
223
|
+
export const parseLimitSwapMemo = (memo) => {
|
|
224
|
+
if (!memo.startsWith(limitSwapMemoPrefix)) {
|
|
225
|
+
throw new Error(`memo is not a THORChain limit-swap memo (expected a "${limitSwapMemoPrefix}" prefix): ${JSON.stringify(memo)}`);
|
|
226
|
+
}
|
|
227
|
+
const segments = memo.slice(limitSwapMemoPrefix.length).split(':');
|
|
228
|
+
if (segments.length !== 3 && segments.length !== 5) {
|
|
229
|
+
throw new Error(`limit-swap memo must have 3 segments (or 5 with an affiliate) after the prefix, got ${segments.length}: ${JSON.stringify(memo)}`);
|
|
230
|
+
}
|
|
231
|
+
const [targetAsset, destAddress, tradeTarget, affiliate, affiliateBps] = segments;
|
|
232
|
+
if (!targetAsset) {
|
|
233
|
+
throw new Error(`limit-swap memo is missing its target asset: ${JSON.stringify(memo)}`);
|
|
234
|
+
}
|
|
235
|
+
if (!destAddress) {
|
|
236
|
+
throw new Error(`limit-swap memo is missing its destination address: ${JSON.stringify(memo)}`);
|
|
237
|
+
}
|
|
238
|
+
if (!limitSwapMemoTradeTargetPattern.test(tradeTarget)) {
|
|
239
|
+
throw new Error(`limit-swap memo trade target must be "<limit>/<interval>/<quantity>", got ${JSON.stringify(tradeTarget)}`);
|
|
240
|
+
}
|
|
241
|
+
const [limit, interval, quantity] = tradeTarget.split('/');
|
|
242
|
+
if (BigInt(limit) === 0n) {
|
|
243
|
+
// THORChain reads a zero trade target as an unprotected market order.
|
|
244
|
+
throw new Error(`limit-swap memo has a zero minimum-received (LIM), which THORChain treats as a market order`);
|
|
245
|
+
}
|
|
246
|
+
if (segments.length === 5) {
|
|
247
|
+
if (!affiliate) {
|
|
248
|
+
throw new Error(`limit-swap memo has an empty affiliate segment: ${JSON.stringify(memo)}`);
|
|
249
|
+
}
|
|
250
|
+
if (!limitSwapMemoAffiliateBpsPattern.test(affiliateBps)) {
|
|
251
|
+
throw new Error(`limit-swap memo affiliate bps must be an integer, got ${JSON.stringify(affiliateBps)}`);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return {
|
|
255
|
+
targetAsset,
|
|
256
|
+
destinationAddress: destAddress,
|
|
257
|
+
limit: BigInt(limit),
|
|
258
|
+
intervalBlocks: Number(interval),
|
|
259
|
+
quantity: Number(quantity),
|
|
260
|
+
...(segments.length === 5 ? { affiliate, affiliateBps: Number(affiliateBps) } : {}),
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
/**
|
|
264
|
+
* Fail closed on anything that is not a well-formed THORChain limit-swap memo.
|
|
265
|
+
*
|
|
266
|
+
* Thin wrapper over {@link parseLimitSwapMemo} so the grammar has exactly one
|
|
267
|
+
* implementation — a validator that could drift from the parser is how a memo
|
|
268
|
+
* ends up reviewed as one order and executed as another.
|
|
269
|
+
*/
|
|
270
|
+
export const assertLimitSwapMemo = (memo) => {
|
|
271
|
+
parseLimitSwapMemo(memo);
|
|
272
|
+
};
|
|
194
273
|
const buildMemo = (inputs, includeAffiliate) => {
|
|
195
274
|
const limit = getLimitSwapLimitAmount(inputs);
|
|
196
275
|
const interval = getLimitSwapIntervalBlocks(inputs.expiry_hours);
|
|
197
|
-
const memo =
|
|
276
|
+
const memo = `${limitSwapMemoPrefix}${inputs.target_asset}:${inputs.dest_addr}:${limit}/${interval}/0`;
|
|
198
277
|
return includeAffiliate ? `${memo}:${nativeSwapAffiliateConfig.affiliateFeeAddress}:${baseAffiliateBps}` : memo;
|
|
199
278
|
};
|
|
200
279
|
export const buildLimitSwapMemo = (inputs) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limitSwapMemo.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapMemo.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"limitSwapMemo.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapMemo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAElE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAA;AAgBzD,MAAM,CAAC,MAAM,sBAAsB,GAA6C;IAC9E,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,GAAG;CACX,CAAA;AAED,MAAM,UAAU,GAAG,UAAY,CAAA;AAE/B,MAAM,2BAA2B,GAAyC;IACxE,EAAE,EAAE,KAAK;IACT,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;CACX,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAE,SAAiB,EAAQ,EAAE;IACvE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,6BAA6B,CAAC,CAAA;IAC5D,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,8CAA8C,CAAC,CAAA;IAC7E,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,8BAA8B,CAAC,CAAA;IAC7D,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,+CAA+C,CAAC,CAAA;IAC9E,CAAC;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAU,EAAE;IACpD,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,+BAA+B,GAAG,CAAC,KAAa,EAAE,SAAiB,EAAS,EAAE;IAClF,iBAAiB,CAAC,KAAK,CAAC,CAAA;IAExB,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,KAAK,GAAG,2BAA2B,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,4CAA4C,MAAM,EAAE,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,KAA4B,EAAE,SAAiB,EAAU,EAAE;IACvF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,EAAE;YAAE,OAAO,KAAK,CAAA;QAC5B,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,yBAAyB,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;QAClE,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,kCAAkC,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,oCAAoC,CAAC,CAAA;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,UAAU,CAAC,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,KAA4B,EAAE,SAAiB,EAAU,EAAE;IACvF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,EAAE;YAAE,OAAO,KAAK,GAAG,UAAU,CAAA;QACzC,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,yBAAyB,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,UAAkB,CAAA;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,yBAAyB,CAAC,CAAA;QACxD,CAAC;QACD,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC7B,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,8DAA8D,CAAC,CAAA;QAC7F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC3B,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,8DAA8D,CAAC,CAAA;IAC7F,CAAC;IAED,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,GAAG,EAAE,CAAC,GAAG,KAAK,CAAA;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC7E,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,yBAAyB,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,WAAmB,EAA4B,EAAE;IAC3F,MAAM,KAAK,GAAG,+BAA+B,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;IAC1E,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;AAC1D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,WAAiC,EAAU,EAAE;IACtF,MAAM,QAAQ,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAA;IACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+BAA+B,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,WAAW,EAAE,CAAC,CAAA;IACvG,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EACtC,aAAa,EACb,YAAY,GAC+C,EAAU,EAAE;IACvE,MAAM,YAAY,GAAG,oBAAoB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IACzE,MAAM,WAAW,GAAG,oBAAoB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;IAEtE,MAAM,KAAK,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,UAAU,CAAA;IAEvD,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,wEAAwE;QACxE,oEAAoE;QACpE,uEAAuE;QACvE,yEAAyE;QACzE,0DAA0D;QAC1D,MAAM,IAAI,KAAK,CACb,sFAAsF;YACpF,uFAAuF;YACvF,mEAAmE,CACtE,CAAA;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,eAAyC,EAAQ,EAAE;IACpG,MAAM,KAAK,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAA;IACrD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,8BAA8B,eAAe,EAAE,CAAC,CAAA;IAClE,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;IACxD,IAAI,UAAU,GAAG,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,UAAU,qBAAqB,eAAe,UAAU,KAAK,EAAE,CAAC,CAAA;IAClH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAE/C,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,MAAc,EAAW,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;QACnC,OAAO,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,OAAe,EAAW,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAEtF,MAAM,eAAe,GAAG,CAAC,OAAe,EAAW,EAAE;IACnD,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,kBAAkB,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,KAAK,EAAE,CAAA;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,MAAM,8BAA8B,GAAyD;IAC3F,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,YAAY;IAC9B,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,YAAY;IAC/B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY;IAC1B,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,YAAY;IACzB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,YAAY;IAE9B,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,CACzB,IAAI,MAAM,CAAC,qCAAqC,kBAAkB,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACpG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,EAAE,CAC7B,IAAI,MAAM,CAAC,2BAA2B,kBAAkB,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1F,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,kBAAkB,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACnF,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,oBAAoB,kBAAkB,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACrG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,CAC1B,IAAI,MAAM,CAAC,uCAAuC,kBAAkB,YAAY,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACtG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,UAAU,kBAAkB,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAExF,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,eAAe;IAE/B,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC7D,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC7D,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC;IAC9D,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC;IAE3D,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,kBAAkB,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACxF,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,kBAAkB,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;CACpF,CAAA;AAED,MAAM,sCAAsC,GAAG,CAAC,WAAkB,EAAE,OAAe,EAAQ,EAAE;IAC3F,MAAM,SAAS,GAAG,8BAA8B,CAAC,WAAW,CAAC,CAAA;IAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,+CAA+C,CAAC,CAAA;IACnG,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,WAAW,UAAU,CAAC,CAAA;IACpE,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAA0B,EAAQ,EAAE;IAC1E,+BAA+B,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;IACpE,MAAM,WAAW,GAAG,+BAA+B,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;IACxF,qBAAqB,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;IACpD,sCAAsC,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IAErE,oBAAoB,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IAC3D,oBAAoB,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;IACzD,0BAA0B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AACjD,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAA;AAExC,qFAAqF;AACrF,MAAM,+BAA+B,GAAG,iBAAiB,CAAA;AAEzD,gGAAgG;AAChG,MAAM,gCAAgC,GAAG,OAAO,CAAA;AAkBhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAuB,EAAE;IACtE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,wDAAwD,mBAAmB,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAChH,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAClE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,uFAAuF,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAClI,CAAA;IACH,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAA;IAEjF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACzF,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uDAAuD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChG,CAAC;IAED,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CACb,6EAA6E,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAC3G,CAAA;IACH,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1D,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QACzB,sEAAsE;QACtE,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAA;IAChH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mDAAmD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC5F,CAAC;QAED,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,yDAAyD,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;QAC1G,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW;QACX,kBAAkB,EAAE,WAAW;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpF,CAAA;AACH,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAQ,EAAE;IACxD,kBAAkB,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,MAA0B,EAAE,gBAAyB,EAAU,EAAE;IAClF,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,0BAA0B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAChE,MAAM,IAAI,GAAG,GAAG,mBAAmB,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,IAAI,KAAK,IAAI,QAAQ,IAAI,CAAA;IAEtG,OAAO,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,yBAAyB,CAAC,mBAAmB,IAAI,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AACjH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAA0B,EAAU,EAAE;IACvE,uBAAuB,CAAC,MAAM,CAAC,CAAA;IAE/B,MAAM,eAAe,GAAG,2BAA2B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACxE,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAE7C,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,oBAAoB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;YACpD,OAAO,aAAa,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,oBAAoB,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;YACrD,oBAAoB,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAA;YAC3D,OAAO,oBAAoB,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,oBAAoB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IACpD,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA"}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import { OtherChain } from '@vultisig/core-chain/Chain';
|
|
2
|
+
import { SuiTransactionResultLike } from '@vultisig/core-chain/chains/sui/transactionResult';
|
|
2
3
|
import { BroadcastTxResolver } from '../resolver.js';
|
|
3
|
-
|
|
4
|
-
status?: {
|
|
5
|
-
status?: string;
|
|
6
|
-
error?: string | null;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
export declare const assertSuiTxSucceeded: (effects: SuiExecutionEffects | null | undefined) => void;
|
|
4
|
+
export declare const assertSuiTxSucceeded: (result: SuiTransactionResultLike | null | undefined) => void;
|
|
10
5
|
export declare const broadcastSuiTx: BroadcastTxResolver<OtherChain.Sui>;
|
|
11
|
-
export {};
|
|
12
6
|
//# sourceMappingURL=sui.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/sui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sui.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/sui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,OAAO,EAGL,wBAAwB,EACzB,MAAM,mDAAmD,CAAA;AAG1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAIjD,eAAO,MAAM,oBAAoB,GAAI,QAAQ,wBAAwB,GAAG,IAAI,GAAG,SAAS,KAAG,IAI1F,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAkC9D,CAAA"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
+
import { fromBase64 } from '@mysten/sui/utils';
|
|
1
2
|
import { getSuiClient } from '@vultisig/core-chain/chains/sui/client';
|
|
3
|
+
import { describeSuiExecutionFailure, isSuiExecutionSuccess, } from '@vultisig/core-chain/chains/sui/transactionResult';
|
|
2
4
|
import { attempt } from '@vultisig/lib-utils/attempt';
|
|
3
5
|
import { DeliverTxFailedError } from '../transientRetry.js';
|
|
4
6
|
import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
|
|
5
|
-
export const assertSuiTxSucceeded = (
|
|
6
|
-
|
|
7
|
-
if (executionStatus === 'success')
|
|
7
|
+
export const assertSuiTxSucceeded = (result) => {
|
|
8
|
+
if (isSuiExecutionSuccess(result))
|
|
8
9
|
return;
|
|
9
|
-
throw new DeliverTxFailedError(`Sui transaction failed on-chain: ${
|
|
10
|
+
throw new DeliverTxFailedError(`Sui transaction failed on-chain: ${describeSuiExecutionFailure(result)}`);
|
|
10
11
|
};
|
|
11
12
|
export const broadcastSuiTx = async ({ chain, tx }) => {
|
|
12
|
-
const { data: response, error } = await attempt(getSuiClient().
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// sdk#1398: without requesting effects,
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
|
|
13
|
+
const { data: response, error } = await attempt(getSuiClient().executeTransaction({
|
|
14
|
+
transaction: fromBase64(tx.unsignedTx),
|
|
15
|
+
signatures: [tx.signature],
|
|
16
|
+
// sdk#1398: without requesting effects, execution resolves with a digest even when the tx
|
|
17
|
+
// executed but ABORTED (MoveAbort / InsufficientGas) — an RPC-level success that is NOT
|
|
18
|
+
// execution success. Ask for effects so we can tell the two apart.
|
|
19
|
+
include: { effects: true },
|
|
19
20
|
}));
|
|
20
21
|
if (error) {
|
|
21
22
|
await verifyBroadcastByHash({ chain, tx, error });
|
|
@@ -24,17 +25,17 @@ export const broadcastSuiTx = async ({ chain, tx }) => {
|
|
|
24
25
|
if (!response) {
|
|
25
26
|
return;
|
|
26
27
|
}
|
|
27
|
-
// Mirror the status resolver (status/resolvers/sui.ts): ONLY an explicit '
|
|
28
|
-
// is execution success. A
|
|
29
|
-
// must NOT be returned as a digest-carrying
|
|
30
|
-
// outside the RPC-error path above so it
|
|
31
|
-
// on-chain and failed, not un-broadcast.
|
|
28
|
+
// Mirror the status resolver (status/resolvers/sui.ts): ONLY an explicit `$kind: 'Transaction'`
|
|
29
|
+
// with `status.success === true` is execution success. A `FailedTransaction` (MoveAbort /
|
|
30
|
+
// InsufficientGas) — or a missing/unknown status — must NOT be returned as a digest-carrying
|
|
31
|
+
// successful broadcast (that's the sdk#1398 bug). Thrown outside the RPC-error path above so it
|
|
32
|
+
// isn't fed back into verifyBroadcastByHash — the tx is on-chain and failed, not un-broadcast.
|
|
32
33
|
//
|
|
33
34
|
// Throw DeliverTxFailedError (not a bare Error) so isTransientBroadcastError short-circuits on the
|
|
34
35
|
// `instanceof` BEFORE its message-regex runs: a Sui abort error string routinely contains
|
|
35
36
|
// "aborted"/"timed out", which the transient patterns match — a bare Error would be misclassified
|
|
36
37
|
// as transient and the aborted tx re-sent by withTransientBroadcastRetry.
|
|
37
|
-
assertSuiTxSucceeded(response
|
|
38
|
+
assertSuiTxSucceeded(response);
|
|
38
39
|
return response;
|
|
39
40
|
};
|
|
40
41
|
//# sourceMappingURL=sui.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/sui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,GAEtB,MAAM,mDAAmD,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAGrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAmD,EAAQ,EAAE;IAChG,IAAI,qBAAqB,CAAC,MAAM,CAAC;QAAE,OAAM;IAEzC,MAAM,IAAI,oBAAoB,CAAC,oCAAoC,2BAA2B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAC3G,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAwC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IACzF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAC7C,YAAY,EAAE,CAAC,kBAAkB,CAAC;QAChC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC;QACtC,UAAU,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC1B,0FAA0F;QAC1F,wFAAwF;QACxF,mEAAmE;QACnE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC3B,CAAC,CACH,CAAA;IAED,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAM;IACR,CAAC;IAED,gGAAgG;IAChG,0FAA0F;IAC1F,6FAA6F;IAC7F,gGAAgG;IAChG,+FAA+F;IAC/F,EAAE;IACF,mGAAmG;IACnG,0FAA0F;IAC1F,kGAAkG;IAClG,0EAA0E;IAC1E,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAE9B,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transientRetry.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/transientRetry.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED,eAAO,MAAM,yBAAyB,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"transientRetry.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/transientRetry.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED,eAAO,MAAM,yBAAyB,IAAI,CAAA;AAuE1C,eAAO,MAAM,yBAAyB,GAAI,OAAO,OAAO,KAAG,OAqC1D,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAU,CAAC,EAAE,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAkB3F,CAAA"}
|
|
@@ -34,6 +34,33 @@ const transientErrorCodes = new Set([
|
|
|
34
34
|
'ETIMEDOUT',
|
|
35
35
|
'EAI_AGAIN',
|
|
36
36
|
]);
|
|
37
|
+
// gRPC statuses (Sui, since it retired JSON-RPC). `@protobuf-ts` surfaces the
|
|
38
|
+
// grpc-status trailer as `RpcError.code`, holding the status NAME — so these land
|
|
39
|
+
// in the same `code` slot as the errno strings above.
|
|
40
|
+
//
|
|
41
|
+
// Deliberately only the three the gRPC project itself calls safe to retry. Under
|
|
42
|
+
// JSON-RPC a busy or restarting node surfaced as an HTTP 5xx and was retried by the
|
|
43
|
+
// status branch below; without this set that coverage silently disappears, because a
|
|
44
|
+
// grpc-web response is HTTP 200 with the real status in the trailer.
|
|
45
|
+
//
|
|
46
|
+
// Excluded on purpose: INVALID_ARGUMENT / NOT_FOUND / FAILED_PRECONDITION are verdicts
|
|
47
|
+
// about the request itself, and ABORTED / INTERNAL are ambiguous enough that retrying
|
|
48
|
+
// could re-send bytes the chain already rejected.
|
|
49
|
+
const transientGrpcStatuses = new Set(['UNAVAILABLE', 'DEADLINE_EXCEEDED', 'RESOURCE_EXHAUSTED']);
|
|
50
|
+
// grpc-web percent-encodes the grpc-message trailer, so a server-produced message
|
|
51
|
+
// arrives as `connection%20reset` and none of the space-bearing patterns below can
|
|
52
|
+
// match it. Decode before testing (falling back to the raw text on a malformed escape)
|
|
53
|
+
// so gRPC errors are classified on the same footing as every other transport's.
|
|
54
|
+
const decodeTransportMessage = (message) => {
|
|
55
|
+
if (!message.includes('%'))
|
|
56
|
+
return message;
|
|
57
|
+
try {
|
|
58
|
+
return decodeURIComponent(message);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return message;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
37
64
|
const transientMessagePatterns = [
|
|
38
65
|
/\bfetch failed\b/i,
|
|
39
66
|
/\bfailed to fetch\b/i,
|
|
@@ -70,7 +97,7 @@ export const isTransientBroadcastError = (error) => {
|
|
|
70
97
|
}
|
|
71
98
|
if (typeof current === 'object') {
|
|
72
99
|
const code = current.code;
|
|
73
|
-
if (typeof code === 'string' && transientErrorCodes.has(code)) {
|
|
100
|
+
if (typeof code === 'string' && (transientErrorCodes.has(code) || transientGrpcStatuses.has(code))) {
|
|
74
101
|
return true;
|
|
75
102
|
}
|
|
76
103
|
const status = current.status;
|
|
@@ -78,7 +105,8 @@ export const isTransientBroadcastError = (error) => {
|
|
|
78
105
|
return true;
|
|
79
106
|
}
|
|
80
107
|
}
|
|
81
|
-
const
|
|
108
|
+
const rawMessage = current instanceof Error ? current.message : typeof current === 'string' ? current : undefined;
|
|
109
|
+
const message = rawMessage === undefined ? undefined : decodeTransportMessage(rawMessage);
|
|
82
110
|
if (message && transientMessagePatterns.some(pattern => pattern.test(message))) {
|
|
83
111
|
return true;
|
|
84
112
|
}
|