@vultisig/core-chain 2.29.2 → 2.30.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 CHANGED
@@ -1,5 +1,35 @@
1
1
  # @vultisig/core-chain
2
2
 
3
+ ## 2.30.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1630](https://github.com/vultisig/vultisig-sdk/pull/1630) [`9436de6`](https://github.com/vultisig/vultisig-sdk/commit/9436de627b4d123d7f9bb76e4981722cd84266d1) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Limit-order tracking primitives: queue client, outcome resolution, and a shared status model.
8
+
9
+ `getLimitSwapQueue`/`parseLimitSwapQueue` read THORNode's `/thorchain/queue/limit_swaps` (sender-scoped — one call covers all of an address's orders) into typed resting orders: fill split, TTL, trade target, and the target asset as THORChain holds it after fuzzy-match expansion. An absent `limit_swaps` key parses as `null` ("no information"), never as an empty queue — an order's disappearance from this list is what marks it terminal, so a response we didn't understand must not close every tracked order at once.
10
+
11
+ `resolveLimitSwapOutcome`/`classifyLimitSwapActions` answer what happened to an order that left the queue, from Midgard `/v2/actions`. A `refund` action's reason is authoritative regardless of its outbound status. The `"swap has been completed."` reason is THORNode's TTL-expiry settle signal, not a fill confirmation — verified live on mainnet, a refund carrying that reason returned the full deposit to the sender with zero of the destination asset ever paid out — so it classifies as `expired` rather than `filled`. Rate limits, server errors and empty responses are all `unresolved`: an answer THORChain hasn't given, never an outcome.
12
+
13
+ `getThorchainTxResult` reads `/cosmos/tx/v1beta1/txs/{hash}` — the only place a rejected `MsgDeposit` is visible, since it never produces a Midgard action — so a rejected placement cannot sit "pending" forever.
14
+
15
+ `limitSwapOrderStatuses` + `isTerminalLimitSwapOrderStatus` give every platform the same order lifecycle to render.
16
+
17
+ ### Patch Changes
18
+
19
+ - [#1456](https://github.com/vultisig/vultisig-sdk/pull/1456) [`645e291`](https://github.com/vultisig/vultisig-sdk/commit/645e2917aa1b6cd58c5599ddb32b1c89fa73e20e) Thanks [@rcoderdev](https://github.com/rcoderdev)! - Preserve SwapKit fee asset metadata for Solana-source quotes, including Chainflip's independent stable USDC fee asset, and sum repeated fee entries before fiat valuation.
20
+
21
+ ## 2.29.3
22
+
23
+ ### Patch Changes
24
+
25
+ - [#1678](https://github.com/vultisig/vultisig-sdk/pull/1678) [`7603f32`](https://github.com/vultisig/vultisig-sdk/commit/7603f32e612a7d575b05c49e604aed228817f38c) Thanks [@Ehsan-saradar](https://github.com/Ehsan-saradar)! - Compare VULT discount tier balances in bigint base units instead of float64.
26
+ `100000n * 10n**18n` is not representable in float64 (`Number` round-trips it
27
+ to 99999.99999999999), so a wallet holding exactly 100,000 VULT — the diamond
28
+ minimum — was demoted to platinum and paid a 25 bps affiliate fee instead of
29
+ 15 on every swap. The float rounding also swallowed one-base-unit differences
30
+ around every tier boundary. Comparisons now stay exact via `toChainAmount`
31
+ (vultisig-sdk#1677).
32
+
3
33
  ## 2.29.2
4
34
 
5
35
  ### Patch Changes
@@ -0,0 +1,32 @@
1
+ export type ThorchainTxResult = {
2
+ /** `0` means the message was accepted; anything else is a rejection. */
3
+ code: number;
4
+ /** The node's own account of a rejection, empty on success. */
5
+ rawLog: string;
6
+ };
7
+ /**
8
+ * Parse a `/cosmos/tx/v1beta1/txs/{hash}` body into a result, or `null` for
9
+ * anything that isn't one.
10
+ *
11
+ * The code must be a non-negative safe integer — cosmos ABCI codes are uint32.
12
+ * `typeof === 'number'` alone would let a malformed body's `-1`, `0.5` or `NaN`
13
+ * through, and since callers read any nonzero code as a rejection, garbage
14
+ * would surface as a verdict instead of as "no information".
15
+ */
16
+ export declare const parseThorchainTxResult: (body: unknown) => ThorchainTxResult | null;
17
+ /**
18
+ * A broadcast transaction's RESULT — its `code` and `raw_log` — from
19
+ * `/cosmos/tx/v1beta1/txs/{hash}`.
20
+ *
21
+ * Distinct from the Midgard-backed status path, and deliberately so: Midgard
22
+ * indexes swap ACTIONS, and a `MsgDeposit` whose handler rejects the message
23
+ * produces no action at all — Midgard reports "not found" forever. This
24
+ * endpoint is the only place such a rejection is visible, so it is what stops
25
+ * a rejected limit order from sitting "pending" indefinitely.
26
+ *
27
+ * Returns `null` when the result is unavailable (not yet indexed, node error,
28
+ * malformed body): "no information", never a verdict. A rejection is only ever
29
+ * claimed from a parsed `code !== 0`.
30
+ */
31
+ export declare const getThorchainTxResult: (txHash: string) => Promise<ThorchainTxResult | null>;
32
+ //# sourceMappingURL=getThorchainTxResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getThorchainTxResult.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/cosmos/thor/getThorchainTxResult.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAKD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,OAAO,KAAG,iBAAiB,GAAG,IAY1E,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAQnF,CAAA"}
@@ -0,0 +1,43 @@
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 '../cosmosRpcUrl.js';
5
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
6
+ /**
7
+ * Parse a `/cosmos/tx/v1beta1/txs/{hash}` body into a result, or `null` for
8
+ * anything that isn't one.
9
+ *
10
+ * The code must be a non-negative safe integer — cosmos ABCI codes are uint32.
11
+ * `typeof === 'number'` alone would let a malformed body's `-1`, `0.5` or `NaN`
12
+ * through, and since callers read any nonzero code as a rejection, garbage
13
+ * would surface as a verdict instead of as "no information".
14
+ */
15
+ export const parseThorchainTxResult = (body) => {
16
+ if (!isRecord(body) || !isRecord(body.tx_response)) {
17
+ return null;
18
+ }
19
+ const { code, raw_log } = body.tx_response;
20
+ if (typeof code !== 'number' || !Number.isSafeInteger(code) || code < 0) {
21
+ return null;
22
+ }
23
+ return {
24
+ code,
25
+ rawLog: typeof raw_log === 'string' ? raw_log : '',
26
+ };
27
+ };
28
+ /**
29
+ * A broadcast transaction's RESULT — its `code` and `raw_log` — from
30
+ * `/cosmos/tx/v1beta1/txs/{hash}`.
31
+ *
32
+ * Distinct from the Midgard-backed status path, and deliberately so: Midgard
33
+ * indexes swap ACTIONS, and a `MsgDeposit` whose handler rejects the message
34
+ * produces no action at all — Midgard reports "not found" forever. This
35
+ * endpoint is the only place such a rejection is visible, so it is what stops
36
+ * a rejected limit order from sitting "pending" indefinitely.
37
+ *
38
+ * Returns `null` when the result is unavailable (not yet indexed, node error,
39
+ * malformed body): "no information", never a verdict. A rejection is only ever
40
+ * claimed from a parsed `code !== 0`.
41
+ */
42
+ export const getThorchainTxResult = (txHash) => withFallback(attempt(async () => parseThorchainTxResult(await queryUrl(`${cosmosRpcUrl[Chain.THORChain]}/cosmos/tx/v1beta1/txs/${encodeURIComponent(txHash)}`))), null);
43
+ //# sourceMappingURL=getThorchainTxResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getThorchainTxResult.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/chains/cosmos/thor/getThorchainTxResult.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,gBAAgB,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAS9C,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAa,EAA4B,EAAE;IAChF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,CAAA;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO;QACL,IAAI;QACJ,MAAM,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;KACnD,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAqC,EAAE,CACxF,YAAY,CACV,OAAO,CAAC,KAAK,IAAI,EAAE,CACjB,sBAAsB,CACpB,MAAM,QAAQ,CAAU,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,0BAA0B,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAChH,CACF,EACD,IAAI,CACL,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/affiliate/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,gBAAgB,EAAoD,MAAM,UAAU,CAAA;AAE/G,YAAY,EAAE,gBAAgB,EAAE,CAAA;AAEhC,KAAK,wBAAwB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,uCAGjC,wBAAwB,KAAG,gBAAgB,GAAG,IAuBhD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,cAAc,gBAAgB,GAAG,IAAI,KAAG,MAE3E,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/affiliate/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,gBAAgB,EAAoD,MAAM,UAAU,CAAA;AAE/G,YAAY,EAAE,gBAAgB,EAAE,CAAA;AAEhC,KAAK,wBAAwB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,MAAM,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,uCAGjC,wBAAwB,KAAG,gBAAgB,GAAG,IAqBhD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,cAAc,gBAAgB,GAAG,IAAI,KAAG,MAE3E,CAAA"}
@@ -2,12 +2,11 @@ import { vult } from '@vultisig/core-chain/coin/knownTokens';
2
2
  import { getLastItem } from '@vultisig/lib-utils/array/getLastItem';
3
3
  import { order } from '@vultisig/lib-utils/array/order';
4
4
  import { toEntries } from '@vultisig/lib-utils/record/toEntries';
5
- import { fromChainAmount } from '../../amount/fromChainAmount.js';
5
+ import { toChainAmount } from '../../amount/toChainAmount.js';
6
6
  import { baseAffiliateBps, vultDiscountTierBps, vultDiscountTierMinBalances } from './config.js';
7
7
  export const getVultDiscountTier = ({ vultBalance, thorguardNftBalance, }) => {
8
- const balance = fromChainAmount(vultBalance, vult.decimals);
9
8
  const descendingTiers = order(toEntries(vultDiscountTierMinBalances), ({ value }) => value, 'desc');
10
- const baseTier = descendingTiers.find(({ value }) => balance >= value)?.key;
9
+ const baseTier = descendingTiers.find(({ value }) => vultBalance >= toChainAmount(value, vult.decimals))?.key;
11
10
  if (thorguardNftBalance === 0n) {
12
11
  return baseTier ?? null;
13
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/affiliate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAoB,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AAS/G,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,WAAW,EACX,mBAAmB,GACM,EAA2B,EAAE;IACtD,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IAE3D,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAEnG,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,GAAG,CAAA;IAE3E,IAAI,mBAAmB,KAAK,EAAE,EAAE,CAAC;QAC/B,OAAO,QAAQ,IAAI,IAAI,CAAA;IACzB,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,WAAW,CAAC,eAAe,CAAC,CAAC,GAAG,CAAA;IACzC,CAAC;IAED,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,UAAU,CAAC,CAAA;IAChF,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAA;IAEjF,IAAI,gBAAgB,IAAI,aAAa,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,OAAO,eAAe,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;AAClD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,YAAqC,EAAU,EAAE;IACnF,OAAO,YAAY,CAAC,CAAC,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAA;AAC/F,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/affiliate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAoB,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AAS/G,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,WAAW,EACX,mBAAmB,GACM,EAA2B,EAAE;IACtD,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAEnG,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,WAAW,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAA;IAE7G,IAAI,mBAAmB,KAAK,EAAE,EAAE,CAAC;QAC/B,OAAO,QAAQ,IAAI,IAAI,CAAA;IACzB,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,WAAW,CAAC,eAAe,CAAC,CAAC,GAAG,CAAA;IACzC,CAAC;IAED,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,UAAU,CAAC,CAAA;IAChF,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAA;IAEjF,IAAI,gBAAgB,IAAI,aAAa,EAAE,CAAC;QACtC,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,OAAO,eAAe,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;AAClD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,YAAqC,EAAU,EAAE;IACnF,OAAO,YAAY,CAAC,CAAC,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAA;AAC/F,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSwapKitQuote.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/swapkit/api/getSwapKitQuote.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAEnE,OAAO,EAAE,gBAAgB,EAAiB,MAAM,oDAAoD,CAAA;AAGpG,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAA;AAYxH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAGzE,KAAK,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG;IACzE,IAAI,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAA;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AA2tBD,eAAO,MAAM,eAAe,GAAU,+CAMnC,KAAK,KAAG,OAAO,CAAC,gBAAgB,CAiDlC,CAAA"}
1
+ {"version":3,"file":"getSwapKitQuote.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/swapkit/api/getSwapKitQuote.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAA;AAGnE,OAAO,EAAE,gBAAgB,EAAiB,MAAM,oDAAoD,CAAA;AAGpG,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gEAAgE,CAAA;AAaxH,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAGzE,KAAK,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC,GAAG;IACzE,IAAI,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAA;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AA8zBD,eAAO,MAAM,eAAe,GAAU,+CAMnC,KAAK,KAAG,OAAO,CAAC,gBAAgB,CAkDlC,CAAA"}
@@ -2,6 +2,7 @@ import { base64Decode } from '@bufbuild/protobuf/wire';
2
2
  import { toChainAmount } from '@vultisig/core-chain/amount/toChainAmount';
3
3
  import { Chain } from '@vultisig/core-chain/Chain';
4
4
  import { chainFeeCoin } from '@vultisig/core-chain/coin/chainFeeCoin';
5
+ import { usdc } from '@vultisig/core-chain/coin/knownTokens';
5
6
  import { logUnenforcedAggregatorDestination } from '@vultisig/core-chain/swap/general/knownAggregatorRouters';
6
7
  import { getSwapKitConfig } from '@vultisig/core-chain/swap/general/swapkit/config';
7
8
  import { SwapKitAmountBelowMinimumError, SwapKitNoEligibleRoutesError, } from '@vultisig/core-chain/swap/general/swapkit/SwapKitErrors';
@@ -255,28 +256,83 @@ const buildEvmTx = (tx, fromAddress, approvalTx) => {
255
256
  };
256
257
  };
257
258
  const getSwapKitFeeAmount = (fees, type, decimals) => {
258
- const fee = fees?.find(fee => fee.type?.toLowerCase() === type);
259
- if (!fee?.amount) {
260
- return 0n;
259
+ return (fees ?? [])
260
+ .filter(fee => fee.type?.toLowerCase() === type && fee.amount)
261
+ .reduce((total, fee) => total + toChainAmount(fee.amount, decimals), 0n);
262
+ };
263
+ const isZeroFeeAmount = (amount) => /^[+-]?(?:0+(?:\.0*)?|\.0+)$/.test(amount.trim());
264
+ const sameSwapFeeCoin = (one, another) => one.chain === another.chain &&
265
+ one.decimals === another.decimals &&
266
+ (one.id ?? '').toLowerCase() === (another.id ?? '').toLowerCase();
267
+ const chainflipStableFeeCoin = {
268
+ chain: Chain.Ethereum,
269
+ decimals: usdc.decimals,
270
+ id: usdc.id.toLowerCase(),
271
+ ticker: usdc.ticker,
272
+ };
273
+ const isChainflipProvider = (provider) => provider === 'CHAINFLIP' || provider === 'CHAINFLIP_STREAMING';
274
+ const matchesSwapKitFeeChain = (feeChain, coinChain) => {
275
+ if (!feeChain) {
276
+ return true;
277
+ }
278
+ const normalized = feeChain.toLowerCase();
279
+ return normalized === coinChain.toLowerCase() || normalized === swapKitChainId[coinChain].toLowerCase();
280
+ };
281
+ const getSwapKitSwapFee = (fees, from, to, routeProvider) => {
282
+ const feeCoins = [
283
+ from,
284
+ to,
285
+ ...(isChainflipProvider(routeProvider) ? [chainflipStableFeeCoin] : []),
286
+ ];
287
+ const candidates = feeCoins.map(coin => ({
288
+ coin,
289
+ asset: toSwapKitAsset(coin).toLowerCase(),
290
+ }));
291
+ let result;
292
+ for (const fee of fees ?? []) {
293
+ const type = fee.type?.toLowerCase();
294
+ if ((type !== 'affiliate' && type !== 'service') || !fee.amount || isZeroFeeAmount(fee.amount)) {
295
+ continue;
296
+ }
297
+ if (!fee.asset) {
298
+ throw new Error(`SwapKit ${type} fee is missing its asset.`);
299
+ }
300
+ const candidate = candidates.find(({ asset, coin }) => asset === fee.asset.toLowerCase() && matchesSwapKitFeeChain(fee.chain, coin.chain));
301
+ if (!candidate) {
302
+ throw new Error(`SwapKit ${type} fee uses unsupported asset ${fee.asset}.`);
303
+ }
304
+ const current = {
305
+ amount: toChainAmount(fee.amount, candidate.coin.decimals),
306
+ chain: candidate.coin.chain,
307
+ id: candidate.coin.id,
308
+ decimals: candidate.coin.decimals,
309
+ };
310
+ if (current.amount < 0n) {
311
+ throw new Error(`SwapKit ${type} fee amount cannot be negative.`);
312
+ }
313
+ if (result && !sameSwapFeeCoin(result, current)) {
314
+ throw new Error('SwapKit affiliate and service fees use different assets.');
315
+ }
316
+ result = result ? { ...result, amount: result.amount + current.amount } : current;
261
317
  }
262
- return toChainAmount(fee.amount, decimals);
318
+ return (result ?? {
319
+ amount: 0n,
320
+ chain: from.chain,
321
+ id: from.id,
322
+ decimals: from.decimals,
323
+ });
263
324
  };
264
- const buildSolanaTx = (tx, fees) => {
325
+ const buildSolanaTx = (tx, fees, from, to, routeProvider) => {
265
326
  if (typeof tx !== 'string') {
266
327
  throw new Error('SwapKit Solana route did not return a serialized transaction string.');
267
328
  }
268
329
  const decimals = chainFeeCoin[Chain.Solana].decimals;
269
330
  const networkFee = getSwapKitFeeAmount(fees, 'network', decimals);
270
- const swapFee = getSwapKitFeeAmount(fees, 'affiliate', decimals) + getSwapKitFeeAmount(fees, 'service', decimals);
271
331
  return {
272
332
  solana: {
273
333
  data: tx,
274
334
  networkFee,
275
- swapFee: {
276
- amount: swapFee,
277
- decimals,
278
- chain: Chain.Solana,
279
- },
335
+ swapFee: getSwapKitSwapFee(fees, from, to, routeProvider),
280
336
  },
281
337
  };
282
338
  };
@@ -404,9 +460,9 @@ const buildTransferTx = (response, from, amount) => {
404
460
  // API calls wasted on a request that can never produce a signable tx).
405
461
  // Signing support for these two as a SwapKit source is separate follow-on work.
406
462
  const SWAP_SOURCE_TX_BUILD_UNSUPPORTED = new Set([Chain.Sui, Chain.Cardano]);
407
- const buildSwapKitTx = (response, from, amount) => {
463
+ const buildSwapKitTx = (response, from, to, amount, routeProvider) => {
408
464
  if (from.chain === Chain.Solana) {
409
- return buildSolanaTx(response.tx, response.fees);
465
+ return buildSolanaTx(response.tx, response.fees, from, to, routeProvider);
410
466
  }
411
467
  if (shouldUseTransferTx(from.chain)) {
412
468
  return buildTransferTx(response, from, amount);
@@ -554,11 +610,12 @@ export const getSwapKitQuote = async ({ from, to, amount, affiliateBps, slippage
554
610
  disableBalanceCheck: true,
555
611
  disableBuildTx: shouldUseTransferTx(from.chain) && from.chain !== Chain.Bitcoin ? true : undefined,
556
612
  }));
613
+ const routeProvider = getRouteProviderName(swapResponse) ?? getRouteProviderName(route);
557
614
  return {
558
615
  dstAmount: parseExpectedBuyAmount(swapResponse.expectedBuyAmount ?? route.expectedBuyAmount, to.decimals),
559
616
  provider: 'swapkit',
560
- routeProvider: getRouteProviderName(swapResponse) ?? getRouteProviderName(route),
561
- tx: buildSwapKitTx(swapResponse, from, amount),
617
+ routeProvider,
618
+ tx: buildSwapKitTx(swapResponse, from, to, amount, routeProvider),
562
619
  };
563
620
  };
564
621
  //# sourceMappingURL=getSwapKitQuote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSwapKitQuote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/swapkit/api/getSwapKitQuote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getSwapKitQuote.js","sourceRoot":"","sources":["../../../../../../../../packages/core/chain/swap/general/swapkit/api/getSwapKitQuote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAA;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAA;AAE5D,OAAO,EAAE,kCAAkC,EAAE,MAAM,0DAA0D,CAAA;AAC7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAA;AAEnF,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,yDAAyD,CAAA;AAChE,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,4DAA4D,CAAA;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAA;AAE1F,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AA6BrE,MAAM,uBAAuB,GAAsB;IACjD,WAAW;IACX,qBAAqB;IACrB,MAAM;IACN,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,KAAK;IACL,aAAa;IACb,cAAc;IACd,cAAc;IACd,aAAa;IACb,YAAY;IACZ,cAAc;CACf,CAAA;AAED,MAAM,4BAA4B,GAAwB;IACxD,uBAAuB;IACvB,CAAC,MAAM,CAAC;IACR,CAAC,WAAW,EAAE,qBAAqB,CAAC;IACpC,CAAC,QAAQ,CAAC;IACV,CAAC,UAAU,CAAC;IACZ,CAAC,QAAQ,CAAC;IACV,CAAC,SAAS,CAAC;IACX;QACE,SAAS;QACT,YAAY;QACZ,YAAY;QACZ,KAAK;QACL,aAAa;QACb,cAAc;QACd,cAAc;QACd,aAAa;QACb,YAAY;QACZ,cAAc;KACf;CACF,CAAA;AAED,MAAM,cAAc,GAAwC;IAC1D,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK;IACvB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM;IACzB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK;IACtB,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,MAAM,CAAC,EAAE,MAAM;IACtB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,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,QAAQ,CAAC,EAAE,IAAI;IACtB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK;IACtB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;IACrB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK;IACrB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAClB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM;IACzB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAClB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;IACpB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK;CACrB,CAAA;AA+DD,MAAM,2BAA2B,GAAG;IAClC,KAAK,CAAC,OAAO;IACb,KAAK,CAAC,WAAW;IACjB,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,QAAQ;IACd,KAAK,CAAC,MAAM;IACZ,KAAK,CAAC,GAAG;IACT,KAAK,CAAC,IAAI;IACV,KAAK,CAAC,KAAK;CACH,CAAA;AAEV,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAA;AAElH,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAU,EAAE;IACzE,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACnC,MAAM,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;IAE1C,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAA;IACnC,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;IACvC,MAAM,KAAK,GAAG,GAAG,GAAG,OAAO,CAAA;IAC3B,MAAM,QAAQ,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAEtF,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAA;AAC3F,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAiD,EAAY,EAAE;IAC1G,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAC1F,CAAC,QAAQ,EAAsB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAC7C,CAAA;IAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,KAAwB,EAAE,EAAE,CAClD,kBAAkB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEtF,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,EAAE;IACzC,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IAEtE,OAAO,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AAC9F,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,EAAE;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IAEnC,6EAA6E;IAC7E,4EAA4E;IAC5E,iCAAiC;IACjC,MAAM,iBAAiB,GACrB,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzB,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC3B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvB,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAE7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,CACL,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC/B,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC9B,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAChC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC5B,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAClC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAChC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CACpC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,CAAC,SAA6B,EAAW,EAAE,CACzE,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;AAEpF,2EAA2E;AAC3E,MAAM,gCAAgC,GAAG,CAAC,MAA8C,EAAsB,EAAE;IAC9G,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAA;QACvB,6EAA6E;QAC7E,+EAA+E;QAC/E,+CAA+C;QAC/C,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAA;QAE3C,+EAA+E;QAC/E,6EAA6E;QAC7E,IAAI,CAAC,WAAW,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxF,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YACxD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAA;YAC1D,OAAO,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAA;QAChC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,KAAoD,EAAE,EAAE;IACpF,MAAM,CAAC,aAAa,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE7G,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAAC,MAA0B,EAAE,QAAgB,EAAU,EAAE;IACtF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IAED,OAAO,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,KAAK,EAAK,IAAY,EAAE,IAA6B,EAAc,EAAE;IACvF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAA;IAC9C,MAAM,aAAa,GAAG,MAAM,EAAE,IAAI,EAAE,CAAA;IAEpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;QACnE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAEzD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC5B,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;gBAChC,CAAC,CAAC,IAAI,CAAC,OAAO;gBACd,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;oBAC9B,CAAC,CAAC,IAAI,CAAC,KAAK;oBACZ,CAAC,CAAC,QAAQ,CAAC,UAAU;YACzB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAA;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,MAAM,OAAO,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO,IAAS,CAAA;AAClB,CAAC,CAAA;AAID,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAqD,EAAE,EAAE;IAClG,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;IAEvD,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,EAAE,CAAA;AACnE,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,KAA2C,EAAE,QAAQ,GAAG,GAAG,EAAE,EAAE;IACnF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,wEAAwE;IACxE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACrD,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;AACjC,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,KAA2C,EAAsB,EAAE;IACrF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,uDAAuD;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;AACtB,CAAC,CAAA;AAED,gEAAgE;AAChE,gFAAgF;AAChF,mFAAmF;AACnF,MAAM,oBAAoB,GAAG,CAAC,IAAwB,EAAsB,EAAE;IAC5E,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACnF,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAA;IACzC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,6EAA6E;IAC7E,4EAA4E;IAC5E,uEAAuE;IACvE,OAAO,OAAO,KAAK,4CAA4C,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;AACvF,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CACjB,EAAW,EACX,WAAmB,EACnB,UAA8C,EAC/B,EAAE;IACjB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IAED,MAAM,KAAK,GAAG,EAAkB,CAAA;IAEhC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IAED,+EAA+E;IAC/E,oFAAoF;IACpF,sFAAsF;IACtF,kCAAkC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;IAEvD,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAA;IAEvC,2EAA2E;IAC3E,yEAAyE;IACzE,gEAAgE;IAChE,MAAM,eAAe,GAAG,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAE9D,OAAO;QACL,GAAG,EAAE;YACH,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,WAAW;YAC/B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;YACxB,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;YAChC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC;YACzB,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,IAAiC,EAAE,IAAY,EAAE,QAAgB,EAAU,EAAE;IACxG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;SAChB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC;SAC7D,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,MAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAA;AAC7E,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;AAE7F,MAAM,eAAe,GAAG,CAAC,GAAY,EAAE,OAAgB,EAAE,EAAE,CACzD,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;IAC3B,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ;IACjC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;AAEnE,MAAM,sBAAsB,GAAG;IAC7B,KAAK,EAAE,KAAK,CAAC,QAAQ;IACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE;IACzB,MAAM,EAAE,IAAI,CAAC,MAAM;CACO,CAAA;AAE5B,MAAM,mBAAmB,GAAG,CAAC,QAA4B,EAAE,EAAE,CAC3D,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,qBAAqB,CAAA;AAEhE,MAAM,sBAAsB,GAAG,CAAC,QAA4B,EAAE,SAA8B,EAAE,EAAE;IAC9F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IAEzC,OAAO,UAAU,KAAK,SAAS,CAAC,WAAW,EAAE,IAAI,UAAU,KAAK,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;AACzG,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CACxB,IAAiC,EACjC,IAAqC,EACrC,EAAoC,EACpC,aAAiC,EACxB,EAAE;IACX,MAAM,QAAQ,GAAuB;QACnC,IAAI;QACJ,EAAE;QACF,GAAG,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,CAAA;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI;QACJ,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;KAC1C,CAAC,CAAC,CAAA;IACH,IAAI,MAA2B,CAAA;IAE/B,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,CAAA;QAEpC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/F,SAAQ;QACV,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,4BAA4B,CAAC,CAAA;QAC9D,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAC/B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,KAAM,CAAC,WAAW,EAAE,IAAI,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CACzG,CAAA;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,+BAA+B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAA;QAC7E,CAAC;QAED,MAAM,OAAO,GAAY;YACvB,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC1D,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;YAC3B,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE;YACrB,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ;SAClC,CAAA;QAED,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,iCAAiC,CAAC,CAAA;QACnE,CAAC;QAED,IAAI,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;QAC7E,CAAC;QAED,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;IACnF,CAAC;IAED,OAAO,CACL,MAAM,IAAI;QACR,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CACpB,EAAW,EACX,IAAiC,EACjC,IAAqC,EACrC,EAAoC,EACpC,aAAiC,EAClB,EAAE;IACjB,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;IACzF,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAA;IACpD,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IAEjE,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,EAAE;YACR,UAAU;YACV,OAAO,EAAE,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC;SAC1D;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,EAAuB,EAAsB,EAAE;IAClH,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9E,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IACtB,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,KAA+B,EAAE,QAAgB,EAAU,EAAE;IACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;QACvE,CAAC;QAED,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC5F,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC,CAAA;AAED,MAAM,iBAAiB,GAAG,CAAC,EAAE,aAAa,EAAE,EAAE,EAAuB,EAAE,MAAc,EAAE,QAAgB,EAAU,EAAE;IACjH,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAED,IACE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACjB,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,EAC1G,CAAC;QACD,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,KAAyB,EAAyD,EAAE,CAC/G,OAAO,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAA;AAE7C,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AAErC,MAAM,sBAAsB,GAAG,CAAC,KAAc,EAAU,EAAE;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IAC3D,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;aAC1B,IAAI,EAAE;aACN,OAAO,CAAC,GAAG,CAAC,EAAE;YACb,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;YAEvB,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC7F,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAAC,EAAW,EAAE,MAAe,EAAc,EAAE;IAC1E,MAAM,gBAAgB,GAAG,MAAM,EAAE,WAAW,EAAE,CAAA;IAE9C,IAAI,gBAAgB,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACtE,OAAO,IAAI,UAAU,EAAE,CAAA;IACzB,CAAC;IAED,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC3B,IAAI,gBAAgB,KAAK,MAAM,IAAI,gBAAgB,KAAK,KAAK,EAAE,CAAC;YAC9D,OAAO,YAAY,CAAC,EAAE,CAAC,CAAA;QACzB,CAAC;QAED,OAAO,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,OAAO,WAAW,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,+BAA+B,GAAG,CAAC,EACvC,SAAS,EACT,aAAa,EACb,aAAa,GAKd,EAAsB,EAAE;IACvB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QACpD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5F,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5F,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAExC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAChF,CAAC,CAAC,CAAA;QAEF,OAAO,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CACtB,QAA6B,EAC7B,IAAqC,EACrC,MAAc,EACC,EAAE;IACjB,MAAM,EAAE,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IAE7C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvF,MAAM,qBAAqB,GACzB,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,IAAI,MAAM,EAAE,WAAW,EAAE,KAAK,MAAM,IAAI,SAAS,EAAE,MAAM;QACnF,CAAC,CAAC,+BAA+B,CAAC;YAC9B,SAAS;YACT,aAAa,EAAE,IAAI,CAAC,OAAO;YAC3B,aAAa,EAAE,EAAE;SAClB,CAAC;QACJ,CAAC,CAAC,SAAS,CAAA;IAEf,MAAM,QAAQ,GAAG;QACf,EAAE;QACF,MAAM,EAAE,qBAAqB,IAAI,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACnF,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAA;IAED,OAAO;QACL,QAAQ;KACT,CAAA;AACH,CAAC,CAAA;AAED,+EAA+E;AAC/E,0EAA0E;AAC1E,iFAAiF;AACjF,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,qEAAqE;AACrE,mBAAmB;AACnB,+EAA+E;AAC/E,+EAA+E;AAC/E,+DAA+D;AAC/D,6EAA6E;AAC7E,uEAAuE;AACvE,gFAAgF;AAChF,MAAM,gCAAgC,GAAoC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;AAE7G,MAAM,cAAc,GAAG,CACrB,QAA6B,EAC7B,IAAqC,EACrC,EAAoC,EACpC,MAAc,EACd,aAAiC,EAClB,EAAE;IACjB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA;IAC3E,CAAC;IAED,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;AACnE,CAAC,CAAA;AAED,MAAM,sBAAsB,GAAG,CAAC,KAAwB,EAAE,QAAgB,EAAiB,EAAE;IAC3F,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,6BAA6B,GAAG,CAAC,MAA2B,EAAE,QAAgB,EAAE,EAAE,CACtF,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;IAChC,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACvD,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAE/D,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,CAAA;IACX,CAAC;IAED,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAChC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3C,CAAC,CAAC,CAAA;AAEJ,MAAM,yBAAyB,GAAG,KAAK,EAAE,IAA6B,EAAiC,EAAE;IACvG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAA;IAC9C,MAAM,aAAa,GAAG,MAAM,EAAE,IAAI,EAAE,CAAA;IAEpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE;QACrE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAA;IAEF,yEAAyE;IACzE,6EAA6E;IAC7E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;IACrD,IAAI,IAAa,CAAA;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACjE,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,UAAU,GAAG,QAAQ,EAAE,CAAC,CAAA;IACnG,CAAC;IAED,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAyB,CAAA;AAC7D,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,KAAK,EAC5B,IAA6B,EAC7B,SAA4B,EACE,EAAE;IAChC,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,yBAAyB,CACnD,sBAAsB,CAAC;YACrB,GAAG,IAAI;YACP,SAAS;SACV,CAAC,CACH,CAAA;QAED,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,KAAK,CAAA;YAE5D,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,iEAAiE;gBACjE,sEAAsE;gBACtE,MAAM,WAAW,GAAG,gCAAgC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;gBAClF,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAA;gBAC9B,CAAC;gBAED,OAAO,EAAE,CAAA;YACX,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;QAED,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QAExE,4EAA4E;QAC5E,gEAAgE;QAChE,uEAAuE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,yEAAyE;QACzE,oEAAoE;QACpE,sEAAsE;QACtE,wEAAwE;QACxE,mEAAmE;QACnE,oEAAoE;QACpE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,gCAAgC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;YAClF,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAA;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,KAAK,EAAE,IAA6B,EAAE,QAAgB,EAAE,EAAE;IACpF,KAAK,MAAM,SAAS,IAAI,4BAA4B,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAEtD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,6BAA6B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;IAED,MAAM,IAAI,4BAA4B,EAAE,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,EACpC,IAAI,EACJ,EAAE,EACF,MAAM,EACN,YAAY,EACZ,QAAQ,GAAG,CAAC,GACN,EAA6B,EAAE;IACrC,IAAI,gCAAgC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,CAAC,KAAK,wEAAwE;YAC3F,4DAA4D,CAC/D,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC;QAC/B,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC;QAC5B,UAAU,EAAE,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;QACxD,QAAQ;QACR,YAAY,EAAE,YAAY;KAC3B,CAAA;IACD,IAAI,KAAwB,CAAA;IAC5B,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,yEAAyE;QACzE,4EAA4E;QAC5E,6EAA6E;QAC7E,4EAA4E;QAC5E,IACE,KAAK,YAAY,4BAA4B;YAC7C,CAAC,MAAM,sBAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAClE,CAAC;YACD,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;QAChE,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,WAAW,CACpC,UAAU,EACV,sBAAsB,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,IAAI,CAAC,OAAO;QAC3B,kBAAkB,EAAE,EAAE,CAAC,OAAO;QAC9B,mBAAmB,EAAE,IAAI;QACzB,cAAc,EAAE,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KACnG,CAAC,CACH,CAAA;IACD,MAAM,aAAa,GAAG,oBAAoB,CAAC,YAAY,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAEvF,OAAO;QACL,SAAS,EAAE,sBAAsB,CAAC,YAAY,CAAC,iBAAiB,IAAI,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC;QACzG,QAAQ,EAAE,SAAS;QACnB,aAAa;QACb,EAAE,EAAE,cAAc,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC;KAClE,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Every state a tracked limit order can be in, shared across platforms so all
3
+ * clients render the same lifecycle.
4
+ *
5
+ * - `pending` — broadcast, not yet observed in THORChain's queue.
6
+ * - `resting` — observed in the advanced-swap-queue, waiting for its price
7
+ * (possibly partially filled; the fill split lives on the queue entry).
8
+ * - `filled` — executed; an outbound in the target asset settled.
9
+ * - `refunded` — closed with the funds returned and no reason we recognise.
10
+ * Deliberately distinct from `expired`: a placement rejected outright (halted
11
+ * pool, bad memo) also refunds, within seconds, with no TTL elapsed.
12
+ * - `expired` — THORChain closed it because its TTL elapsed (its own words).
13
+ * - `cancelled` — THORChain closed it because a cancel matched it. An observed
14
+ * outcome here; *building* a cancel is a separate concern.
15
+ */
16
+ export declare const limitSwapOrderStatuses: readonly ["pending", "resting", "filled", "refunded", "expired", "cancelled"];
17
+ export type LimitSwapOrderStatus = (typeof limitSwapOrderStatuses)[number];
18
+ /**
19
+ * Whether a status is final — nothing about the order can change, so trackers
20
+ * stop polling it and history views may render it as settled.
21
+ */
22
+ export declare const isTerminalLimitSwapOrderStatus: (status: LimitSwapOrderStatus) => boolean;
23
+ //# sourceMappingURL=limitSwapOrderStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitSwapOrderStatus.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapOrderStatus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,sBAAsB,+EAAgF,CAAA;AAEnH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAA;AAI1E;;;GAGG;AACH,eAAO,MAAM,8BAA8B,GAAI,QAAQ,oBAAoB,KAAG,OAC3C,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Every state a tracked limit order can be in, shared across platforms so all
3
+ * clients render the same lifecycle.
4
+ *
5
+ * - `pending` — broadcast, not yet observed in THORChain's queue.
6
+ * - `resting` — observed in the advanced-swap-queue, waiting for its price
7
+ * (possibly partially filled; the fill split lives on the queue entry).
8
+ * - `filled` — executed; an outbound in the target asset settled.
9
+ * - `refunded` — closed with the funds returned and no reason we recognise.
10
+ * Deliberately distinct from `expired`: a placement rejected outright (halted
11
+ * pool, bad memo) also refunds, within seconds, with no TTL elapsed.
12
+ * - `expired` — THORChain closed it because its TTL elapsed (its own words).
13
+ * - `cancelled` — THORChain closed it because a cancel matched it. An observed
14
+ * outcome here; *building* a cancel is a separate concern.
15
+ */
16
+ export const limitSwapOrderStatuses = ['pending', 'resting', 'filled', 'refunded', 'expired', 'cancelled'];
17
+ const terminalStatuses = ['filled', 'refunded', 'expired', 'cancelled'];
18
+ /**
19
+ * Whether a status is final — nothing about the order can change, so trackers
20
+ * stop polling it and history views may render it as settled.
21
+ */
22
+ export const isTerminalLimitSwapOrderStatus = (status) => terminalStatuses.includes(status);
23
+ //# sourceMappingURL=limitSwapOrderStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitSwapOrderStatus.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapOrderStatus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAU,CAAA;AAInH,MAAM,gBAAgB,GAAoC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;AAExG;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,MAA4B,EAAW,EAAE,CACtF,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * What happened to a limit order that has left the queue.
3
+ *
4
+ * `unresolved` is the load-bearing member: it means "no answer yet", never an
5
+ * outcome. The distinction between "the chain says refund" and "Midgard didn't
6
+ * answer" is the entire safety property of this module — an infrastructure
7
+ * hiccup must not close a live order.
8
+ */
9
+ export declare const limitSwapOutcomes: readonly ["filled", "refunded", "cancelled", "expired", "unresolved"];
10
+ export type LimitSwapOutcome = (typeof limitSwapOutcomes)[number];
11
+ /**
12
+ * Read THORChain's own account of why an order closed.
13
+ *
14
+ * Pure, and separate from the HTTP that fetches it, because this mapping is
15
+ * the whole of the decision. A reason that is missing or that THORChain has
16
+ * since reworded degrades to `refunded` — "the funds came back and we cannot
17
+ * say why" — which is today's truthful answer, never a wrong one.
18
+ */
19
+ export declare const getLimitSwapCloseOutcome: (refundReason: string | undefined | null) => LimitSwapOutcome;
20
+ /** The slice of a Midgard action this classification reads. */
21
+ export type MidgardLimitSwapAction = {
22
+ type?: string;
23
+ /** Whether the action's OUTBOUND settled — not what happened to the order. */
24
+ status?: string;
25
+ metadata?: {
26
+ refund?: {
27
+ reason?: string;
28
+ };
29
+ };
30
+ };
31
+ /**
32
+ * Classify a closed order's Midgard actions into an outcome.
33
+ *
34
+ * A `refund` action wins over everything, and its reason is read regardless of
35
+ * the refund's `status`. Two facts make that safe: callers only ask after the
36
+ * queue has already said the order is gone (so "did it close" is answered),
37
+ * and the reason is set when the refund is created, so reading it while the
38
+ * outbound is still pending is not premature. Gating on `status` instead is a
39
+ * known bug: a refund outbound failing on fees can stay pending indefinitely,
40
+ * leaving the order unresolved forever.
41
+ *
42
+ * The refund must also never fall through to the fill check below it: an order
43
+ * that partially filled and THEN closed has both actions indexed, and reading
44
+ * the older fill would report it FILLED, terminally, on the strength of a fill
45
+ * that was only part of the story.
46
+ *
47
+ * Only the placement action, an outbound still in flight, or nothing at all —
48
+ * either way `unresolved`: Midgard indexing lag, not an answer.
49
+ */
50
+ export declare const classifyLimitSwapActions: (actions: MidgardLimitSwapAction[]) => LimitSwapOutcome;
51
+ /**
52
+ * Resolve what happened to a limit order that has left the queue, from Midgard
53
+ * `/v2/actions`.
54
+ *
55
+ * Midgard is read directly rather than through a generic tx-status provider
56
+ * on purpose: a generic provider folds HTTP 429/5xx into "not found", and here
57
+ * that difference is everything — rate limits, server errors, timeouts and
58
+ * decode failures are all `unresolved`, never an outcome.
59
+ */
60
+ export declare const resolveLimitSwapOutcome: (inboundTxHash: string) => Promise<LimitSwapOutcome>;
61
+ //# sourceMappingURL=limitSwapOutcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitSwapOutcome.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapOutcome.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,uEAAwE,CAAA;AAEtG,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAyCjE;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,GAAI,cAAc,MAAM,GAAG,SAAS,GAAG,IAAI,KAAG,gBAelF,CAAA;AAED,+DAA+D;AAC/D,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE;YACP,MAAM,CAAC,EAAE,MAAM,CAAA;SAChB,CAAA;KACF,CAAA;CACF,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,wBAAwB,GAAI,SAAS,sBAAsB,EAAE,KAAG,gBAS5E,CAAA;AAcD;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,GAAI,eAAe,MAAM,KAAG,OAAO,CAAC,gBAAgB,CASrF,CAAA"}
@@ -0,0 +1,124 @@
1
+ import { attempt, withFallback } from '@vultisig/lib-utils/attempt';
2
+ import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
3
+ import { thorchainMidgardBaseUrl } from '../../chains/cosmos/thor/lp/pools.js';
4
+ /**
5
+ * What happened to a limit order that has left the queue.
6
+ *
7
+ * `unresolved` is the load-bearing member: it means "no answer yet", never an
8
+ * outcome. The distinction between "the chain says refund" and "Midgard didn't
9
+ * answer" is the entire safety property of this module — an infrastructure
10
+ * hiccup must not close a live order.
11
+ */
12
+ export const limitSwapOutcomes = ['filled', 'refunded', 'cancelled', 'expired', 'unresolved'];
13
+ /**
14
+ * The refund reasons THORChain writes when it closes a limit order, matched by
15
+ * stem because detail is appended behind a separator
16
+ * (`"limit swap cancelled; fail to refund …"`).
17
+ *
18
+ * The completion stem is the surprising one: THORNode's advanced-swap-queue
19
+ * manager (`manager_adv_swap_queue_current.go`) writes
20
+ * `"swap has been completed."` via `settleSwap` whenever `IsDone(...)` is
21
+ * true — which fires on TTL elapse as well as full execution (the source
22
+ * comment directly above the call reads "Check if our swap is already
23
+ * completed, ie a limit swap has expired"). `settleSwap` only emits a refund
24
+ * action when `state.deposit > state.in`, i.e. an unfilled remainder is being
25
+ * returned; a fully-filled order has `deposit == in` and emits no refund
26
+ * action at all. So a `refund` action carrying this stem is TTL-expiry closing
27
+ * out the unfilled remainder, never a fill confirmation — verified live on
28
+ * mainnet (tx 5CB3698C…40F9C3): placed at height 27179916, refunded at height
29
+ * 27194316 (exactly +14400 blocks, matching the memo's own TTL), with the
30
+ * refund returning the full RUNE deposit to the sender and zero of the
31
+ * destination asset ever paid out.
32
+ */
33
+ const completedReasonStem = 'swap has been completed';
34
+ const cancelledReasonStem = 'limit swap cancelled';
35
+ const expiredReasonStem = 'limit swap expired';
36
+ /**
37
+ * Whether `value` IS `stem` or is `stem` followed by appended detail.
38
+ *
39
+ * The match must stop at a word boundary: a reworded reason that merely runs
40
+ * the stem on into another word (`"limit swap cancelledness"`) is a DIFFERENT
41
+ * reason and must fall to the fail-closed `refunded`, not be read as a
42
+ * cancellation.
43
+ */
44
+ const hasStem = (value, stem) => {
45
+ if (!value.startsWith(stem))
46
+ return false;
47
+ const boundary = value.slice(stem.length, stem.length + 1);
48
+ if (!boundary)
49
+ return true;
50
+ return !/[a-z0-9]/i.test(boundary);
51
+ };
52
+ /**
53
+ * Read THORChain's own account of why an order closed.
54
+ *
55
+ * Pure, and separate from the HTTP that fetches it, because this mapping is
56
+ * the whole of the decision. A reason that is missing or that THORChain has
57
+ * since reworded degrades to `refunded` — "the funds came back and we cannot
58
+ * say why" — which is today's truthful answer, never a wrong one.
59
+ */
60
+ export const getLimitSwapCloseOutcome = (refundReason) => {
61
+ const normalized = refundReason?.trim().toLowerCase();
62
+ if (!normalized) {
63
+ return 'refunded';
64
+ }
65
+ if (hasStem(normalized, completedReasonStem)) {
66
+ return 'expired';
67
+ }
68
+ if (hasStem(normalized, cancelledReasonStem)) {
69
+ return 'cancelled';
70
+ }
71
+ if (hasStem(normalized, expiredReasonStem)) {
72
+ return 'expired';
73
+ }
74
+ return 'refunded';
75
+ };
76
+ /**
77
+ * Classify a closed order's Midgard actions into an outcome.
78
+ *
79
+ * A `refund` action wins over everything, and its reason is read regardless of
80
+ * the refund's `status`. Two facts make that safe: callers only ask after the
81
+ * queue has already said the order is gone (so "did it close" is answered),
82
+ * and the reason is set when the refund is created, so reading it while the
83
+ * outbound is still pending is not premature. Gating on `status` instead is a
84
+ * known bug: a refund outbound failing on fees can stay pending indefinitely,
85
+ * leaving the order unresolved forever.
86
+ *
87
+ * The refund must also never fall through to the fill check below it: an order
88
+ * that partially filled and THEN closed has both actions indexed, and reading
89
+ * the older fill would report it FILLED, terminally, on the strength of a fill
90
+ * that was only part of the story.
91
+ *
92
+ * Only the placement action, an outbound still in flight, or nothing at all —
93
+ * either way `unresolved`: Midgard indexing lag, not an answer.
94
+ */
95
+ export const classifyLimitSwapActions = (actions) => {
96
+ const refund = actions.find(action => action.type?.toLowerCase() === 'refund');
97
+ if (refund) {
98
+ return getLimitSwapCloseOutcome(refund.metadata?.refund?.reason);
99
+ }
100
+ if (actions.some(action => action.type?.toLowerCase() === 'swap' && action.status?.toLowerCase() === 'success')) {
101
+ return 'filled';
102
+ }
103
+ return 'unresolved';
104
+ };
105
+ /**
106
+ * Midgard keys every chain's txid as uppercase hex with NO `0x` prefix; an
107
+ * L1-sourced order's lookup returns nothing without this normalization.
108
+ * Idempotent for an already-normalized hash.
109
+ */
110
+ const toMidgardTxid = (txHash) => (txHash.startsWith('0x') || txHash.startsWith('0X') ? txHash.slice(2) : txHash).toUpperCase();
111
+ /**
112
+ * Resolve what happened to a limit order that has left the queue, from Midgard
113
+ * `/v2/actions`.
114
+ *
115
+ * Midgard is read directly rather than through a generic tx-status provider
116
+ * on purpose: a generic provider folds HTTP 429/5xx into "not found", and here
117
+ * that difference is everything — rate limits, server errors, timeouts and
118
+ * decode failures are all `unresolved`, never an outcome.
119
+ */
120
+ export const resolveLimitSwapOutcome = (inboundTxHash) => withFallback(attempt(async () => {
121
+ const response = await queryUrl(`${thorchainMidgardBaseUrl}/v2/actions?txid=${encodeURIComponent(toMidgardTxid(inboundTxHash))}`);
122
+ return classifyLimitSwapActions(Array.isArray(response.actions) ? response.actions : []);
123
+ }), 'unresolved');
124
+ //# sourceMappingURL=limitSwapOutcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitSwapOutcome.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapOutcome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * A resting limit order as THORNode's advanced-swap-queue reports it.
3
+ *
4
+ * Amounts are THORChain 1e8 fixed point. Assets are in memo notation, but as
5
+ * THORChain itself holds them — i.e. AFTER `fuzzyAssetMatch` expanded whatever
6
+ * abbreviation the placement memo carried (`ETH.USDC-06EB48` comes back as
7
+ * `ETH.USDC-0XA0B8…`). This is the only place the full identifier can be read
8
+ * back, which matters to any future cancel flow: cancel memos skip fuzzy
9
+ * matching and must spell the asset the long way.
10
+ */
11
+ export type LimitSwapQueueEntry = {
12
+ /** The original inbound tx hash — the identity orders are matched on. */
13
+ txId: string;
14
+ fromAddress?: string;
15
+ /** The placement memo, verbatim. */
16
+ memo?: string;
17
+ /** The deposited (source) asset, in memo notation, as THORChain resolved it. */
18
+ sourceAsset?: string;
19
+ /** The target asset, in full memo notation. */
20
+ targetAsset?: string;
21
+ /** `MsgSwap.TradeTarget` verbatim — the memo's LIM, in 1e8 fixed point. */
22
+ tradeTarget?: bigint;
23
+ /** What went in, in 1e8 — half of the pair THORChain addresses the order by. */
24
+ deposit?: bigint;
25
+ /** How much of the deposit has been swapped so far, in 1e8. */
26
+ amountIn?: bigint;
27
+ /** What has been paid out so far, in 1e8. */
28
+ amountOut?: bigint;
29
+ /**
30
+ * Execution attempts that missed. NOT failures — the order is still resting;
31
+ * surfacing these as errors would be actively wrong.
32
+ */
33
+ failedSwapReasons: string[];
34
+ /** Blocks until the order expires (~6s per THORChain block). */
35
+ timeToExpiryBlocks?: number;
36
+ /**
37
+ * Blocks since placement. Preferred over the wire's `created_timestamp`,
38
+ * which THORNode hardcodes to 0.
39
+ */
40
+ blocksSinceCreated?: number;
41
+ };
42
+ /**
43
+ * Parse `/thorchain/queue/limit_swaps` into typed resting orders.
44
+ *
45
+ * Returns `null` when the `limit_swaps` key is ABSENT — which is not the same
46
+ * as an empty queue, and must never be flattened into one. An order's
47
+ * disappearance from this list is what marks it terminal, so "the queue is
48
+ * empty" is a load-bearing claim: if an unrecognised envelope silently decoded
49
+ * as "no resting orders", every tracked order would be closed at once on the
50
+ * strength of a response we didn't understand. Callers must treat `null` as
51
+ * "no information" and leave orders resting; only an explicit `[]` means the
52
+ * sender has none. Malformed entries throw for the same reason.
53
+ */
54
+ export declare const parseLimitSwapQueue: (body: unknown) => LimitSwapQueueEntry[] | null;
55
+ /**
56
+ * Fetch the advanced-swap-queue's resting limit orders for a sender.
57
+ *
58
+ * Always scope to a sender: unfiltered, the endpoint returns every resting
59
+ * order on the network.
60
+ *
61
+ * The endpoint is paginated (`pagination: { limit, has_next }`) and a sender
62
+ * with more than one page of resting orders would otherwise only ever see
63
+ * page 1 — an order resting on page 2 would read as "absent from the queue",
64
+ * which callers treat as the order having left and closed. This walks pages
65
+ * while `has_next` is true, deduped by `txId` (the identity orders are
66
+ * matched on) as a defensive no-op if a retried page repeats entries.
67
+ *
68
+ * Failures propagate — a fetch or parse error is "no information", and the
69
+ * caller keeps its orders resting rather than concluding anything from it. An
70
+ * unrecognised envelope on the FIRST page is the same "no information" `null`
71
+ * as a single-page fetch; on a later page it only means we can't confirm
72
+ * anything past what we already collected, so those entries are kept rather
73
+ * than discarded.
74
+ */
75
+ export declare const getLimitSwapQueue: (sender: string) => Promise<LimitSwapQueueEntry[] | null>;
76
+ //# sourceMappingURL=limitSwapQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitSwapQueue.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapQueue.ts"],"names":[],"mappings":"AAOA;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,gEAAgE;IAChE,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA;AAkGD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,OAAO,KAAG,mBAAmB,EAAE,GAAG,IAY3E,CAAA;AAYD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,iBAAiB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,mBAAmB,EAAE,GAAG,IAAI,CA4B5F,CAAA"}
@@ -0,0 +1,175 @@
1
+ import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
2
+ import { Chain } from '../../Chain.js';
3
+ import { cosmosRpcUrl } from '../../chains/cosmos/cosmosRpcUrl.js';
4
+ const limitSwapQueueApi = `${cosmosRpcUrl[Chain.THORChain]}/thorchain/queue/limit_swaps`;
5
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
6
+ const parseOptionalString = (value, field) => {
7
+ if (value === undefined || value === null)
8
+ return undefined;
9
+ if (typeof value !== 'string') {
10
+ throw new Error(`limit swap queue: ${field} is not a string`);
11
+ }
12
+ return value;
13
+ };
14
+ /** Wire numerics arrive as strings; widening is deliberate and validated. */
15
+ const parseOptionalAmount = (value, field) => {
16
+ const text = parseOptionalString(value, field);
17
+ if (text === undefined)
18
+ return undefined;
19
+ if (!/^\d+$/.test(text)) {
20
+ throw new Error(`limit swap queue: ${field} is not an integer amount: ${JSON.stringify(text)}`);
21
+ }
22
+ return BigInt(text);
23
+ };
24
+ const parseOptionalBlocks = (value, field) => {
25
+ const amount = parseOptionalAmount(value, field);
26
+ if (amount === undefined)
27
+ return undefined;
28
+ const blocks = Number(amount);
29
+ if (!Number.isSafeInteger(blocks)) {
30
+ throw new Error(`limit swap queue: ${field} exceeds a safe block count`);
31
+ }
32
+ return blocks;
33
+ };
34
+ /**
35
+ * A `common.Asset` off the wire, reduced to the string a memo spells it with.
36
+ *
37
+ * Decodes BOTH shapes deliberately. THORNode's queriers render assets through
38
+ * `Asset.MarshalJSON` — the flat string `ETH.USDC-0XA0B8…` — but the same
39
+ * message marshalled by protobuf-JSON comes out as an object of chain/symbol/
40
+ * flag fields. Which one a route uses is a property of that route's marshaller,
41
+ * not of the type. Guessing wrong would strand any consumer that needs the
42
+ * exact spelling (a cancel memo keys on it), so both are accepted and anything
43
+ * else throws.
44
+ */
45
+ const parseWireAsset = (value, field) => {
46
+ if (value === undefined || value === null)
47
+ return undefined;
48
+ if (typeof value === 'string')
49
+ return value;
50
+ if (isRecord(value) && typeof value.chain === 'string' && typeof value.symbol === 'string') {
51
+ // Mirrors `common.Asset.String()`: one separator per flavour, the L1 `.`
52
+ // when no flag is set.
53
+ const separator = value.synth === true ? '/' : value.trade === true ? '~' : value.secured === true ? '-' : '.';
54
+ return `${value.chain}${separator}${value.symbol}`;
55
+ }
56
+ throw new Error(`limit swap queue: ${field} is neither an asset string nor an asset object`);
57
+ };
58
+ const parseEntry = (value) => {
59
+ if (!isRecord(value)) {
60
+ throw new Error('limit swap queue: entry is not an object');
61
+ }
62
+ const swap = value.swap;
63
+ if (!isRecord(swap)) {
64
+ throw new Error('limit swap queue: entry has no swap');
65
+ }
66
+ const tx = swap.tx;
67
+ if (!isRecord(tx) || typeof tx.id !== 'string' || !tx.id) {
68
+ throw new Error('limit swap queue: entry has no inbound tx id');
69
+ }
70
+ const state = isRecord(swap.state) ? swap.state : undefined;
71
+ const coins = Array.isArray(tx.coins) ? tx.coins : [];
72
+ const sourceCoin = isRecord(coins[0]) ? coins[0] : undefined;
73
+ // Absent is an empty list; present-but-malformed throws like every other
74
+ // field. Silently dropping entries would report "no missed attempts" on the
75
+ // strength of data we didn't understand.
76
+ const rawReasons = state?.failed_swap_reasons ?? [];
77
+ if (!Array.isArray(rawReasons) || !rawReasons.every((reason) => typeof reason === 'string')) {
78
+ throw new Error('limit swap queue: state.failed_swap_reasons is not a string array');
79
+ }
80
+ const failedSwapReasons = rawReasons;
81
+ return {
82
+ txId: tx.id,
83
+ fromAddress: parseOptionalString(tx.from_address, 'from_address'),
84
+ memo: parseOptionalString(tx.memo, 'memo'),
85
+ sourceAsset: parseWireAsset(sourceCoin?.asset, 'coins[0].asset'),
86
+ targetAsset: parseWireAsset(swap.target_asset, 'target_asset'),
87
+ tradeTarget: parseOptionalAmount(swap.trade_target, 'trade_target'),
88
+ deposit: parseOptionalAmount(state?.deposit, 'state.deposit'),
89
+ amountIn: parseOptionalAmount(state?.in, 'state.in'),
90
+ amountOut: parseOptionalAmount(state?.out, 'state.out'),
91
+ failedSwapReasons,
92
+ timeToExpiryBlocks: parseOptionalBlocks(value.time_to_expiry_blocks, 'time_to_expiry_blocks'),
93
+ blocksSinceCreated: parseOptionalBlocks(value.blocks_since_created, 'blocks_since_created'),
94
+ };
95
+ };
96
+ /**
97
+ * Parse `/thorchain/queue/limit_swaps` into typed resting orders.
98
+ *
99
+ * Returns `null` when the `limit_swaps` key is ABSENT — which is not the same
100
+ * as an empty queue, and must never be flattened into one. An order's
101
+ * disappearance from this list is what marks it terminal, so "the queue is
102
+ * empty" is a load-bearing claim: if an unrecognised envelope silently decoded
103
+ * as "no resting orders", every tracked order would be closed at once on the
104
+ * strength of a response we didn't understand. Callers must treat `null` as
105
+ * "no information" and leave orders resting; only an explicit `[]` means the
106
+ * sender has none. Malformed entries throw for the same reason.
107
+ */
108
+ export const parseLimitSwapQueue = (body) => {
109
+ if (!isRecord(body)) {
110
+ throw new Error('limit swap queue: response is not an object');
111
+ }
112
+ const limitSwaps = body.limit_swaps;
113
+ if (limitSwaps === undefined || limitSwaps === null) {
114
+ return null;
115
+ }
116
+ if (!Array.isArray(limitSwaps)) {
117
+ throw new Error('limit swap queue: limit_swaps is not an array');
118
+ }
119
+ return limitSwaps.map(parseEntry);
120
+ };
121
+ const PAGE_LIMIT = 100;
122
+ // Safety valve against a queue that never reports `has_next: false` — mirrors
123
+ // getAllCosmosBalances's pattern. 100 orders/page * 50 pages = 5k orders, far
124
+ // past any real sender's resting-order count.
125
+ const MAX_PAGES = 50;
126
+ /** Whether the envelope says there is a further page beyond the one just read. */
127
+ const hasNextPage = (body) => isRecord(body) && isRecord(body.pagination) && body.pagination.has_next === true;
128
+ /**
129
+ * Fetch the advanced-swap-queue's resting limit orders for a sender.
130
+ *
131
+ * Always scope to a sender: unfiltered, the endpoint returns every resting
132
+ * order on the network.
133
+ *
134
+ * The endpoint is paginated (`pagination: { limit, has_next }`) and a sender
135
+ * with more than one page of resting orders would otherwise only ever see
136
+ * page 1 — an order resting on page 2 would read as "absent from the queue",
137
+ * which callers treat as the order having left and closed. This walks pages
138
+ * while `has_next` is true, deduped by `txId` (the identity orders are
139
+ * matched on) as a defensive no-op if a retried page repeats entries.
140
+ *
141
+ * Failures propagate — a fetch or parse error is "no information", and the
142
+ * caller keeps its orders resting rather than concluding anything from it. An
143
+ * unrecognised envelope on the FIRST page is the same "no information" `null`
144
+ * as a single-page fetch; on a later page it only means we can't confirm
145
+ * anything past what we already collected, so those entries are kept rather
146
+ * than discarded.
147
+ */
148
+ export const getLimitSwapQueue = async (sender) => {
149
+ const entries = [];
150
+ const seenTxIds = new Set();
151
+ for (let page = 0; page < MAX_PAGES; page++) {
152
+ const params = new URLSearchParams({
153
+ sender,
154
+ 'pagination.limit': String(PAGE_LIMIT),
155
+ 'pagination.offset': String(page * PAGE_LIMIT),
156
+ });
157
+ const body = await queryUrl(`${limitSwapQueueApi}?${params.toString()}`);
158
+ const parsed = parseLimitSwapQueue(body);
159
+ if (parsed === null) {
160
+ if (page === 0)
161
+ return null;
162
+ break;
163
+ }
164
+ for (const entry of parsed) {
165
+ if (seenTxIds.has(entry.txId))
166
+ continue;
167
+ seenTxIds.add(entry.txId);
168
+ entries.push(entry);
169
+ }
170
+ if (!hasNextPage(body))
171
+ break;
172
+ }
173
+ return entries;
174
+ };
175
+ //# sourceMappingURL=limitSwapQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limitSwapQueue.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/swap/native/limitSwapQueue.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vultisig/core-chain",
3
- "version": "2.29.2",
3
+ "version": "2.30.0",
4
4
  "description": "Blockchain chain logic shared across Vultisig clients",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -410,6 +410,11 @@
410
410
  "import": "./dist/chains/cosmos/thor/getThorchainInboundAddress.js",
411
411
  "default": "./dist/chains/cosmos/thor/getThorchainInboundAddress.js"
412
412
  },
413
+ "./chains/cosmos/thor/getThorchainTxResult": {
414
+ "types": "./dist/chains/cosmos/thor/getThorchainTxResult.d.ts",
415
+ "import": "./dist/chains/cosmos/thor/getThorchainTxResult.js",
416
+ "default": "./dist/chains/cosmos/thor/getThorchainTxResult.js"
417
+ },
413
418
  "./chains/cosmos/thor/getThorNetworkInfo": {
414
419
  "types": "./dist/chains/cosmos/thor/getThorNetworkInfo.d.ts",
415
420
  "import": "./dist/chains/cosmos/thor/getThorNetworkInfo.js",
@@ -1778,6 +1783,21 @@
1778
1783
  "import": "./dist/swap/native/limitSwapMemo.js",
1779
1784
  "default": "./dist/swap/native/limitSwapMemo.js"
1780
1785
  },
1786
+ "./swap/native/limitSwapOrderStatus": {
1787
+ "types": "./dist/swap/native/limitSwapOrderStatus.d.ts",
1788
+ "import": "./dist/swap/native/limitSwapOrderStatus.js",
1789
+ "default": "./dist/swap/native/limitSwapOrderStatus.js"
1790
+ },
1791
+ "./swap/native/limitSwapOutcome": {
1792
+ "types": "./dist/swap/native/limitSwapOutcome.d.ts",
1793
+ "import": "./dist/swap/native/limitSwapOutcome.js",
1794
+ "default": "./dist/swap/native/limitSwapOutcome.js"
1795
+ },
1796
+ "./swap/native/limitSwapQueue": {
1797
+ "types": "./dist/swap/native/limitSwapQueue.d.ts",
1798
+ "import": "./dist/swap/native/limitSwapQueue.js",
1799
+ "default": "./dist/swap/native/limitSwapQueue.js"
1800
+ },
1781
1801
  "./swap/native/minimum/getNativeSwapMinAmountIn": {
1782
1802
  "types": "./dist/swap/native/minimum/getNativeSwapMinAmountIn.d.ts",
1783
1803
  "import": "./dist/swap/native/minimum/getNativeSwapMinAmountIn.js",