@vultisig/core-chain 2.25.1 → 2.27.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 (173) hide show
  1. package/CHANGELOG.md +111 -0
  2. package/dist/chains/cosmos/account/getCosmosAccountInfo.d.ts +1 -0
  3. package/dist/chains/cosmos/account/getCosmosAccountInfo.d.ts.map +1 -1
  4. package/dist/chains/cosmos/account/getCosmosAccountInfo.js +112 -30
  5. package/dist/chains/cosmos/account/getCosmosAccountInfo.js.map +1 -1
  6. package/dist/chains/cosmos/parseUint64.d.ts +6 -0
  7. package/dist/chains/cosmos/parseUint64.d.ts.map +1 -0
  8. package/dist/chains/cosmos/parseUint64.js +12 -0
  9. package/dist/chains/cosmos/parseUint64.js.map +1 -0
  10. package/dist/chains/cosmos/qbtc/claim/broadcastClaimTx.d.ts.map +1 -1
  11. package/dist/chains/cosmos/qbtc/claim/broadcastClaimTx.js +3 -28
  12. package/dist/chains/cosmos/qbtc/claim/broadcastClaimTx.js.map +1 -1
  13. package/dist/chains/cosmos/qbtc/getQbtcAccountInfo.d.ts +2 -0
  14. package/dist/chains/cosmos/qbtc/getQbtcAccountInfo.d.ts.map +1 -1
  15. package/dist/chains/cosmos/qbtc/getQbtcAccountInfo.js +15 -4
  16. package/dist/chains/cosmos/qbtc/getQbtcAccountInfo.js.map +1 -1
  17. package/dist/chains/cosmos/qbtc/waitForQbtcTxInclusion.d.ts +32 -0
  18. package/dist/chains/cosmos/qbtc/waitForQbtcTxInclusion.d.ts.map +1 -0
  19. package/dist/chains/cosmos/qbtc/waitForQbtcTxInclusion.js +33 -0
  20. package/dist/chains/cosmos/qbtc/waitForQbtcTxInclusion.js.map +1 -0
  21. package/dist/chains/cosmos/thor/brune-bond/config.d.ts +9 -0
  22. package/dist/chains/cosmos/thor/brune-bond/config.d.ts.map +1 -0
  23. package/dist/chains/cosmos/thor/brune-bond/config.js +9 -0
  24. package/dist/chains/cosmos/thor/brune-bond/config.js.map +1 -0
  25. package/dist/chains/evm/chainInfo.d.ts +2 -2
  26. package/dist/chains/evm/chainInfo.d.ts.map +1 -1
  27. package/dist/chains/evm/chainInfo.js +3 -1
  28. package/dist/chains/evm/chainInfo.js.map +1 -1
  29. package/dist/chains/ripple/address.d.ts +12 -0
  30. package/dist/chains/ripple/address.d.ts.map +1 -0
  31. package/dist/chains/ripple/address.js +44 -0
  32. package/dist/chains/ripple/address.js.map +1 -0
  33. package/dist/coin/balance/getEvmChainBalances.d.ts +6 -0
  34. package/dist/coin/balance/getEvmChainBalances.d.ts.map +1 -1
  35. package/dist/coin/balance/getEvmChainBalances.js +11 -5
  36. package/dist/coin/balance/getEvmChainBalances.js.map +1 -1
  37. package/dist/coin/find/resolvers/cosmos.d.ts.map +1 -1
  38. package/dist/coin/find/resolvers/cosmos.js +2 -1
  39. package/dist/coin/find/resolvers/cosmos.js.map +1 -1
  40. package/dist/coin/knownTokens/cosmos.d.ts.map +1 -1
  41. package/dist/coin/knownTokens/cosmos.js +6 -0
  42. package/dist/coin/knownTokens/cosmos.js.map +1 -1
  43. package/dist/coin/knownTokens/thorchain.d.ts.map +1 -1
  44. package/dist/coin/knownTokens/thorchain.js +5 -0
  45. package/dist/coin/knownTokens/thorchain.js.map +1 -1
  46. package/dist/coin/price/resolveTokenPriceId.d.ts +8 -10
  47. package/dist/coin/price/resolveTokenPriceId.d.ts.map +1 -1
  48. package/dist/coin/price/resolveTokenPriceId.js +21 -14
  49. package/dist/coin/price/resolveTokenPriceId.js.map +1 -1
  50. package/dist/swap/general/GeneralSwapQuote.d.ts +19 -3
  51. package/dist/swap/general/GeneralSwapQuote.d.ts.map +1 -1
  52. package/dist/swap/general/cowswap/sign/buildCowSwapOrderTypedData.d.ts +0 -9
  53. package/dist/swap/general/cowswap/sign/buildCowSwapOrderTypedData.d.ts.map +1 -1
  54. package/dist/swap/general/cowswap/sign/buildCowSwapOrderTypedData.js +52 -22
  55. package/dist/swap/general/cowswap/sign/buildCowSwapOrderTypedData.js.map +1 -1
  56. package/dist/swap/general/knownAggregatorRouters.d.ts +59 -2
  57. package/dist/swap/general/knownAggregatorRouters.d.ts.map +1 -1
  58. package/dist/swap/general/knownAggregatorRouters.js +118 -12
  59. package/dist/swap/general/knownAggregatorRouters.js.map +1 -1
  60. package/dist/swap/general/kyber/chains.d.ts +1 -1
  61. package/dist/swap/general/kyber/chains.d.ts.map +1 -1
  62. package/dist/swap/general/kyber/chains.js +5 -2
  63. package/dist/swap/general/kyber/chains.js.map +1 -1
  64. package/dist/swap/general/lifi/api/getLifiSwapQuote.d.ts +2 -9
  65. package/dist/swap/general/lifi/api/getLifiSwapQuote.d.ts.map +1 -1
  66. package/dist/swap/general/lifi/api/getLifiSwapQuote.js +29 -81
  67. package/dist/swap/general/lifi/api/getLifiSwapQuote.js.map +1 -1
  68. package/dist/swap/general/lifi/api/lifiSlippage.d.ts +25 -0
  69. package/dist/swap/general/lifi/api/lifiSlippage.d.ts.map +1 -0
  70. package/dist/swap/general/lifi/api/lifiSlippage.js +51 -0
  71. package/dist/swap/general/lifi/api/lifiSlippage.js.map +1 -0
  72. package/dist/swap/general/oneInch/api/getOneInchSwapQuote.d.ts.map +1 -1
  73. package/dist/swap/general/oneInch/api/getOneInchSwapQuote.js +8 -0
  74. package/dist/swap/general/oneInch/api/getOneInchSwapQuote.js.map +1 -1
  75. package/dist/swap/general/swapkit/api/getSwapKitQuote.d.ts.map +1 -1
  76. package/dist/swap/general/swapkit/api/getSwapKitQuote.js +23 -2
  77. package/dist/swap/general/swapkit/api/getSwapKitQuote.js.map +1 -1
  78. package/dist/swap/general/swapkit/getSwapKitTrackerUrl.d.ts +43 -0
  79. package/dist/swap/general/swapkit/getSwapKitTrackerUrl.d.ts.map +1 -0
  80. package/dist/swap/general/swapkit/getSwapKitTrackerUrl.js +47 -0
  81. package/dist/swap/general/swapkit/getSwapKitTrackerUrl.js.map +1 -0
  82. package/dist/swap/native/NativeSwapChain.d.ts +2 -0
  83. package/dist/swap/native/NativeSwapChain.d.ts.map +1 -1
  84. package/dist/swap/native/NativeSwapChain.js +1 -0
  85. package/dist/swap/native/NativeSwapChain.js.map +1 -1
  86. package/dist/swap/native/asset/toNativeSwapAsset.d.ts.map +1 -1
  87. package/dist/swap/native/asset/toNativeSwapAsset.js +9 -1
  88. package/dist/swap/native/asset/toNativeSwapAsset.js.map +1 -1
  89. package/dist/swap/native/halts/getNativeSwapTradingHalt.d.ts.map +1 -1
  90. package/dist/swap/native/halts/getNativeSwapTradingHalt.js +2 -2
  91. package/dist/swap/native/halts/getNativeSwapTradingHalt.js.map +1 -1
  92. package/dist/swap/native/limitSwapMemo.d.ts.map +1 -1
  93. package/dist/swap/native/limitSwapMemo.js +1 -24
  94. package/dist/swap/native/limitSwapMemo.js.map +1 -1
  95. package/dist/swap/native/minimum/getNativeSwapMinAmountIn.d.ts.map +1 -1
  96. package/dist/swap/native/minimum/getNativeSwapMinAmountIn.js +9 -3
  97. package/dist/swap/native/minimum/getNativeSwapMinAmountIn.js.map +1 -1
  98. package/dist/swap/native/thorchainMemoAsset.d.ts +76 -0
  99. package/dist/swap/native/thorchainMemoAsset.d.ts.map +1 -0
  100. package/dist/swap/native/thorchainMemoAsset.js +126 -0
  101. package/dist/swap/native/thorchainMemoAsset.js.map +1 -0
  102. package/dist/swap/quote/findSwapQuote.d.ts.map +1 -1
  103. package/dist/swap/quote/findSwapQuote.js +6 -1
  104. package/dist/swap/quote/findSwapQuote.js.map +1 -1
  105. package/dist/swap/swapEnabledChains.d.ts.map +1 -1
  106. package/dist/swap/swapEnabledChains.js +12 -0
  107. package/dist/swap/swapEnabledChains.js.map +1 -1
  108. package/dist/swap/utils/getSwapExplorerUrl/index.d.ts +10 -7
  109. package/dist/swap/utils/getSwapExplorerUrl/index.d.ts.map +1 -1
  110. package/dist/swap/utils/getSwapExplorerUrl/index.js +13 -12
  111. package/dist/swap/utils/getSwapExplorerUrl/index.js.map +1 -1
  112. package/dist/tx/broadcast/index.d.ts.map +1 -1
  113. package/dist/tx/broadcast/index.js +10 -1
  114. package/dist/tx/broadcast/index.js.map +1 -1
  115. package/dist/tx/broadcast/resolvers/bittensor.d.ts.map +1 -1
  116. package/dist/tx/broadcast/resolvers/bittensor.js +21 -15
  117. package/dist/tx/broadcast/resolvers/bittensor.js.map +1 -1
  118. package/dist/tx/broadcast/resolvers/cardano.d.ts +5 -0
  119. package/dist/tx/broadcast/resolvers/cardano.d.ts.map +1 -1
  120. package/dist/tx/broadcast/resolvers/cardano.js +24 -4
  121. package/dist/tx/broadcast/resolvers/cardano.js.map +1 -1
  122. package/dist/tx/broadcast/resolvers/cosmos.d.ts +1 -0
  123. package/dist/tx/broadcast/resolvers/cosmos.d.ts.map +1 -1
  124. package/dist/tx/broadcast/resolvers/cosmos.js +30 -2
  125. package/dist/tx/broadcast/resolvers/cosmos.js.map +1 -1
  126. package/dist/tx/broadcast/resolvers/polkadot.d.ts.map +1 -1
  127. package/dist/tx/broadcast/resolvers/polkadot.js +3 -36
  128. package/dist/tx/broadcast/resolvers/polkadot.js.map +1 -1
  129. package/dist/tx/broadcast/resolvers/qbtc.d.ts.map +1 -1
  130. package/dist/tx/broadcast/resolvers/qbtc.js +37 -7
  131. package/dist/tx/broadcast/resolvers/qbtc.js.map +1 -1
  132. package/dist/tx/broadcast/resolvers/ripple.d.ts +1 -0
  133. package/dist/tx/broadcast/resolvers/ripple.d.ts.map +1 -1
  134. package/dist/tx/broadcast/resolvers/ripple.js +12 -4
  135. package/dist/tx/broadcast/resolvers/ripple.js.map +1 -1
  136. package/dist/tx/broadcast/resolvers/substrate.d.ts +8 -0
  137. package/dist/tx/broadcast/resolvers/substrate.d.ts.map +1 -0
  138. package/dist/tx/broadcast/resolvers/substrate.js +15 -0
  139. package/dist/tx/broadcast/resolvers/substrate.js.map +1 -0
  140. package/dist/tx/broadcast/resolvers/sui.d.ts +8 -0
  141. package/dist/tx/broadcast/resolvers/sui.d.ts.map +1 -1
  142. package/dist/tx/broadcast/resolvers/sui.js +33 -7
  143. package/dist/tx/broadcast/resolvers/sui.js.map +1 -1
  144. package/dist/tx/broadcast/transientRetry.d.ts +21 -0
  145. package/dist/tx/broadcast/transientRetry.d.ts.map +1 -0
  146. package/dist/tx/broadcast/transientRetry.js +105 -0
  147. package/dist/tx/broadcast/transientRetry.js.map +1 -0
  148. package/dist/tx/status/index.d.ts +3 -8
  149. package/dist/tx/status/index.d.ts.map +1 -1
  150. package/dist/tx/status/index.js.map +1 -1
  151. package/dist/tx/status/resolver.d.ts +4 -2
  152. package/dist/tx/status/resolver.d.ts.map +1 -1
  153. package/dist/tx/status/resolvers/bittensor.js +1 -1
  154. package/dist/tx/status/resolvers/bittensor.js.map +1 -1
  155. package/dist/tx/status/resolvers/cardano.d.ts.map +1 -1
  156. package/dist/tx/status/resolvers/cardano.js +19 -3
  157. package/dist/tx/status/resolvers/cardano.js.map +1 -1
  158. package/dist/tx/status/resolvers/qbtc.js +1 -1
  159. package/dist/tx/status/resolvers/qbtc.js.map +1 -1
  160. package/dist/tx/status/resolvers/solana.d.ts.map +1 -1
  161. package/dist/tx/status/resolvers/solana.js +16 -2
  162. package/dist/tx/status/resolvers/solana.js.map +1 -1
  163. package/dist/tx/status/resolvers/sui.js +2 -2
  164. package/dist/tx/status/resolvers/sui.js.map +1 -1
  165. package/dist/tx/status/resolvers/ton.js +1 -1
  166. package/dist/tx/status/resolvers/ton.js.map +1 -1
  167. package/dist/tx/status/resolvers/tron.d.ts.map +1 -1
  168. package/dist/tx/status/resolvers/tron.js +9 -3
  169. package/dist/tx/status/resolvers/tron.js.map +1 -1
  170. package/dist/utils/isValidAddress.d.ts.map +1 -1
  171. package/dist/utils/isValidAddress.js +4 -0
  172. package/dist/utils/isValidAddress.js.map +1 -1
  173. package/package.json +48 -2
@@ -1,14 +1,40 @@
1
1
  import { getSuiClient } from '@vultisig/core-chain/chains/sui/client';
2
+ import { attempt } from '@vultisig/lib-utils/attempt';
3
+ import { DeliverTxFailedError } from '../transientRetry.js';
2
4
  import { verifyBroadcastByHash } from '../verifyBroadcastByHash.js';
5
+ export const assertSuiTxSucceeded = (effects) => {
6
+ const executionStatus = effects?.status?.status;
7
+ if (executionStatus === 'success')
8
+ return;
9
+ throw new DeliverTxFailedError(`Sui transaction failed on-chain: ${effects?.status?.error ?? executionStatus ?? 'no effects status returned'}`);
10
+ };
3
11
  export const broadcastSuiTx = async ({ chain, tx }) => {
4
- try {
5
- return await getSuiClient().executeTransactionBlock({
6
- transactionBlock: tx.unsignedTx,
7
- signature: [tx.signature],
8
- });
9
- }
10
- catch (error) {
12
+ const { data: response, error } = await attempt(getSuiClient().executeTransactionBlock({
13
+ transactionBlock: tx.unsignedTx,
14
+ signature: [tx.signature],
15
+ // sdk#1398: without requesting effects, executeTransactionBlock resolves with a digest even
16
+ // when the tx executed but ABORTED (MoveAbort / InsufficientGas) — an RPC-level success that
17
+ // is NOT execution success. Ask for effects so we can tell the two apart.
18
+ options: { showEffects: true },
19
+ }));
20
+ if (error) {
11
21
  await verifyBroadcastByHash({ chain, tx, error });
22
+ return;
23
+ }
24
+ if (!response) {
25
+ return;
12
26
  }
27
+ // Mirror the status resolver (status/resolvers/sui.ts): ONLY an explicit 'success' effects status
28
+ // is execution success. A 'failure' (MoveAbort / InsufficientGas) — or a missing/unknown status —
29
+ // must NOT be returned as a digest-carrying successful broadcast (that's the sdk#1398 bug). Thrown
30
+ // outside the RPC-error path above so it isn't fed back into verifyBroadcastByHash — the tx is
31
+ // on-chain and failed, not un-broadcast.
32
+ //
33
+ // Throw DeliverTxFailedError (not a bare Error) so isTransientBroadcastError short-circuits on the
34
+ // `instanceof` BEFORE its message-regex runs: a Sui abort error string routinely contains
35
+ // "aborted"/"timed out", which the transient patterns match — a bare Error would be misclassified
36
+ // as transient and the aborted tx re-sent by withTransientBroadcastRetry.
37
+ assertSuiTxSucceeded(response.effects);
38
+ return response;
13
39
  };
14
40
  //# sourceMappingURL=sui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/sui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AAGrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,CAAC,MAAM,cAAc,GAAwC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IACzF,IAAI,CAAC;QACH,OAAO,MAAM,YAAY,EAAE,CAAC,uBAAuB,CAAC;YAClD,gBAAgB,EAAE,EAAE,CAAC,UAAU;YAC/B,SAAS,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACnD,CAAC;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/broadcast/resolvers/sui.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAGrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAShE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAA+C,EAAQ,EAAE;IAC5F,MAAM,eAAe,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,CAAA;IAE/C,IAAI,eAAe,KAAK,SAAS;QAAE,OAAM;IAEzC,MAAM,IAAI,oBAAoB,CAC5B,oCAAoC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,eAAe,IAAI,4BAA4B,EAAE,CAChH,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAwC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE;IACzF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAC7C,YAAY,EAAE,CAAC,uBAAuB,CAAC;QACrC,gBAAgB,EAAE,EAAE,CAAC,UAAU;QAC/B,SAAS,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACzB,4FAA4F;QAC5F,6FAA6F;QAC7F,0EAA0E;QAC1E,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;KAC/B,CAAC,CACH,CAAA;IAED,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QACjD,OAAM;IACR,CAAC;IAED,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAM;IACR,CAAC;IAED,kGAAkG;IAClG,kGAAkG;IAClG,mGAAmG;IACnG,+FAA+F;IAC/F,yCAAyC;IACzC,EAAE;IACF,mGAAmG;IACnG,0FAA0F;IAC1F,kGAAkG;IAClG,0EAA0E;IAC1E,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAEtC,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * A transaction was included on-chain but its execution genuinely failed
3
+ * (e.g. Cosmos DeliverTx code !== 0 — a wasm revert, out-of-gas, a
4
+ * THORChain/Maya deposit-handler rejection). This is a terminal, non-transient
5
+ * outcome even though the chain-controlled error text can read exactly like
6
+ * a transient one (a cosmwasm revert's rawLog routinely says "aborted"; a
7
+ * contract can literally say "timed out" or "connection reset" as text).
8
+ * Retrying would just re-send the same bytes, get "tx already exists in
9
+ * cache" back, and have that swallowed as success — reopening the false-
10
+ * success bug the throw exists to close. Resolvers that assert on-chain
11
+ * execution success throw this instead of a bare Error so
12
+ * `isTransientBroadcastError` can short-circuit before the message-regex
13
+ * test ever runs.
14
+ */
15
+ export declare class DeliverTxFailedError extends Error {
16
+ constructor(message: string, options?: ErrorOptions);
17
+ }
18
+ export declare const broadcastRetryMaxAttempts = 3;
19
+ export declare const isTransientBroadcastError: (error: unknown) => boolean;
20
+ export declare const withTransientBroadcastRetry: <T>(operation: () => Promise<T>) => Promise<T>;
21
+ //# sourceMappingURL=transientRetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transientRetry.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/transientRetry.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED,eAAO,MAAM,yBAAyB,IAAI,CAAA;AA4C1C,eAAO,MAAM,yBAAyB,GAAI,OAAO,OAAO,KAAG,OAoC1D,CAAA;AAED,eAAO,MAAM,2BAA2B,GAAU,CAAC,EAAE,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAkB3F,CAAA"}
@@ -0,0 +1,105 @@
1
+ import { HttpResponseError } from '@vultisig/lib-utils/fetch/HttpResponseError';
2
+ /**
3
+ * A transaction was included on-chain but its execution genuinely failed
4
+ * (e.g. Cosmos DeliverTx code !== 0 — a wasm revert, out-of-gas, a
5
+ * THORChain/Maya deposit-handler rejection). This is a terminal, non-transient
6
+ * outcome even though the chain-controlled error text can read exactly like
7
+ * a transient one (a cosmwasm revert's rawLog routinely says "aborted"; a
8
+ * contract can literally say "timed out" or "connection reset" as text).
9
+ * Retrying would just re-send the same bytes, get "tx already exists in
10
+ * cache" back, and have that swallowed as success — reopening the false-
11
+ * success bug the throw exists to close. Resolvers that assert on-chain
12
+ * execution success throw this instead of a bare Error so
13
+ * `isTransientBroadcastError` can short-circuit before the message-regex
14
+ * test ever runs.
15
+ */
16
+ export class DeliverTxFailedError extends Error {
17
+ constructor(message, options) {
18
+ super(message, options);
19
+ this.name = 'DeliverTxFailedError';
20
+ }
21
+ }
22
+ export const broadcastRetryMaxAttempts = 3;
23
+ const broadcastRetryBaseDelayMs = 250;
24
+ const transientErrorCodes = new Set([
25
+ 'ABORT_ERR',
26
+ 'ECONNABORTED',
27
+ 'ECONNRESET',
28
+ 'ECONNREFUSED',
29
+ 'EHOSTUNREACH',
30
+ 'ENETDOWN',
31
+ 'ENETRESET',
32
+ 'ENETUNREACH',
33
+ 'ENOTFOUND',
34
+ 'ETIMEDOUT',
35
+ 'EAI_AGAIN',
36
+ ]);
37
+ const transientMessagePatterns = [
38
+ /\bfetch failed\b/i,
39
+ /\bfailed to fetch\b/i,
40
+ /\bnetwork error\b/i,
41
+ /\bnetwork request failed\b/i,
42
+ /\brequest timed out\b/i,
43
+ /\btimed out\b/i,
44
+ /\babort(?:ed)?\b/i,
45
+ /\bsocket hang up\b/i,
46
+ /\bconnection (?:reset|refused|closed)\b/i,
47
+ /\bHTTP (?:429|5\d\d)\b/i,
48
+ /\btoo many requests\b/i,
49
+ /\bbad gateway\b/i,
50
+ /\bservice unavailable\b/i,
51
+ /\bgateway timeout\b/i,
52
+ ];
53
+ const wait = (durationMs) => new Promise(resolve => setTimeout(resolve, durationMs));
54
+ const getCause = (error) => {
55
+ if (error && typeof error === 'object' && 'cause' in error) {
56
+ return error.cause;
57
+ }
58
+ return undefined;
59
+ };
60
+ export const isTransientBroadcastError = (error) => {
61
+ let current = error;
62
+ const seen = new Set();
63
+ while (current != null && !seen.has(current)) {
64
+ seen.add(current);
65
+ if (current instanceof DeliverTxFailedError) {
66
+ return false;
67
+ }
68
+ if (current instanceof HttpResponseError) {
69
+ return current.status === 429 || (current.status >= 500 && current.status <= 599);
70
+ }
71
+ if (typeof current === 'object') {
72
+ const code = current.code;
73
+ if (typeof code === 'string' && transientErrorCodes.has(code)) {
74
+ return true;
75
+ }
76
+ const status = current.status;
77
+ if (typeof status === 'number' && (status === 429 || (status >= 500 && status <= 599))) {
78
+ return true;
79
+ }
80
+ }
81
+ const message = current instanceof Error ? current.message : typeof current === 'string' ? current : undefined;
82
+ if (message && transientMessagePatterns.some(pattern => pattern.test(message))) {
83
+ return true;
84
+ }
85
+ current = getCause(current);
86
+ }
87
+ return false;
88
+ };
89
+ export const withTransientBroadcastRetry = async (operation) => {
90
+ let lastError;
91
+ for (let attempt = 1; attempt <= broadcastRetryMaxAttempts; attempt++) {
92
+ try {
93
+ return await operation();
94
+ }
95
+ catch (error) {
96
+ lastError = error;
97
+ if (attempt === broadcastRetryMaxAttempts || !isTransientBroadcastError(error)) {
98
+ throw error;
99
+ }
100
+ await wait(broadcastRetryBaseDelayMs * attempt);
101
+ }
102
+ }
103
+ throw lastError;
104
+ };
105
+ //# sourceMappingURL=transientRetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transientRetry.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/broadcast/transientRetry.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,4 @@
1
- import { Chain } from '@vultisig/core-chain/Chain';
2
- import { TxReceiptInfo } from './resolver.js';
3
- type GetTxStatusInput = {
4
- chain: Chain;
5
- hash: string;
6
- };
7
- export declare const getTxStatus: (input: GetTxStatusInput) => Promise<import("./resolver.js").TxStatusResult>;
8
- export type { TxReceiptInfo };
1
+ import { TxReceiptInfo, TxStatusInput } from './resolver.js';
2
+ export declare const getTxStatus: (input: TxStatusInput) => Promise<import("./resolver.js").TxStatusResult>;
3
+ export type { TxReceiptInfo, TxStatusInput };
9
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/status/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,OAAO,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAA;AA6B5D,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,iDAOlD,CAAA;AAED,YAAY,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/status/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAA;AA6B3E,eAAO,MAAM,WAAW,GAAI,OAAO,aAAa,iDAO/C,CAAA;AAED,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/status/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAGxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,cAAc,GAA6C;IAC/D,SAAS,EAAE,oBAAoB;IAC/B,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,iBAAiB;IACzB,GAAG,EAAE,cAAc;IACnB,QAAQ,EAAE,mBAAmB;IAC7B,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,iBAAiB;IACzB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,eAAe;CACtB,CAAA;AAOD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAuB,EAAE,EAAE;IACrD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAErC,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IAEzC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/status/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAGxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,MAAM,cAAc,GAA6C;IAC/D,SAAS,EAAE,oBAAoB;IAC/B,OAAO,EAAE,kBAAkB;IAC3B,MAAM,EAAE,iBAAiB;IACzB,GAAG,EAAE,cAAc;IACnB,QAAQ,EAAE,mBAAmB;IAC7B,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,iBAAiB;IACzB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,eAAe;CACtB,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAoB,EAAE,EAAE;IAClD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAErC,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IAEzC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA;AACvB,CAAC,CAAA"}
@@ -11,9 +11,11 @@ export type TxStatusResult = {
11
11
  isKnown?: boolean;
12
12
  receipt?: TxReceiptInfo;
13
13
  };
14
- export type TxStatusResolver<T extends Chain = Chain> = Resolver<{
14
+ export type TxStatusInput<T extends Chain = Chain> = {
15
15
  chain: T;
16
16
  hash: string;
17
- }, Promise<TxStatusResult>>;
17
+ lastValidBlockHeight?: number;
18
+ };
19
+ export type TxStatusResolver<T extends Chain = Chain> = Resolver<TxStatusInput<T>, Promise<TxStatusResult>>;
18
20
  export {};
19
21
  //# sourceMappingURL=resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/status/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAOnC,KAAK,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAA;AAE7D,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,QAAQ,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,CAC9D;IACE,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,MAAM,CAAA;CACb,EACD,OAAO,CAAC,cAAc,CAAC,CACxB,CAAA"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/chain/tx/status/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAOnC,KAAK,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAA;AAE7D,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,QAAQ,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI;IACnD,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,MAAM,CAAA;IACZ,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAA"}
@@ -9,7 +9,7 @@ export const getBittensorTxStatus = async ({ hash }) => {
9
9
  const txHash = ensureHexPrefix(hash);
10
10
  const { data: response, error } = await attempt(queryUrl(`${taostatsExtrinsicUrl}?${new URLSearchParams({ hash: txHash })}`));
11
11
  if (error || !response?.data?.length) {
12
- return { status: 'pending' };
12
+ return { status: 'pending', isKnown: false };
13
13
  }
14
14
  const extrinsic = response.data[0];
15
15
  const feeCoin = chainFeeCoin[Chain.Bittensor];
@@ -1 +1 @@
1
- {"version":3,"file":"bittensor.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/bittensor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAI7D,MAAM,oBAAoB,GAAG,GAAG,UAAU,YAAY,CAAA;AAatD,MAAM,CAAC,MAAM,oBAAoB,GAA2C,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IAC7F,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IAEpC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAC7C,QAAQ,CAA4B,GAAG,oBAAoB,IAAI,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CACxG,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACrC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC9B,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,IAAI,OAAkF,CAAA;IACtF,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,OAAO,GAAG;gBACR,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;gBAChC,WAAW,EAAE,OAAO,CAAC,QAAQ;gBAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;aAC1B,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,OAAO,GAAG,SAAS,CAAA;QACrB,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QAC/C,OAAO;KACR,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"bittensor.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/bittensor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAI7D,MAAM,oBAAoB,GAAG,GAAG,UAAU,YAAY,CAAA;AAatD,MAAM,CAAC,MAAM,oBAAoB,GAA2C,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IAC7F,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IAEpC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAC7C,QAAQ,CAA4B,GAAG,oBAAoB,IAAI,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CACxG,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACrC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,IAAI,OAAkF,CAAA;IACtF,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,OAAO,GAAG;gBACR,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;gBAChC,WAAW,EAAE,OAAO,CAAC,QAAQ;gBAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;aAC1B,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,OAAO,GAAG,SAAS,CAAA;QACrB,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QAC/C,OAAO;KACR,CAAA;AACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cardano.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/cardano.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,4BAA4B,CAAA;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9C,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAEnE,CAAA"}
1
+ {"version":3,"file":"cardano.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/cardano.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAKvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAO9C,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAwBnE,CAAA"}
@@ -1,5 +1,21 @@
1
- import { getUtxoTxStatus } from './utxo.js';
2
- export const getCardanoTxStatus = async (input) => {
3
- return getUtxoTxStatus(input);
1
+ import { cardanoApiUrl } from '@vultisig/core-chain/chains/cardano/client/config';
2
+ import { attempt } from '@vultisig/lib-utils/attempt';
3
+ import { queryUrl } from '@vultisig/lib-utils/query/queryUrl';
4
+ export const getCardanoTxStatus = async ({ hash }) => {
5
+ const { data: response, error } = await attempt(queryUrl(`${cardanoApiUrl}/tx_status`, {
6
+ body: { _tx_hashes: [hash] },
7
+ }));
8
+ if (error || !Array.isArray(response)) {
9
+ return { status: 'pending', isKnown: false };
10
+ }
11
+ const transaction = response.find(item => item?.tx_hash === hash);
12
+ const confirmations = transaction?.num_confirmations;
13
+ if (typeof confirmations !== 'number' || !Number.isInteger(confirmations) || confirmations < 0) {
14
+ return { status: 'pending', isKnown: false };
15
+ }
16
+ if (confirmations === 0) {
17
+ return { status: 'pending', isKnown: true };
18
+ }
19
+ return { status: 'success' };
4
20
  };
5
21
  //# sourceMappingURL=cardano.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cardano.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/cardano.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAExC,MAAM,CAAC,MAAM,kBAAkB,GAAyC,KAAK,EAAC,KAAK,EAAC,EAAE;IACpF,OAAO,eAAe,CAAC,KAAgD,CAAC,CAAA;AAC1E,CAAC,CAAA"}
1
+ {"version":3,"file":"cardano.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/cardano.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAA;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAS7D,MAAM,CAAC,MAAM,kBAAkB,GAAyC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACzF,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAC7C,QAAQ,CAA0B,GAAG,aAAa,YAAY,EAAE;QAC9D,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE;KAC7B,CAAC,CACH,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,CAAA;IAEjE,MAAM,aAAa,GAAG,WAAW,EAAE,iBAAiB,CAAA;IAEpD,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QAC/F,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7C,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAC9B,CAAC,CAAA"}
@@ -11,7 +11,7 @@ export const getQbtcTxStatus = async ({ hash }) => {
11
11
  return resp.json();
12
12
  });
13
13
  if (error || !data?.tx_response) {
14
- return { status: 'pending' };
14
+ return { status: 'pending', isKnown: false };
15
15
  }
16
16
  const txResp = data.tx_response;
17
17
  const status = txResp.code === 0 ? 'success' : 'error';
@@ -1 +1 @@
1
- {"version":3,"file":"qbtc.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/qbtc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAoBrD,MAAM,CAAC,MAAM,eAAe,GAAwC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACrF,MAAM,GAAG,GAAG,GAAG,WAAW,0BAA0B,IAAI,EAAE,CAAA;IAC1D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,IAAI,EAAyB,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;IACtD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAExC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAA;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,CAAA;QAClD,IAAI,OAAO,KAAK,EAAE,IAAI,SAAS,KAAK,EAAE;YAAE,OAAO,SAAS,CAAA;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;QACjE,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAA;QACnC,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,GAAG,SAAS,CAAA;QAC9D,IAAI,SAAS,KAAK,EAAE;YAAE,OAAO,SAAS,CAAA;QACtC,OAAO;YACL,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,OAAO,CAAC,QAAQ;YAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;SAC1B,CAAA;IACH,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC,CAAA"}
1
+ {"version":3,"file":"qbtc.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/qbtc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0DAA0D,CAAA;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAoBrD,MAAM,CAAC,MAAM,eAAe,GAAwC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACrF,MAAM,GAAG,GAAG,GAAG,WAAW,0BAA0B,IAAI,EAAE,CAAA;IAC1D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,IAAI,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,IAAI,EAAyB,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAA;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;IACtD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAExC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAA;QAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,CAAA;QAClD,IAAI,OAAO,KAAK,EAAE,IAAI,SAAS,KAAK,EAAE;YAAE,OAAO,SAAS,CAAA;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;QACjE,IAAI,CAAC,YAAY;YAAE,OAAO,SAAS,CAAA;QACnC,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,GAAG,SAAS,CAAA;QAC9D,IAAI,SAAS,KAAK,EAAE;YAAE,OAAO,SAAS,CAAA;QACtC,OAAO;YACL,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,OAAO,CAAC,QAAQ;YAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;SAC1B,CAAA;IACH,CAAC,CAAC,EAAE,CAAA;IAEJ,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAK9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAE9C,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,UAAU,CAAC,MAAM,CA6CjE,CAAA"}
1
+ {"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAK9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAiB9C,eAAO,MAAM,iBAAiB,EAAE,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAqDjE,CAAA"}
@@ -2,13 +2,27 @@ import { Chain } from '@vultisig/core-chain/Chain';
2
2
  import { getSolanaClient } from '@vultisig/core-chain/chains/solana/client';
3
3
  import { chainFeeCoin } from '@vultisig/core-chain/coin/chainFeeCoin';
4
4
  import { attempt } from '@vultisig/lib-utils/attempt';
5
- export const getSolanaTxStatus = async ({ hash }) => {
5
+ const isExpiredLastValidBlockHeight = async (client, lastValidBlockHeight) => {
6
+ const height = lastValidBlockHeight;
7
+ if (height == null || !Number.isSafeInteger(height) || height < 0) {
8
+ return false;
9
+ }
10
+ const { data: currentBlockHeight, error } = await attempt(client.getBlockHeight());
11
+ return !error && typeof currentBlockHeight === 'number' && currentBlockHeight > height;
12
+ };
13
+ export const getSolanaTxStatus = async ({ hash, lastValidBlockHeight }) => {
6
14
  const client = getSolanaClient();
7
15
  const { data: signatureStatuses, error: signatureStatusError } = await attempt(client.getSignatureStatuses([hash], {
8
16
  searchTransactionHistory: true,
9
17
  }));
10
18
  const signatureStatus = signatureStatuses?.value[0];
11
- if (signatureStatusError || !signatureStatus) {
19
+ if (signatureStatusError) {
20
+ return { status: 'pending', isKnown: false };
21
+ }
22
+ if (!signatureStatus) {
23
+ if (await isExpiredLastValidBlockHeight(client, lastValidBlockHeight)) {
24
+ return { status: 'not_found', isKnown: false };
25
+ }
12
26
  return { status: 'pending', isKnown: false };
13
27
  }
14
28
  if (signatureStatus.err) {
@@ -1 +1 @@
1
- {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/solana.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAIrD,MAAM,CAAC,MAAM,iBAAiB,GAAwC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;IAEhC,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,MAAM,OAAO,CAC5E,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE;QAClC,wBAAwB,EAAE,IAAI;KAC/B,CAAC,CACH,CAAA;IACD,MAAM,eAAe,GAAG,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAEnD,IAAI,oBAAoB,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC3C,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CACvC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAC1B,8BAA8B,EAAE,CAAC;KAClC,CAAC,CACH,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7C,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAA;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7C,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC3C,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC,QAAQ;QAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;KAC1B,CAAA;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AACvC,CAAC,CAAA"}
1
+ {"version":3,"file":"solana.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/solana.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export const getSuiTxStatus = async ({ hash }) => {
9
9
  options: { showEffects: true },
10
10
  }));
11
11
  if (error || !data) {
12
- return { status: 'pending' };
12
+ return { status: 'pending', isKnown: false };
13
13
  }
14
14
  const effectsStatus = data.effects?.status?.status;
15
15
  if (effectsStatus === 'success') {
@@ -33,6 +33,6 @@ export const getSuiTxStatus = async ({ hash }) => {
33
33
  if (effectsStatus === 'failure') {
34
34
  return { status: 'error' };
35
35
  }
36
- return { status: 'pending' };
36
+ return { status: 'pending', isKnown: true };
37
37
  };
38
38
  //# sourceMappingURL=sui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAIrD,MAAM,CAAC,MAAM,cAAc,GAAqC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAE7B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CACnC,MAAM,CAAC,mBAAmB,CAAC;QACzB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;KAC/B,CAAC,CACH,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC9B,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAA;IAElD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAA;QACrC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvC,MAAM,OAAO,GACX,OAAO,IAAI,IAAI;YACf,OAAO,OAAO,KAAK,QAAQ;YAC3B,iBAAiB,IAAI,OAAO;YAC5B,aAAa,IAAI,OAAO;YACxB,eAAe,IAAI,OAAO;YACxB,CAAC,CAAC;gBACE,SAAS,EACP,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;oBACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACvC,WAAW,EAAE,OAAO,CAAC,QAAQ;gBAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;aAC1B;YACH,CAAC,CAAC,SAAS,CAAA;QAEf,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;IACvC,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAC9B,CAAC,CAAA"}
1
+ {"version":3,"file":"sui.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/sui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAIrD,MAAM,CAAC,MAAM,cAAc,GAAqC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAE7B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CACnC,MAAM,CAAC,mBAAmB,CAAC;QACzB,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;KAC/B,CAAC,CACH,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAA;IAElD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAA;QACrC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvC,MAAM,OAAO,GACX,OAAO,IAAI,IAAI;YACf,OAAO,OAAO,KAAK,QAAQ;YAC3B,iBAAiB,IAAI,OAAO;YAC5B,aAAa,IAAI,OAAO;YACxB,eAAe,IAAI,OAAO;YACxB,CAAC,CAAC;gBACE,SAAS,EACP,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;oBACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACvC,WAAW,EAAE,OAAO,CAAC,QAAQ;gBAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;aAC1B;YACH,CAAC,CAAC,SAAS,CAAA;QAEf,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;IACvC,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC7C,CAAC,CAAA"}
@@ -7,7 +7,7 @@ export const getTonTxStatus = async ({ hash }) => {
7
7
  const url = `${rootApiUrl}/ton/v3/transactionsByMessage?msg_hash=${hash}&direction=in&limit=1`;
8
8
  const { data: response, error } = await attempt(queryUrl(url));
9
9
  if (error || !response || response.transactions.length === 0) {
10
- return { status: 'pending' };
10
+ return { status: 'pending', isKnown: false };
11
11
  }
12
12
  const tx = response.transactions[0];
13
13
  // Check if transaction was aborted
@@ -1 +1 @@
1
- {"version":3,"file":"ton.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/ton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAmB7D,MAAM,CAAC,MAAM,cAAc,GAAqC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACjF,MAAM,GAAG,GAAG,GAAG,UAAU,0CAA0C,IAAI,uBAAuB,CAAA;IAE9F,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,QAAQ,CAA0B,GAAG,CAAC,CAAC,CAAA;IAEvF,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC9B,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAEnC,mCAAmC;IACnC,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,gCAAgC;IAChC,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAA;IAEtD,qCAAqC;IACrC,gEAAgE;IAChE,MAAM,OAAO,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;IAE5C,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAA;IAC5B,MAAM,OAAO,GACX,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,EAAE;QAC7B,CAAC,CAAC;YACE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,OAAO,CAAC,QAAQ;YAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;SAC1B;QACH,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC,CAAA"}
1
+ {"version":3,"file":"ton.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/ton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAmB7D,MAAM,CAAC,MAAM,cAAc,GAAqC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACjF,MAAM,GAAG,GAAG,GAAG,UAAU,0CAA0C,IAAI,uBAAuB,CAAA;IAE9F,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,QAAQ,CAA0B,GAAG,CAAC,CAAC,CAAA;IAEvF,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAEnC,mCAAmC;IACnC,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,gCAAgC;IAChC,MAAM,QAAQ,GAAG,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAA;IAEtD,qCAAqC;IACrC,gEAAgE;IAChE,MAAM,OAAO,GAAG,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;IAE5C,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAA;IAC5B,MAAM,OAAO,GACX,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,EAAE;QAC7B,CAAC,CAAC;YACE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,OAAO,CAAC,QAAQ;YAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;SAC1B;QACH,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAM9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAgC9C,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CA0C7D,CAAA"}
1
+ {"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAM9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAgC9C,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAkD7D,CAAA"}
@@ -20,8 +20,14 @@ export const getTronTxStatus = async ({ hash }) => {
20
20
  const { data: tx, error } = await attempt(queryUrl(url, {
21
21
  body: { value: hash },
22
22
  }));
23
- if (error || !tx || tx.blockNumber === undefined || tx.blockNumber === 0) {
24
- return { status: 'pending' };
23
+ if (error || !tx) {
24
+ return { status: 'pending', isKnown: false };
25
+ }
26
+ if (!tx.id) {
27
+ return { status: 'not_found', isKnown: false };
28
+ }
29
+ if (tx.blockNumber === undefined || tx.blockNumber === 0) {
30
+ return { status: 'pending', isKnown: true };
25
31
  }
26
32
  // 1. top-level result === "FAILED" → error
27
33
  // Tron RPC only emits "FAILED" here — no "SUCCESS" counterpart exists at the top level.
@@ -32,7 +38,7 @@ export const getTronTxStatus = async ({ hash }) => {
32
38
  }
33
39
  // 2. receipt absent → pending (native TRX transfers or tx still processing)
34
40
  if (!tx.receipt) {
35
- return { status: 'pending' };
41
+ return { status: 'pending', isKnown: true };
36
42
  }
37
43
  // 3. receipt.result in terminal failure set → error
38
44
  // receipt.result == null → success (native TRX send, no contract result)
@@ -1 +1 @@
1
- {"version":3,"file":"tron.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAGxD,oGAAoG;AACpG,yFAAyF;AACzF,gGAAgG;AAChG,iFAAiF;AACjF,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,QAAQ;IACR,eAAe;IACf,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,iBAAiB;CAClB,CAAC,CAAA;AAmBF,MAAM,CAAC,MAAM,eAAe,GAAsC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACnF,MAAM,GAAG,GAAG,GAAG,UAAU,gCAAgC,CAAA;IAEzD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CACvC,QAAQ,CAAqB,GAAG,EAAE;QAChC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;KACtB,CAAC,CACH,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC9B,CAAC;IAED,2CAA2C;IAC3C,2FAA2F;IAC3F,yFAAyF;IACzF,wFAAwF;IACxF,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,4EAA4E;IAC5E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC9B,CAAC;IAED,oDAAoD;IACpD,4EAA4E;IAC5E,sGAAsG;IACtG,mFAAmF;IACnF,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,4BAA4B,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IACrH,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,OAAO,GACX,EAAE,CAAC,GAAG,IAAI,IAAI;QACZ,CAAC,CAAC;YACE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;YACzB,WAAW,EAAE,OAAO,CAAC,QAAQ;YAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;SAC1B;QACH,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC,CAAA"}
1
+ {"version":3,"file":"tron.js","sourceRoot":"","sources":["../../../../../../../packages/core/chain/tx/status/resolvers/tron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAA;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAGxD,oGAAoG;AACpG,yFAAyF;AACzF,gGAAgG;AAChG,iFAAiF;AACjF,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,QAAQ;IACR,eAAe;IACf,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,iBAAiB;CAClB,CAAC,CAAA;AAmBF,MAAM,CAAC,MAAM,eAAe,GAAsC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;IACnF,MAAM,GAAG,GAAG,GAAG,UAAU,gCAAgC,CAAA;IAEzD,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CACvC,QAAQ,CAAqB,GAAG,EAAE;QAChC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;KACtB,CAAC,CACH,CAAA;IAED,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC9C,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAChD,CAAC;IAED,IAAI,EAAE,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7C,CAAC;IAED,2CAA2C;IAC3C,2FAA2F;IAC3F,yFAAyF;IACzF,wFAAwF;IACxF,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAC5B,CAAC;IAED,4EAA4E;IAC5E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC7C,CAAC;IAED,oDAAoD;IACpD,4EAA4E;IAC5E,sGAAsG;IACtG,mFAAmF;IACnF,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,4BAA4B,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IACrH,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,OAAO,GACX,EAAE,CAAC,GAAG,IAAI,IAAI;QACZ,CAAC,CAAC;YACE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;YACzB,WAAW,EAAE,OAAO,CAAC,QAAQ;YAC7B,SAAS,EAAE,OAAO,CAAC,MAAM;SAC1B;QACH,CAAC,CAAC,SAAS,CAAA;IAEf,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"isValidAddress.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/utils/isValidAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAGlD,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,KAAK,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,gCAAgC,KAAK,YA6BnE,CAAA"}
1
+ {"version":3,"file":"isValidAddress.d.ts","sourceRoot":"","sources":["../../../../../packages/core/chain/utils/isValidAddress.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAKlD,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,KAAK,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,gCAAgC,KAAK,YAiCnE,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { fromBech32 } from '@cosmjs/encoding';
2
2
  import { Chain } from '@vultisig/core-chain/Chain';
3
3
  import { getCoinType } from '@vultisig/core-chain/coin/coinType';
4
+ import { isValidRippleXAddress } from '../chains/ripple/address.js';
4
5
  export const isValidAddress = ({ chain, address, walletCore }) => {
5
6
  const coinType = getCoinType({
6
7
  walletCore,
@@ -18,6 +19,9 @@ export const isValidAddress = ({ chain, address, walletCore }) => {
18
19
  return false;
19
20
  }
20
21
  }
22
+ if (chain === Chain.Ripple && /^[XT]/u.test(address.trim())) {
23
+ return isValidRippleXAddress(address);
24
+ }
21
25
  if (chain === Chain.MayaChain) {
22
26
  // MayaChain is Cosmos-style Bech32. Accept common account + validator address forms.
23
27
  const mayaHrps = ['maya', 'mayavaloper', 'mayavalcons', 'mayavaloperpub', 'mayavalconspub'];
@@ -1 +1 @@
1
- {"version":3,"file":"isValidAddress.js","sourceRoot":"","sources":["../../../../../packages/core/chain/utils/isValidAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAQhE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAS,EAAE,EAAE;IACtE,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,UAAU;QACV,KAAK;KACN,CAAC,CAAA;IAEF,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YAC7C,OAAO,MAAM,KAAK,MAAM,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,qFAAqF;QACrF,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CAAU,CAAA;QAEpG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;QAExB,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;IACpF,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACzD,CAAC,CAAA"}
1
+ {"version":3,"file":"isValidAddress.js","sourceRoot":"","sources":["../../../../../packages/core/chain/utils/isValidAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAQhE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAS,EAAE,EAAE;IACtE,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,UAAU;QACV,KAAK;KACN,CAAC,CAAA;IAEF,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YAC7C,OAAO,MAAM,KAAK,MAAM,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC5D,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,qFAAqF;QACrF,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,CAAU,CAAA;QAEpG,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;QAExB,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;IACpF,CAAC;IAED,OAAO,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACzD,CAAC,CAAA"}