@vultisig/core-chain 2.38.0 → 3.0.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 (65) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/chains/cosmos/gas.d.ts +9 -0
  3. package/dist/chains/cosmos/gas.d.ts.map +1 -1
  4. package/dist/chains/cosmos/gas.js +9 -0
  5. package/dist/chains/cosmos/gas.js.map +1 -1
  6. package/dist/chains/cosmos/terraClassicTax.d.ts +15 -0
  7. package/dist/chains/cosmos/terraClassicTax.d.ts.map +1 -1
  8. package/dist/chains/cosmos/terraClassicTax.js +14 -0
  9. package/dist/chains/cosmos/terraClassicTax.js.map +1 -1
  10. package/dist/swap/utils/getSwapArrivalStatus/index.d.ts +79 -0
  11. package/dist/swap/utils/getSwapArrivalStatus/index.d.ts.map +1 -0
  12. package/dist/swap/utils/getSwapArrivalStatus/index.js +374 -0
  13. package/dist/swap/utils/getSwapArrivalStatus/index.js.map +1 -0
  14. package/dist/tx/broadcast/index.d.ts +2 -0
  15. package/dist/tx/broadcast/index.d.ts.map +1 -1
  16. package/dist/tx/broadcast/index.js +34 -3
  17. package/dist/tx/broadcast/index.js.map +1 -1
  18. package/dist/tx/broadcast/resolver.d.ts +35 -1
  19. package/dist/tx/broadcast/resolver.d.ts.map +1 -1
  20. package/dist/tx/broadcast/resolver.js +42 -1
  21. package/dist/tx/broadcast/resolver.js.map +1 -1
  22. package/dist/tx/broadcast/resolvers/bittensor.d.ts.map +1 -1
  23. package/dist/tx/broadcast/resolvers/bittensor.js +17 -6
  24. package/dist/tx/broadcast/resolvers/bittensor.js.map +1 -1
  25. package/dist/tx/broadcast/resolvers/cardano.d.ts.map +1 -1
  26. package/dist/tx/broadcast/resolvers/cardano.js +26 -16
  27. package/dist/tx/broadcast/resolvers/cardano.js.map +1 -1
  28. package/dist/tx/broadcast/resolvers/cosmos.d.ts.map +1 -1
  29. package/dist/tx/broadcast/resolvers/cosmos.js +33 -31
  30. package/dist/tx/broadcast/resolvers/cosmos.js.map +1 -1
  31. package/dist/tx/broadcast/resolvers/evm.d.ts.map +1 -1
  32. package/dist/tx/broadcast/resolvers/evm.js +21 -9
  33. package/dist/tx/broadcast/resolvers/evm.js.map +1 -1
  34. package/dist/tx/broadcast/resolvers/polkadot.d.ts.map +1 -1
  35. package/dist/tx/broadcast/resolvers/polkadot.js +23 -4
  36. package/dist/tx/broadcast/resolvers/polkadot.js.map +1 -1
  37. package/dist/tx/broadcast/resolvers/qbtc.d.ts.map +1 -1
  38. package/dist/tx/broadcast/resolvers/qbtc.js +69 -52
  39. package/dist/tx/broadcast/resolvers/qbtc.js.map +1 -1
  40. package/dist/tx/broadcast/resolvers/ripple.d.ts.map +1 -1
  41. package/dist/tx/broadcast/resolvers/ripple.js +24 -9
  42. package/dist/tx/broadcast/resolvers/ripple.js.map +1 -1
  43. package/dist/tx/broadcast/resolvers/solana.d.ts.map +1 -1
  44. package/dist/tx/broadcast/resolvers/solana.js +19 -10
  45. package/dist/tx/broadcast/resolvers/solana.js.map +1 -1
  46. package/dist/tx/broadcast/resolvers/sui.d.ts.map +1 -1
  47. package/dist/tx/broadcast/resolvers/sui.js +20 -14
  48. package/dist/tx/broadcast/resolvers/sui.js.map +1 -1
  49. package/dist/tx/broadcast/resolvers/ton.d.ts.map +1 -1
  50. package/dist/tx/broadcast/resolvers/ton.js +16 -5
  51. package/dist/tx/broadcast/resolvers/ton.js.map +1 -1
  52. package/dist/tx/broadcast/resolvers/tron.d.ts.map +1 -1
  53. package/dist/tx/broadcast/resolvers/tron.js +15 -6
  54. package/dist/tx/broadcast/resolvers/tron.js.map +1 -1
  55. package/dist/tx/broadcast/resolvers/utxo.d.ts.map +1 -1
  56. package/dist/tx/broadcast/resolvers/utxo.js +27 -17
  57. package/dist/tx/broadcast/resolvers/utxo.js.map +1 -1
  58. package/dist/tx/broadcast/transientRetry.d.ts.map +1 -1
  59. package/dist/tx/broadcast/transientRetry.js +4 -2
  60. package/dist/tx/broadcast/transientRetry.js.map +1 -1
  61. package/dist/tx/broadcast/verifyBroadcastByHash.d.ts +1 -1
  62. package/dist/tx/broadcast/verifyBroadcastByHash.d.ts.map +1 -1
  63. package/dist/tx/broadcast/verifyBroadcastByHash.js +1 -1
  64. package/dist/tx/broadcast/verifyBroadcastByHash.js.map +1 -1
  65. package/package.json +6 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @vultisig/core-chain
2
2
 
3
+ ## 3.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#1891](https://github.com/vultisig/vultisig-sdk/pull/1891) [`7d6a014`](https://github.com/vultisig/vultisig-sdk/commit/7d6a01440fd0b855356cce81469b5b5a91665862) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Standardize signed-transaction broadcast adapters on one typed accepted-or-failed result contract.
8
+
9
+ ## 2.39.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [#1810](https://github.com/vultisig/vultisig-sdk/pull/1810) [`088b905`](https://github.com/vultisig/vultisig-sdk/commit/088b9058f47eff8dc84929e89fdf4ddfde7e42e6) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Add provider-aware swap arrival status normalization for THORChain, MayaChain, Skip Go, and LI.FI.
14
+
15
+ ### Patch Changes
16
+
17
+ - [#1810](https://github.com/vultisig/vultisig-sdk/pull/1810) [`088b905`](https://github.com/vultisig/vultisig-sdk/commit/088b9058f47eff8dc84929e89fdf4ddfde7e42e6) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Fix three unsafe terminal-state gaps in `getSwapArrivalStatus`: LI.FI `DONE/PARTIAL` (user received a different token than requested) is now reported as a distinct `partial` status instead of being flattened into `success`; malformed or unknown Midgard action statuses now throw `SwapArrivalStatusRequestError` instead of being reported as a terminal `error`; and THOR/Maya node-only completion now reads THORNode's `planned_out_txs[].refund` flag to report `success`/`refunded` when available, instead of always forcing an artificial `pending` state.
18
+
3
19
  ## 2.38.0
4
20
 
5
21
  ### Minor Changes
@@ -39,6 +39,15 @@ export declare const TERRA_CLASSIC_ULUNA_BASE_GAS = 8497500n;
39
39
  * originally did.
40
40
  */
41
41
  export declare const TERRA_CLASSIC_STAKING_ULUNA_FEE_BASE_UNITS: bigint;
42
+ /**
43
+ * Terra Classic's `uusd` fee at the static 300k gas limit:
44
+ * `300_000 × 0.75 uusd/gas`. USTC bank-denom sends pay both gas and burn
45
+ * tax in `uusd`, so their base cannot reuse the native `uluna` amount.
46
+ *
47
+ * Matches iOS `TerraClassicTax.uusdBaseGas` and Android
48
+ * `TerraClassicTax.UUSD_BASE_GAS`.
49
+ */
50
+ export declare const TERRA_CLASSIC_UUSD_BASE_GAS = 225000n;
42
51
  export declare const cosmosGasRecord: Record<IbcEnabledCosmosChain, bigint>;
43
52
  /**
44
53
  * Returns the canonical static native-send fee in base units.
@@ -1 +1 @@
1
- {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAA4B,KAAK,aAAa,EAAgB,MAAM,iBAAiB,CAAA;AAM5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,yGAAyG;AACzG,eAAO,MAAM,uBAAuB,QAAQ,CAAA;AAE5C,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,cAAc,CAAA;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,4BAA4B,WAAa,CAAA;AAEtD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0CAA0C,QAGtD,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CASjE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,OAAO,WAAW,KAAG,MAAM,GAAG,SAIvE,CAAA;AAED,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAqBD,eAAO,MAAM,sBAAsB,GAAI,iBAAiB,MAAM,EAAE,aAAa,MAAM,KAAG,aAAa,GAAG,SAYrG,CAAA;AA0ED,eAAO,MAAM,kBAAkB,GAC7B,MAAM,OAAO,CAAC,qBAAqB,CAAC,EACpC,OAAM,SAAc,KACnB,OAAO,CAAC,MAAM,CAehB,CAAA"}
1
+ {"version":3,"file":"gas.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,WAAW,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAA4B,KAAK,aAAa,EAAgB,MAAM,iBAAiB,CAAA;AAM5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,yGAAyG;AACzG,eAAO,MAAM,uBAAuB,QAAQ,CAAA;AAE5C,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,cAAc,CAAA;AAEnD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,4BAA4B,WAAa,CAAA;AAEtD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0CAA0C,QAGtD,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,UAAW,CAAA;AAEnD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CASjE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GAAI,OAAO,WAAW,KAAG,MAAM,GAAG,SAIvE,CAAA;AAED,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAqBD,eAAO,MAAM,sBAAsB,GAAI,iBAAiB,MAAM,EAAE,aAAa,MAAM,KAAG,aAAa,GAAG,SAYrG,CAAA;AA0ED,eAAO,MAAM,kBAAkB,GAC7B,MAAM,OAAO,CAAC,qBAAqB,CAAC,EACpC,OAAM,SAAc,KACnB,OAAO,CAAC,MAAM,CAehB,CAAA"}
@@ -42,6 +42,15 @@ export const TERRA_CLASSIC_ULUNA_BASE_GAS = 8497500n;
42
42
  * originally did.
43
43
  */
44
44
  export const TERRA_CLASSIC_STAKING_ULUNA_FEE_BASE_UNITS = getFeeAmountFromGasPrice(getCosmosStakingGasLimit({ chain: Chain.TerraClassic }), parseDecimal('28.325'));
45
+ /**
46
+ * Terra Classic's `uusd` fee at the static 300k gas limit:
47
+ * `300_000 × 0.75 uusd/gas`. USTC bank-denom sends pay both gas and burn
48
+ * tax in `uusd`, so their base cannot reuse the native `uluna` amount.
49
+ *
50
+ * Matches iOS `TerraClassicTax.uusdBaseGas` and Android
51
+ * `TerraClassicTax.UUSD_BASE_GAS`.
52
+ */
53
+ export const TERRA_CLASSIC_UUSD_BASE_GAS = 225000n;
45
54
  export const cosmosGasRecord = {
46
55
  [Chain.Cosmos]: COSMOS_SEND_FEE_DEFAULT,
47
56
  [Chain.Osmosis]: 9000n,
@@ -1 +1 @@
1
- {"version":3,"file":"gas.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/gas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gas.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/gas.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,21 @@
25
25
  * `getTerraClassicTaxCaps(denom)` calls are safe to memoize — the rate
26
26
  * does not change mid-tx.
27
27
  */
28
+ import type { CoinKey } from '../../coin/Coin.js';
29
+ /**
30
+ * TerraClassic USTC (bank-denom `uusd`) is the one Cosmos send where the fee
31
+ * (base gas + burn tax) is paid FROM THE SAME BALANCE being sent, rather than
32
+ * from the chain's native fee coin (`uluna`). Callers that size a send against
33
+ * a coin's own balance — refining a full-balance amount down, or computing
34
+ * max-send — must subtract the fee here instead of treating it like any other
35
+ * non-fee-coin token whose gas comes out of a separate native balance.
36
+ *
37
+ * Scoped to plain bank sends by construction: IBC transfers and other
38
+ * transaction types never price `CosmosSpecific.gas` in `uusd` (see
39
+ * `getCosmosChainSpecific`'s `isPlainSend` gate), so this predicate alone is
40
+ * enough for callers that only ever build plain sends.
41
+ */
42
+ export declare const isTerraClassicUstcCoin: (coin: Pick<CoinKey, "chain" | "id">) => boolean;
28
43
  /**
29
44
  * `cosmosRpcUrl` for Terra Classic actually points at the LCD root (despite
30
45
  * the dict name) — the same convention as `staking/lcdQueries`. Keep both
@@ -1 +1 @@
1
- {"version":3,"file":"terraClassicTax.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/terraClassicTax.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAWH;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,QAAO,MAC0B,CAAA;AAEvE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,+BAA+B,QAAO,MACa,CAAA;AAEhE,eAAO,MAAM,yBAAyB,GAAI,OAAO,MAAM,KAAG,MAK0C,CAAA;AAMpG;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,QAAa,CAAA;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,oCAAoC,oBAAyB,CAAA;AAE1E;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,sBAA2B,CAAA;AAMvE,KAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAA;AAiDnE;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,GAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,MAO7E,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAOtF;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,EAAE,MAAM,MAAM,KAAG,MAIvE,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBvG;AAMD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,KAC9C,MAiBF,CAAA"}
1
+ {"version":3,"file":"terraClassicTax.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/terraClassicTax.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,KAAG,OACL,CAAA;AAMxE;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,QAAO,MAC0B,CAAA;AAEvE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,+BAA+B,QAAO,MACa,CAAA;AAEhE,eAAO,MAAM,yBAAyB,GAAI,OAAO,MAAM,KAAG,MAK0C,CAAA;AAMpG;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,QAAa,CAAA;AAErD;;;;;;;GAOG;AACH,eAAO,MAAM,oCAAoC,oBAAyB,CAAA;AAE1E;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,sBAA2B,CAAA;AAMvE,KAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,CAAA;AAiDnE;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,GAAI,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,MAO7E,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAOtF;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,EAAE,MAAM,MAAM,KAAG,MAIvE,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,SAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBvG;AAMD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,KAC9C,MAiBF,CAAA"}
@@ -28,6 +28,20 @@
28
28
  import { attempt } from '@vultisig/lib-utils/attempt';
29
29
  import { Chain } from '../../Chain.js';
30
30
  import { cosmosRpcUrl } from './cosmosRpcUrl.js';
31
+ /**
32
+ * TerraClassic USTC (bank-denom `uusd`) is the one Cosmos send where the fee
33
+ * (base gas + burn tax) is paid FROM THE SAME BALANCE being sent, rather than
34
+ * from the chain's native fee coin (`uluna`). Callers that size a send against
35
+ * a coin's own balance — refining a full-balance amount down, or computing
36
+ * max-send — must subtract the fee here instead of treating it like any other
37
+ * non-fee-coin token whose gas comes out of a separate native balance.
38
+ *
39
+ * Scoped to plain bank sends by construction: IBC transfers and other
40
+ * transaction types never price `CosmosSpecific.gas` in `uusd` (see
41
+ * `getCosmosChainSpecific`'s `isPlainSend` gate), so this predicate alone is
42
+ * enough for callers that only ever build plain sends.
43
+ */
44
+ export const isTerraClassicUstcCoin = (coin) => coin.chain === Chain.TerraClassic && coin.id?.toLowerCase() === 'uusd';
31
45
  // ---------------------------------------------------------------------------
32
46
  // LCD endpoints
33
47
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"terraClassicTax.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/terraClassicTax.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terraClassicTax.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/chains/cosmos/terraClassicTax.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ export declare const swapArrivalProviders: readonly ["thorchain", "mayachain", "skip", "li.fi"];
2
+ export type SwapArrivalProvider = (typeof swapArrivalProviders)[number];
3
+ export type SwapArrivalPendingStage = 'inbound' | 'confirming' | 'swapping' | 'outbound' | 'refunding';
4
+ type SwapArrivalStatusBase = {
5
+ provider: SwapArrivalProvider;
6
+ txHash: string;
7
+ destinationTxHash?: string;
8
+ message?: string;
9
+ };
10
+ export type SwapArrivalStatusResult = (SwapArrivalStatusBase & {
11
+ status: 'pending';
12
+ stage: SwapArrivalPendingStage;
13
+ }) | (SwapArrivalStatusBase & {
14
+ status: 'success';
15
+ stage: 'complete';
16
+ }) | (SwapArrivalStatusBase & {
17
+ status: 'partial';
18
+ stage: 'complete';
19
+ }) | (SwapArrivalStatusBase & {
20
+ status: 'refunded';
21
+ stage: 'refunded';
22
+ }) | (SwapArrivalStatusBase & {
23
+ status: 'not_found';
24
+ stage: 'not_found';
25
+ }) | (SwapArrivalStatusBase & {
26
+ status: 'error';
27
+ stage: 'failed';
28
+ });
29
+ export type SwapArrivalStatusHosts = {
30
+ thorchainNode: string;
31
+ thorchainMidgard: string;
32
+ mayachainNode: string;
33
+ mayachainMidgard: string;
34
+ skip: string;
35
+ lifi: string;
36
+ };
37
+ export declare const defaultSwapArrivalStatusHosts: SwapArrivalStatusHosts;
38
+ type GetSwapArrivalStatusBase = {
39
+ txHash: string;
40
+ hosts?: Partial<SwapArrivalStatusHosts>;
41
+ fetchImpl?: typeof fetch;
42
+ headers?: HeadersInit;
43
+ signal?: AbortSignal;
44
+ };
45
+ export type GetSwapArrivalStatusInput = (GetSwapArrivalStatusBase & {
46
+ provider: 'thorchain' | 'mayachain';
47
+ }) | (GetSwapArrivalStatusBase & {
48
+ provider: 'skip';
49
+ chainId: string;
50
+ }) | (GetSwapArrivalStatusBase & {
51
+ provider: 'li.fi';
52
+ fromChain?: string | number;
53
+ toChain?: string | number;
54
+ bridge?: string;
55
+ });
56
+ export declare class SwapArrivalStatusRequestError extends Error {
57
+ readonly provider: SwapArrivalProvider;
58
+ readonly errors: Error[];
59
+ constructor(provider: SwapArrivalProvider, errors: Error[]);
60
+ }
61
+ export declare const isSwapArrivalStatusTerminal: (result: SwapArrivalStatusResult) => boolean;
62
+ /**
63
+ * Reads one provider status snapshot and normalizes it for both UI progress and
64
+ * terminal agent workflows. This function deliberately does not poll: callers
65
+ * retain control of cadence, retry budgets and cancellation while sharing the
66
+ * provider response state machines.
67
+ *
68
+ * `not_found` is a transient snapshot because providers use it during normal
69
+ * pre-indexing windows. Likewise, THOR/Maya node-only outbound completion stays
70
+ * pending unless the node's `planned_out_txs[].refund` flag or Midgard's
71
+ * action type can identify it as a swap output or a refund.
72
+ *
73
+ * Network, HTTP and malformed-response failures throw
74
+ * `SwapArrivalStatusRequestError`; they are not converted to terminal `error`
75
+ * results because an upstream outage does not mean the swap itself failed.
76
+ */
77
+ export declare const getSwapArrivalStatus: (input: GetSwapArrivalStatusInput) => Promise<SwapArrivalStatusResult>;
78
+ export {};
79
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/swap/utils/getSwapArrivalStatus/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,sDAAuD,CAAA;AAExF,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvE,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAA;AAEtG,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAC/B,CAAC,qBAAqB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE,CAAC,GAC/E,CAAC,qBAAqB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,GAClE,CAAC,qBAAqB,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,GAClE,CAAC,qBAAqB,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC,GACnE,CAAC,qBAAqB,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC,GACrE,CAAC,qBAAqB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA;AAElE,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,6BAA6B,EAAE,sBAO3C,CAAA;AAED,KAAK,wBAAwB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACvC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACxB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,yBAAyB,GACjC,CAAC,wBAAwB,GAAG;IAAE,QAAQ,EAAE,WAAW,GAAG,WAAW,CAAA;CAAE,CAAC,GACpE,CAAC,wBAAwB,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAClE,CAAC,wBAAwB,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAC,CAAA;AA8DN,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAA;IACtC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA;gBAEZ,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE;CAM3D;AA0VD,eAAO,MAAM,2BAA2B,GAAI,QAAQ,uBAAuB,KAAG,OAChB,CAAA;AAE9D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oBAAoB,GAAU,OAAO,yBAAyB,KAAG,OAAO,CAAC,uBAAuB,CAkB5G,CAAA"}
@@ -0,0 +1,374 @@
1
+ import { Chain } from '@vultisig/core-chain/Chain';
2
+ import { cosmosRpcUrl } from '@vultisig/core-chain/chains/cosmos/cosmosRpcUrl';
3
+ import { thorchainMidgardBaseUrl } from '@vultisig/core-chain/chains/cosmos/thor/lp/pools';
4
+ export const swapArrivalProviders = ['thorchain', 'mayachain', 'skip', 'li.fi'];
5
+ export const defaultSwapArrivalStatusHosts = {
6
+ thorchainNode: `${cosmosRpcUrl[Chain.THORChain]}/thorchain`,
7
+ thorchainMidgard: thorchainMidgardBaseUrl,
8
+ mayachainNode: `${cosmosRpcUrl[Chain.MayaChain]}/mayachain`,
9
+ mayachainMidgard: 'https://midgard.mayachain.info',
10
+ skip: 'https://api.skip.build',
11
+ lifi: 'https://li.quest',
12
+ };
13
+ const trimTrailingSlash = (value) => value.replace(/\/+$/, '');
14
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
15
+ const getRecord = (value, key) => {
16
+ if (!isRecord(value))
17
+ return undefined;
18
+ const candidate = value[key];
19
+ return isRecord(candidate) ? candidate : undefined;
20
+ };
21
+ const getString = (value, key) => {
22
+ if (!isRecord(value))
23
+ return undefined;
24
+ const candidate = value[key];
25
+ return typeof candidate === 'string' ? candidate : undefined;
26
+ };
27
+ const getBoolean = (value, key) => {
28
+ if (!isRecord(value))
29
+ return undefined;
30
+ const candidate = value[key];
31
+ return typeof candidate === 'boolean' ? candidate : undefined;
32
+ };
33
+ const messageFromUnknown = (value) => {
34
+ if (typeof value === 'string' && value.trim())
35
+ return value;
36
+ if (!isRecord(value))
37
+ return undefined;
38
+ return getString(value, 'message') ?? getString(value, 'reason');
39
+ };
40
+ const requestJson = async (fetchImpl, url, init) => {
41
+ try {
42
+ const response = await fetchImpl(url, init);
43
+ if (response.status === 404)
44
+ return { kind: 'not_found' };
45
+ if (!response.ok) {
46
+ return { kind: 'error', error: new Error(`Swap arrival status request failed (${response.status}) for ${url}`) };
47
+ }
48
+ try {
49
+ return { kind: 'ok', data: await response.json() };
50
+ }
51
+ catch (error) {
52
+ return {
53
+ kind: 'error',
54
+ error: new Error(`Swap arrival status returned invalid JSON for ${url}`, { cause: error }),
55
+ };
56
+ }
57
+ }
58
+ catch (error) {
59
+ return {
60
+ kind: 'error',
61
+ error: error instanceof Error ? error : new Error(`Swap arrival status request failed for ${url}`),
62
+ };
63
+ }
64
+ };
65
+ export class SwapArrivalStatusRequestError extends Error {
66
+ provider;
67
+ errors;
68
+ constructor(provider, errors) {
69
+ super(`Unable to read ${provider} swap arrival status: ${errors.map(error => error.message).join('; ')}`);
70
+ this.name = 'SwapArrivalStatusRequestError';
71
+ this.provider = provider;
72
+ this.errors = errors;
73
+ }
74
+ }
75
+ const resultBase = (provider, txHash) => ({
76
+ provider,
77
+ txHash,
78
+ });
79
+ const maxDestinationTxSearchDepth = 12;
80
+ /**
81
+ * Provider route payloads list hops and outbound transactions in execution
82
+ * order, so the last distinct transaction hash is the destination transaction.
83
+ * The depth cap keeps malformed or unexpectedly recursive payloads bounded.
84
+ * THORNode's generic `id` field is handled separately on its known `out_txs`
85
+ * collection so unrelated provider object IDs cannot be mistaken for tx hashes.
86
+ */
87
+ const findDestinationTxHash = (value, sourceTxHash) => {
88
+ const source = sourceTxHash.toLowerCase();
89
+ const found = [];
90
+ const visit = (candidate, depth) => {
91
+ if (depth > maxDestinationTxSearchDepth || candidate === null || candidate === undefined)
92
+ return;
93
+ if (Array.isArray(candidate)) {
94
+ candidate.forEach(item => visit(item, depth + 1));
95
+ return;
96
+ }
97
+ if (!isRecord(candidate))
98
+ return;
99
+ for (const [key, child] of Object.entries(candidate)) {
100
+ if ((key === 'txID' || key === 'txHash' || key === 'tx_hash') && typeof child === 'string') {
101
+ const trimmed = child.trim();
102
+ if (trimmed && trimmed.toLowerCase() !== source)
103
+ found.push(trimmed);
104
+ }
105
+ else {
106
+ visit(child, depth + 1);
107
+ }
108
+ }
109
+ };
110
+ visit(value, 0);
111
+ return found.at(-1);
112
+ };
113
+ const findThorMayaNodeDestinationTxHash = (data, sourceTxHash) => {
114
+ if (!isRecord(data) || !Array.isArray(data.out_txs))
115
+ return findDestinationTxHash(data, sourceTxHash);
116
+ const source = sourceTxHash.toLowerCase();
117
+ const outboundTxHashes = data.out_txs.flatMap(outboundTx => {
118
+ const id = getString(outboundTx, 'id')?.trim();
119
+ return id && id.toLowerCase() !== source ? [id] : [];
120
+ });
121
+ return outboundTxHashes.at(-1) ?? findDestinationTxHash(data, sourceTxHash);
122
+ };
123
+ const completed = (stage) => getBoolean(stage, 'completed') === true;
124
+ const started = (stage) => getBoolean(stage, 'started') === true || completed(stage);
125
+ /**
126
+ * THORNode's `planned_out_txs[].refund` flags whether a planned outbound is a
127
+ * refund or the swap output. Returns `undefined` when the field isn't present
128
+ * on every planned outbound, since a partially-populated response can't be
129
+ * trusted to discriminate the outcome.
130
+ */
131
+ const getPlannedOutTxRefund = (data) => {
132
+ if (!isRecord(data) || !Array.isArray(data.planned_out_txs) || data.planned_out_txs.length === 0)
133
+ return undefined;
134
+ const refundFlags = data.planned_out_txs.map(plannedOutTx => getBoolean(plannedOutTx, 'refund'));
135
+ if (refundFlags.some(refund => refund === undefined))
136
+ return undefined;
137
+ return refundFlags.some(refund => refund === true);
138
+ };
139
+ const getThorMayaNodeProgress = (provider, txHash, data) => {
140
+ const stages = getRecord(data, 'stages');
141
+ if (!stages)
142
+ return undefined;
143
+ const outboundSigned = stages.outbound_signed;
144
+ const destinationTxHash = findThorMayaNodeDestinationTxHash(data, txHash);
145
+ if (completed(outboundSigned)) {
146
+ const refund = getPlannedOutTxRefund(data);
147
+ if (refund === true) {
148
+ return { ...resultBase(provider, txHash), status: 'refunded', stage: 'refunded', destinationTxHash };
149
+ }
150
+ if (refund === false) {
151
+ return { ...resultBase(provider, txHash), status: 'success', stage: 'complete', destinationTxHash };
152
+ }
153
+ // `planned_out_txs[].refund` isn't available on this response, so node
154
+ // data alone can't distinguish a swap output from a refund. Stay pollable
155
+ // until Midgard corroborates the terminal outcome.
156
+ return { ...resultBase(provider, txHash), status: 'pending', stage: 'outbound', destinationTxHash };
157
+ }
158
+ if (isRecord(outboundSigned) || isRecord(stages.outbound_delay) || completed(stages.swap_finalised)) {
159
+ return { ...resultBase(provider, txHash), status: 'pending', stage: 'outbound', destinationTxHash };
160
+ }
161
+ if (isRecord(stages.swap_status) || completed(stages.inbound_finalised)) {
162
+ return { ...resultBase(provider, txHash), status: 'pending', stage: 'swapping' };
163
+ }
164
+ if (started(stages.inbound_confirmation_counted)) {
165
+ return { ...resultBase(provider, txHash), status: 'pending', stage: 'confirming' };
166
+ }
167
+ if (started(stages.inbound_observed)) {
168
+ return { ...resultBase(provider, txHash), status: 'pending', stage: 'inbound' };
169
+ }
170
+ return undefined;
171
+ };
172
+ const getMidgardActions = (data) => {
173
+ if (!isRecord(data) || !Array.isArray(data.actions))
174
+ return [];
175
+ return data.actions.every(isRecord) ? data.actions : [];
176
+ };
177
+ const isMidgardResponse = (data) => isRecord(data) && Array.isArray(data.actions) && data.actions.every(isRecord);
178
+ const isThorMayaNodeResponse = (data) => isRecord(data) && isRecord(data.stages);
179
+ const getActionMessage = (action, type) => messageFromUnknown(getRecord(getRecord(action, 'metadata'), type));
180
+ // Midgard only documents `success` and `pending` as action statuses. Any other
181
+ // (or missing) value is malformed-response data, not a legitimate terminal
182
+ // failure signal, so it must throw rather than be reported as a swap error.
183
+ const unknownMidgardActionStatus = (provider, type, status) => {
184
+ throw new SwapArrivalStatusRequestError(provider, [
185
+ new Error(`${provider} Midgard returned an unknown ${type} action status${status ? `: ${status}` : ''}`),
186
+ ]);
187
+ };
188
+ const getThorMayaMidgardStatus = (provider, txHash, data, nodeProgress) => {
189
+ const actions = getMidgardActions(data);
190
+ const refund = actions.find(action => getString(action, 'type')?.toLowerCase() === 'refund');
191
+ if (refund) {
192
+ const status = getString(refund, 'status')?.toLowerCase();
193
+ const destinationTxHash = findDestinationTxHash(refund, txHash);
194
+ const message = getActionMessage(refund, 'refund');
195
+ if (status === 'success') {
196
+ return { ...resultBase(provider, txHash), status: 'refunded', stage: 'refunded', destinationTxHash, message };
197
+ }
198
+ if (status === 'pending') {
199
+ return { ...resultBase(provider, txHash), status: 'pending', stage: 'refunding', destinationTxHash, message };
200
+ }
201
+ return unknownMidgardActionStatus(provider, 'refund', status);
202
+ }
203
+ const swap = actions.find(action => getString(action, 'type')?.toLowerCase() === 'swap');
204
+ if (!swap)
205
+ return undefined;
206
+ const status = getString(swap, 'status')?.toLowerCase();
207
+ const destinationTxHash = findDestinationTxHash(swap, txHash);
208
+ if (status === 'success') {
209
+ return { ...resultBase(provider, txHash), status: 'success', stage: 'complete', destinationTxHash };
210
+ }
211
+ if (status === 'pending') {
212
+ return nodeProgress ?? { ...resultBase(provider, txHash), status: 'pending', stage: 'swapping' };
213
+ }
214
+ return unknownMidgardActionStatus(provider, 'swap', status);
215
+ };
216
+ const getThorMayaStatus = async ({ provider, txHash, hosts, fetchImpl, headers, signal, }) => {
217
+ const isThorchain = provider === 'thorchain';
218
+ const nodeBase = isThorchain ? hosts.thorchainNode : hosts.mayachainNode;
219
+ const midgardBase = isThorchain ? hosts.thorchainMidgard : hosts.mayachainMidgard;
220
+ const [node, midgard] = await Promise.all([
221
+ requestJson(fetchImpl, `${trimTrailingSlash(nodeBase)}/tx/status/${encodeURIComponent(txHash)}`, {
222
+ headers,
223
+ signal,
224
+ }),
225
+ requestJson(fetchImpl, `${trimTrailingSlash(midgardBase)}/v2/actions?txid=${encodeURIComponent(txHash)}`, {
226
+ headers,
227
+ signal,
228
+ }),
229
+ ]);
230
+ const nodeProgress = node.kind === 'ok' ? getThorMayaNodeProgress(provider, txHash, node.data) : undefined;
231
+ const midgardStatus = midgard.kind === 'ok' ? getThorMayaMidgardStatus(provider, txHash, midgard.data, nodeProgress) : undefined;
232
+ if (midgardStatus)
233
+ return midgardStatus;
234
+ if (nodeProgress)
235
+ return nodeProgress;
236
+ const errors = [node, midgard].flatMap(result => (result.kind === 'error' ? [result.error] : []));
237
+ if (node.kind === 'ok' && !isThorMayaNodeResponse(node.data)) {
238
+ errors.push(new Error(`${provider} node returned an unknown transaction status response`));
239
+ }
240
+ if (midgard.kind === 'ok' && !isMidgardResponse(midgard.data)) {
241
+ errors.push(new Error(`${provider} Midgard returned an unknown actions response`));
242
+ }
243
+ const midgardAuthoritativelyEmpty = midgard.kind === 'ok' && isMidgardResponse(midgard.data) && getMidgardActions(midgard.data).length === 0;
244
+ if (midgardAuthoritativelyEmpty || errors.length === 0) {
245
+ return { ...resultBase(provider, txHash), status: 'not_found', stage: 'not_found' };
246
+ }
247
+ throw new SwapArrivalStatusRequestError(provider, errors);
248
+ };
249
+ const getSkipStatus = async ({ txHash, chainId, hosts, fetchImpl, headers, signal, }) => {
250
+ if (!chainId.trim())
251
+ throw new TypeError('getSwapArrivalStatus: chainId is required for Skip');
252
+ const query = new URLSearchParams({ tx_hash: txHash, chain_id: chainId });
253
+ const request = await requestJson(fetchImpl, `${trimTrailingSlash(hosts.skip)}/v2/tx/status?${query}`, {
254
+ headers,
255
+ signal,
256
+ });
257
+ if (request.kind === 'not_found') {
258
+ return { ...resultBase('skip', txHash), status: 'not_found', stage: 'not_found' };
259
+ }
260
+ if (request.kind === 'error')
261
+ throw new SwapArrivalStatusRequestError('skip', [request.error]);
262
+ const state = getString(request.data, 'state');
263
+ const destinationTxHash = findDestinationTxHash(request.data, txHash);
264
+ const message = messageFromUnknown(isRecord(request.data) ? request.data.error : undefined);
265
+ if (state === 'STATE_COMPLETED_SUCCESS') {
266
+ return { ...resultBase('skip', txHash), status: 'success', stage: 'complete', destinationTxHash };
267
+ }
268
+ if (state === 'STATE_SUBMITTED') {
269
+ return { ...resultBase('skip', txHash), status: 'pending', stage: 'inbound', destinationTxHash };
270
+ }
271
+ if (state === 'STATE_PENDING' || state === 'STATE_PENDING_ERROR') {
272
+ return { ...resultBase('skip', txHash), status: 'pending', stage: 'outbound', destinationTxHash, message };
273
+ }
274
+ if (state === 'STATE_ABANDONED' || state === 'STATE_COMPLETED_ERROR') {
275
+ const assetRelease = getRecord(request.data, 'transfer_asset_release');
276
+ const releasedOnSource = getBoolean(assetRelease, 'released') === true && getString(assetRelease, 'chain_id') === chainId;
277
+ if (releasedOnSource) {
278
+ return { ...resultBase('skip', txHash), status: 'refunded', stage: 'refunded', destinationTxHash, message };
279
+ }
280
+ return { ...resultBase('skip', txHash), status: 'error', stage: 'failed', destinationTxHash, message };
281
+ }
282
+ throw new SwapArrivalStatusRequestError('skip', [new Error('Skip returned an unknown transaction state')]);
283
+ };
284
+ const getLifiPendingStage = (substatus) => {
285
+ if (substatus === 'WAIT_SOURCE_CONFIRMATIONS')
286
+ return 'confirming';
287
+ if (substatus === 'WAIT_DESTINATION_TRANSACTION')
288
+ return 'outbound';
289
+ if (substatus === 'REFUND_IN_PROGRESS')
290
+ return 'refunding';
291
+ return 'swapping';
292
+ };
293
+ const getLifiStatus = async ({ txHash, fromChain, toChain, bridge, hosts, fetchImpl, headers, signal, }) => {
294
+ const query = new URLSearchParams({ txHash });
295
+ if (fromChain !== undefined)
296
+ query.set('fromChain', String(fromChain));
297
+ if (toChain !== undefined)
298
+ query.set('toChain', String(toChain));
299
+ if (bridge !== undefined)
300
+ query.set('bridge', bridge);
301
+ const request = await requestJson(fetchImpl, `${trimTrailingSlash(hosts.lifi)}/v1/status?${query}`, {
302
+ headers,
303
+ signal,
304
+ });
305
+ if (request.kind === 'not_found') {
306
+ return { ...resultBase('li.fi', txHash), status: 'not_found', stage: 'not_found' };
307
+ }
308
+ if (request.kind === 'error')
309
+ throw new SwapArrivalStatusRequestError('li.fi', [request.error]);
310
+ const status = getString(request.data, 'status');
311
+ const substatus = getString(request.data, 'substatus');
312
+ const destinationTxHash = getString(getRecord(request.data, 'receiving'), 'txHash');
313
+ const message = getString(request.data, 'substatusMessage') ?? messageFromUnknown(getRecord(request.data, 'error'));
314
+ if (substatus === 'REFUNDED') {
315
+ return { ...resultBase('li.fi', txHash), status: 'refunded', stage: 'refunded', destinationTxHash, message };
316
+ }
317
+ if (status === 'DONE') {
318
+ // PARTIAL means the user received a different (typically lower-value) token
319
+ // than requested, so it must not be flattened into ordinary `success`.
320
+ if (substatus === 'PARTIAL') {
321
+ return { ...resultBase('li.fi', txHash), status: 'partial', stage: 'complete', destinationTxHash, message };
322
+ }
323
+ return { ...resultBase('li.fi', txHash), status: 'success', stage: 'complete', destinationTxHash, message };
324
+ }
325
+ if (status === 'PENDING') {
326
+ return {
327
+ ...resultBase('li.fi', txHash),
328
+ status: 'pending',
329
+ stage: getLifiPendingStage(substatus),
330
+ destinationTxHash,
331
+ message,
332
+ };
333
+ }
334
+ if (status === 'NOT_FOUND') {
335
+ return { ...resultBase('li.fi', txHash), status: 'not_found', stage: 'not_found', message };
336
+ }
337
+ if (status === 'INVALID' || status === 'FAILED') {
338
+ return { ...resultBase('li.fi', txHash), status: 'error', stage: 'failed', destinationTxHash, message };
339
+ }
340
+ throw new SwapArrivalStatusRequestError('li.fi', [new Error('LI.FI returned an unknown transaction status')]);
341
+ };
342
+ export const isSwapArrivalStatusTerminal = (result) => result.status !== 'pending' && result.status !== 'not_found';
343
+ /**
344
+ * Reads one provider status snapshot and normalizes it for both UI progress and
345
+ * terminal agent workflows. This function deliberately does not poll: callers
346
+ * retain control of cadence, retry budgets and cancellation while sharing the
347
+ * provider response state machines.
348
+ *
349
+ * `not_found` is a transient snapshot because providers use it during normal
350
+ * pre-indexing windows. Likewise, THOR/Maya node-only outbound completion stays
351
+ * pending unless the node's `planned_out_txs[].refund` flag or Midgard's
352
+ * action type can identify it as a swap output or a refund.
353
+ *
354
+ * Network, HTTP and malformed-response failures throw
355
+ * `SwapArrivalStatusRequestError`; they are not converted to terminal `error`
356
+ * results because an upstream outage does not mean the swap itself failed.
357
+ */
358
+ export const getSwapArrivalStatus = async (input) => {
359
+ const txHash = input.txHash.trim();
360
+ if (!txHash)
361
+ throw new TypeError('getSwapArrivalStatus: txHash must not be empty');
362
+ const hostOverrides = Object.fromEntries(Object.entries(input.hosts ?? {}).filter(([, value]) => value !== undefined));
363
+ const hosts = { ...defaultSwapArrivalStatusHosts, ...hostOverrides };
364
+ const fetchImpl = input.fetchImpl ?? fetch;
365
+ const common = { ...input, txHash, hosts, fetchImpl };
366
+ if (input.provider === 'thorchain' || input.provider === 'mayachain') {
367
+ return getThorMayaStatus({ ...common, provider: input.provider });
368
+ }
369
+ if (input.provider === 'skip') {
370
+ return getSkipStatus({ ...common, chainId: input.chainId });
371
+ }
372
+ return getLifiStatus(common);
373
+ };
374
+ //# sourceMappingURL=index.js.map