@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.
Files changed (85) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/dist/chains/cosmos/cosmosGasLimitRecord.js +3 -3
  3. package/dist/chains/cosmos/cosmosGasLimitRecord.js.map +1 -1
  4. package/dist/chains/cosmos/gas.d.ts +28 -1
  5. package/dist/chains/cosmos/gas.d.ts.map +1 -1
  6. package/dist/chains/cosmos/gas.js +37 -5
  7. package/dist/chains/cosmos/gas.js.map +1 -1
  8. package/dist/chains/cosmos/resolveCosmosGasLimit.d.ts +82 -0
  9. package/dist/chains/cosmos/resolveCosmosGasLimit.d.ts.map +1 -0
  10. package/dist/chains/cosmos/resolveCosmosGasLimit.js +71 -0
  11. package/dist/chains/cosmos/resolveCosmosGasLimit.js.map +1 -0
  12. package/dist/chains/cosmos/terraClassicTax.d.ts +68 -0
  13. package/dist/chains/cosmos/terraClassicTax.d.ts.map +1 -1
  14. package/dist/chains/cosmos/terraClassicTax.js +85 -0
  15. package/dist/chains/cosmos/terraClassicTax.js.map +1 -1
  16. package/dist/chains/sui/client.d.ts +11 -2
  17. package/dist/chains/sui/client.d.ts.map +1 -1
  18. package/dist/chains/sui/client.js +5 -4
  19. package/dist/chains/sui/client.js.map +1 -1
  20. package/dist/chains/sui/config.d.ts +28 -0
  21. package/dist/chains/sui/config.d.ts.map +1 -1
  22. package/dist/chains/sui/config.js +27 -0
  23. package/dist/chains/sui/config.js.map +1 -1
  24. package/dist/chains/sui/listAllCoins.d.ts +44 -0
  25. package/dist/chains/sui/listAllCoins.d.ts.map +1 -0
  26. package/dist/chains/sui/listAllCoins.js +43 -0
  27. package/dist/chains/sui/listAllCoins.js.map +1 -0
  28. package/dist/chains/sui/transactionResult.d.ts +59 -0
  29. package/dist/chains/sui/transactionResult.d.ts.map +1 -0
  30. package/dist/chains/sui/transactionResult.js +43 -0
  31. package/dist/chains/sui/transactionResult.js.map +1 -0
  32. package/dist/coin/balance/resolvers/sui.d.ts.map +1 -1
  33. package/dist/coin/balance/resolvers/sui.js +6 -3
  34. package/dist/coin/balance/resolvers/sui.js.map +1 -1
  35. package/dist/coin/token/metadata/resolvers/sui.d.ts +1 -1
  36. package/dist/coin/token/metadata/resolvers/sui.d.ts.map +1 -1
  37. package/dist/coin/token/metadata/resolvers/sui.js +6 -3
  38. package/dist/coin/token/metadata/resolvers/sui.js.map +1 -1
  39. package/dist/swap/general/jupiter/api/getJupiterSwapQuote.d.ts.map +1 -1
  40. package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js +2 -1
  41. package/dist/swap/general/jupiter/api/getJupiterSwapQuote.js.map +1 -1
  42. package/dist/swap/native/NativeSwapChain.d.ts +2 -0
  43. package/dist/swap/native/NativeSwapChain.d.ts.map +1 -1
  44. package/dist/swap/native/NativeSwapChain.js +3 -0
  45. package/dist/swap/native/NativeSwapChain.js.map +1 -1
  46. package/dist/swap/native/asset/toNativeSwapAsset.d.ts.map +1 -1
  47. package/dist/swap/native/asset/toNativeSwapAsset.js +2 -5
  48. package/dist/swap/native/asset/toNativeSwapAsset.js.map +1 -1
  49. package/dist/swap/native/limitSwapAvailability.d.ts +21 -0
  50. package/dist/swap/native/limitSwapAvailability.d.ts.map +1 -0
  51. package/dist/swap/native/limitSwapAvailability.js +32 -0
  52. package/dist/swap/native/limitSwapAvailability.js.map +1 -0
  53. package/dist/swap/native/limitSwapInbound.d.ts +53 -0
  54. package/dist/swap/native/limitSwapInbound.d.ts.map +1 -0
  55. package/dist/swap/native/limitSwapInbound.js +73 -0
  56. package/dist/swap/native/limitSwapInbound.js.map +1 -0
  57. package/dist/swap/native/limitSwapMemo.d.ts +49 -0
  58. package/dist/swap/native/limitSwapMemo.d.ts.map +1 -1
  59. package/dist/swap/native/limitSwapMemo.js +80 -1
  60. package/dist/swap/native/limitSwapMemo.js.map +1 -1
  61. package/dist/tx/broadcast/resolvers/sui.d.ts +2 -8
  62. package/dist/tx/broadcast/resolvers/sui.d.ts.map +1 -1
  63. package/dist/tx/broadcast/resolvers/sui.js +18 -17
  64. package/dist/tx/broadcast/resolvers/sui.js.map +1 -1
  65. package/dist/tx/broadcast/transientRetry.d.ts.map +1 -1
  66. package/dist/tx/broadcast/transientRetry.js +30 -2
  67. package/dist/tx/broadcast/transientRetry.js.map +1 -1
  68. package/dist/tx/broadcast/verifyBroadcastByHash.d.ts +8 -4
  69. package/dist/tx/broadcast/verifyBroadcastByHash.d.ts.map +1 -1
  70. package/dist/tx/broadcast/verifyBroadcastByHash.js +33 -11
  71. package/dist/tx/broadcast/verifyBroadcastByHash.js.map +1 -1
  72. package/dist/tx/hash/resolvers/sui.d.ts.map +1 -1
  73. package/dist/tx/hash/resolvers/sui.js +13 -3
  74. package/dist/tx/hash/resolvers/sui.js.map +1 -1
  75. package/dist/tx/status/resolvers/sui.d.ts.map +1 -1
  76. package/dist/tx/status/resolvers/sui.js +15 -6
  77. package/dist/tx/status/resolvers/sui.js.map +1 -1
  78. package/dist/tx/status/resolvers/tron.d.ts.map +1 -1
  79. package/dist/tx/status/resolvers/tron.js +35 -6
  80. package/dist/tx/status/resolvers/tron.js.map +1 -1
  81. package/package.json +27 -7
  82. package/dist/chains/cosmos/resolveCosmosGasFee.d.ts +0 -49
  83. package/dist/chains/cosmos/resolveCosmosGasFee.d.ts.map +0 -1
  84. package/dist/chains/cosmos/resolveCosmosGasFee.js +0 -35
  85. 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":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAA;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAA;AAE/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAU,CAAA;AAG3E,wFAAwF;AACxF,MAAM,CAAC,MAAM,2BAA2B,GAAoC;IAC1E,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;IACpB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;CACrB,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,GAAG,CAAA;AAE7D,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY;IAC/D,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY;CAChE,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,WAAW;IACjB,KAAK,CAAC,GAAG;IACT,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,SAAS;IACf,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,KAAK;CACH,CAAA;AAEV,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,0BAA0B;IAC7C,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;QACjB,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,MAAM;QACZ,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,IAAI;QACV,KAAK,CAAC,OAAO;QACb,KAAK,CAAC,QAAQ;QACd,KAAK,CAAC,KAAK;QACX,iEAAiE;QACjE,0EAA0E;QAC1E,+DAA+D;QAC/D,qEAAqE;QACrE,sEAAsE;QACtE,kEAAkE;QAClE,yEAAyE;QACzE,iEAAiE;QACjE,qEAAqE;QACrE,kEAAkE;QAClE,gBAAgB;QAChB,KAAK,CAAC,OAAO;KACd;CACO,CAAA;AAIV,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CACtD,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CACzC,CAAA;AAE7B,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM;IACzB,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK;IAC1B,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAClB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK;IACtB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM;IACxB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK;IACvB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM;IACtB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK;IACvB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM;IACzB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM;IACzB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM;IACtB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK;IACvB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK;IACpB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;IACrB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;IACrB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO;IACtB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK;CAC0B,CAAA;AAGlD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAY,EAA4B,EAAE,CAC7E,kBAAkB,CAAC,KAA+B,CAAC,IAAI,IAAI,CAAA;AAE7D,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAC3C,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC,CAC5G,CAAA;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,MAAc,EAAiC,EAAE,CACnG,8BAA8B,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;AAI1D,MAAM,CAAC,MAAM,qBAAqB,GAAmD;IACnF,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,sBAAsB;IACzC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,sBAAsB;CAC1C,CAAA"}
@@ -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;AAqEhF,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,GAAI,uBAAuB,OAAO,GAAG,gBAAgB,KAAG,MAoBrF,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 = getSecuredAssetSwapId(segments[0]);
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":"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"}
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 = `=<:${inputs.target_asset}:${inputs.dest_addr}:${limit}/${interval}/0`;
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":"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"}
@@ -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
- type SuiExecutionEffects = {
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAIvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAIjD,KAAK,mBAAmB,GAAG;IACzB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KACtB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS,mBAAmB,GAAG,IAAI,GAAG,SAAS,KAAG,IAQtF,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAkC9D,CAAA"}
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 = (effects) => {
6
- const executionStatus = effects?.status?.status;
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: ${effects?.status?.error ?? executionStatus ?? 'no effects status returned'}`);
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().executeTransactionBlock({
13
- transactionBlock: tx.unsignedTx,
14
- signature: [tx.signature],
15
- // sdk#1398: without requesting effects, executeTransactionBlock resolves with a digest even
16
- // when the tx executed but ABORTED (MoveAbort / InsufficientGas) — an RPC-level success that
17
- // is NOT execution success. Ask for effects so we can tell the two apart.
18
- options: { showEffects: true },
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 'success' effects status
28
- // is execution success. A 'failure' (MoveAbort / InsufficientGas) — or a missing/unknown status —
29
- // must NOT be returned as a digest-carrying successful broadcast (that's the sdk#1398 bug). Thrown
30
- // outside the RPC-error path above so it isn't fed back into verifyBroadcastByHash — the tx is
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.effects);
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":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAGrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAShE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAA+C,EAAQ,EAAE;IAC5F,MAAM,eAAe,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,CAAA;IAE/C,IAAI,eAAe,KAAK,SAAS;QAAE,OAAM;IAEzC,MAAM,IAAI,oBAAoB,CAC5B,oCAAoC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,eAAe,IAAI,4BAA4B,EAAE,CAChH,CAAA;AACH,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,uBAAuB,CAAC;QACrC,gBAAgB,EAAE,EAAE,CAAC,UAAU;QAC/B,SAAS,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACzB,4FAA4F;QAC5F,6FAA6F;QAC7F,0EAA0E;QAC1E,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;KAC/B,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,kGAAkG;IAClG,kGAAkG;IAClG,mGAAmG;IACnG,+FAA+F;IAC/F,yCAAyC;IACzC,EAAE;IACF,mGAAmG;IACnG,0FAA0F;IAC1F,kGAAkG;IAClG,0EAA0E;IAC1E,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAEtC,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
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;AA4C1C,eAAO,MAAM,yBAAyB,GAAI,OAAO,OAAO,KAAG,OAoC1D,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAU,CAAC,EAAE,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAkB3F,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 message = current instanceof Error ? current.message : typeof current === 'string' ? current : undefined;
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
  }