@arkade-os/boltz-swap 0.3.35 → 0.3.36

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.
@@ -1438,6 +1438,13 @@ var SwapManager = class _SwapManager {
1438
1438
  swapsInProgress = /* @__PURE__ */ new Set();
1439
1439
  // Per-swap subscriptions for UI hooks
1440
1440
  swapSubscriptions = /* @__PURE__ */ new Map();
1441
+ // In-flight (or settled) chain-swap claim promises, keyed by swap id. The
1442
+ // manager performs chain claims itself, so the claim tx it broadcasts is
1443
+ // the swap's on-chain completion; getSwapStatus does not surface that txid
1444
+ // at transaction.claimed. resolveClaimedTxid awaits the stored promise so a
1445
+ // transaction.claimed update that races an in-flight claim still resolves
1446
+ // the real txid instead of falling back to the provider and failing.
1447
+ chainClaimPromises = /* @__PURE__ */ new Map();
1441
1448
  // Action callbacks (injected via setCallbacks)
1442
1449
  claimCallback = null;
1443
1450
  refundCallback = null;
@@ -1579,6 +1586,7 @@ var SwapManager = class _SwapManager {
1579
1586
  }
1580
1587
  this.isRunning = true;
1581
1588
  this.initialSwaps.clear();
1589
+ this.chainClaimPromises.clear();
1582
1590
  for (const swap of pendingSwaps) {
1583
1591
  this.initialSwaps.set(swap.id, swap);
1584
1592
  }
@@ -1672,6 +1680,7 @@ var SwapManager = class _SwapManager {
1672
1680
  async removeSwap(swapId) {
1673
1681
  this.monitoredSwaps.delete(swapId);
1674
1682
  this.swapSubscriptions.delete(swapId);
1683
+ this.chainClaimPromises.delete(swapId);
1675
1684
  const retryTimer = this.pollRetryTimers.get(swapId);
1676
1685
  if (retryTimer) {
1677
1686
  clearTimeout(retryTimer);
@@ -1714,9 +1723,14 @@ var SwapManager = class _SwapManager {
1714
1723
  * Blocks until the swap reaches a final status or fails.
1715
1724
  * Useful when you want blocking behavior even with SwapManager enabled.
1716
1725
  *
1717
- * @throws If the swap is already in a final status (submarine/chain swaps throw immediately;
1718
- * reverse swaps return the existing txid).
1726
+ * If the swap is already in a final status, resolves immediately with the
1727
+ * on-chain txid of the successfully claimed swap (reverse: from
1728
+ * getReverseSwapTxId; submarine/chain: from getSwapStatus) and throws for a
1729
+ * failed final status.
1730
+ *
1731
+ * @throws If the swap is already in a failed final status.
1719
1732
  * @throws If the swap is not found in the manager.
1733
+ * @throws If a completed swap has no transaction id available yet.
1720
1734
  */
1721
1735
  async waitForSwapCompletion(swapId) {
1722
1736
  let swap = this.monitoredSwaps.get(swapId);
@@ -1731,10 +1745,12 @@ var SwapManager = class _SwapManager {
1731
1745
  const response = await this.swapProvider.getReverseSwapTxId(swap.id);
1732
1746
  return { txid: response.id };
1733
1747
  }
1734
- if (isPendingSubmarineSwap(swap)) {
1735
- throw new Error("Submarine swap already completed");
1748
+ if (isPendingSubmarineSwap(swap) || isPendingChainSwap(swap)) {
1749
+ if (swap.status === "transaction.claimed") {
1750
+ return this.resolveClaimedTxid(swap.id);
1751
+ }
1752
+ throw new Error(`Swap ${swap.id} already in final status: ${swap.status}`);
1736
1753
  }
1737
- throw new Error("Chain swap already completed");
1738
1754
  }
1739
1755
  return new Promise((resolve, reject) => {
1740
1756
  let unsubscribe = null;
@@ -1749,13 +1765,13 @@ var SwapManager = class _SwapManager {
1749
1765
  }
1750
1766
  } else if (isPendingSubmarineSwap(updatedSwap)) {
1751
1767
  if (updatedSwap.status === "transaction.claimed") {
1752
- resolve({ txid: updatedSwap.id });
1768
+ this.resolveClaimedTxid(updatedSwap.id).then(resolve).catch(reject);
1753
1769
  } else {
1754
1770
  reject(new Error(`Swap failed with status: ${updatedSwap.status}`));
1755
1771
  }
1756
1772
  } else if (isPendingChainSwap(updatedSwap)) {
1757
1773
  if (updatedSwap.status === "transaction.claimed") {
1758
- resolve({ txid: updatedSwap.id });
1774
+ this.resolveClaimedTxid(updatedSwap.id).then(resolve).catch(reject);
1759
1775
  } else {
1760
1776
  reject(new Error(`Swap failed with status: ${updatedSwap.status}`));
1761
1777
  }
@@ -1766,6 +1782,37 @@ var SwapManager = class _SwapManager {
1766
1782
  }).catch(reject);
1767
1783
  });
1768
1784
  }
1785
+ /**
1786
+ * Resolve the on-chain txid for a claimed submarine/chain swap.
1787
+ *
1788
+ * Chain swaps are claimed by the manager itself, so the claim txid captured
1789
+ * from the claimArk/claimBtc callback is the swap's on-chain completion and
1790
+ * is preferred — Boltz does not surface it via getSwapStatus at
1791
+ * transaction.claimed. Submarine swaps (claimed by Boltz) and chain swaps
1792
+ * we never claimed in this session (e.g. restored already-claimed) fall
1793
+ * back to the provider status. Rejects when no transaction id is available,
1794
+ * so callers never receive the Boltz swap id in place of a real txid.
1795
+ */
1796
+ async resolveClaimedTxid(swapId) {
1797
+ const claimPromise = this.chainClaimPromises.get(swapId);
1798
+ if (claimPromise) {
1799
+ const claimTxid = await claimPromise.then(
1800
+ (result) => result?.txid,
1801
+ () => void 0
1802
+ );
1803
+ if (claimTxid && claimTxid.trim() !== "") {
1804
+ return { txid: claimTxid };
1805
+ }
1806
+ }
1807
+ const status = await this.swapProvider.getSwapStatus(swapId);
1808
+ const txid = status.transaction?.id;
1809
+ if (!txid || txid.trim() === "") {
1810
+ throw new SwapError({
1811
+ message: `Transaction ID not available for completed swap ${swapId}`
1812
+ });
1813
+ }
1814
+ return { txid };
1815
+ }
1769
1816
  /**
1770
1817
  * Check if a swap is currently being processed
1771
1818
  * Useful for preventing race conditions
@@ -1969,6 +2016,7 @@ var SwapManager = class _SwapManager {
1969
2016
  if (!this.monitoredSwaps.has(swap.id)) return;
1970
2017
  this.monitoredSwaps.delete(swap.id);
1971
2018
  this.swapSubscriptions.delete(swap.id);
2019
+ this.chainClaimPromises.delete(swap.id);
1972
2020
  const retryTimer = this.pollRetryTimers.get(swap.id);
1973
2021
  if (retryTimer) {
1974
2022
  clearTimeout(retryTimer);
@@ -2139,7 +2187,9 @@ var SwapManager = class _SwapManager {
2139
2187
  logger.error("claimArk callback not set");
2140
2188
  return;
2141
2189
  }
2142
- await this.claimArkCallback(swap);
2190
+ const claimPromise = this.claimArkCallback(swap);
2191
+ this.rememberChainClaim(swap.id, claimPromise);
2192
+ await claimPromise;
2143
2193
  }
2144
2194
  /**
2145
2195
  * Execute claim action for chain swap Ark to Btc
@@ -2149,7 +2199,23 @@ var SwapManager = class _SwapManager {
2149
2199
  logger.error("claimBtc callback not set");
2150
2200
  return;
2151
2201
  }
2152
- await this.claimBtcCallback(swap);
2202
+ const claimPromise = this.claimBtcCallback(swap);
2203
+ this.rememberChainClaim(swap.id, claimPromise);
2204
+ await claimPromise;
2205
+ }
2206
+ /**
2207
+ * Store the in-flight claim promise returned by a claim callback so
2208
+ * {@link resolveClaimedTxid} can await it and surface the real on-chain
2209
+ * txid at transaction.claimed — even when that update races the still
2210
+ * in-flight claim. Storing the promise (not the resolved txid) closes the
2211
+ * window where the txid is not yet captured when transaction.claimed
2212
+ * arrives. Defensive against callbacks that don't return a promise (older
2213
+ * integrations, test doubles): those simply fall back to getSwapStatus.
2214
+ */
2215
+ rememberChainClaim(swapId, claimPromise) {
2216
+ if (claimPromise) {
2217
+ this.chainClaimPromises.set(swapId, claimPromise);
2218
+ }
2153
2219
  }
2154
2220
  /**
2155
2221
  * Execute refund action for chain swap Ark to Btc
@@ -2936,6 +3002,7 @@ var claimVHTLCwithOffchainTx = async (identity, vhtlcScript, serverXOnlyPublicKe
2936
3002
  })
2937
3003
  );
2938
3004
  await arkProvider.finalizeTx(arkTxid, finalCheckpoints);
3005
+ return arkTxid;
2939
3006
  };
2940
3007
  var refundVHTLCwithOffchainTx = async (swapId, identity, arkProvider, boltzXOnlyPublicKey, ourXOnlyPublicKey, serverXOnlyPublicKey, input, output, arkInfo, refundFunc) => {
2941
3008
  const rawCheckpointTapscript = import_base8.hex.decode(arkInfo.checkpointTapscript);
@@ -3094,12 +3161,8 @@ var ArkadeSwaps = class _ArkadeSwaps {
3094
3161
  refund: async (swap) => {
3095
3162
  await this.refundVHTLC(swap);
3096
3163
  },
3097
- claimArk: async (swap) => {
3098
- await this.claimArk(swap);
3099
- },
3100
- claimBtc: async (swap) => {
3101
- await this.claimBtc(swap);
3102
- },
3164
+ claimArk: (swap) => this.claimArk(swap),
3165
+ claimBtc: (swap) => this.claimBtc(swap),
3103
3166
  refundArk: async (swap) => {
3104
3167
  return this.refundArk(swap);
3105
3168
  },
@@ -4110,6 +4173,7 @@ var ArkadeSwaps = class _ArkadeSwaps {
4110
4173
  }
4111
4174
  return new Promise((resolve, reject) => {
4112
4175
  let claimStarted = false;
4176
+ let claimPromise;
4113
4177
  const swap = { ...pendingSwap };
4114
4178
  const onStatusUpdate = async (status, data) => {
4115
4179
  const updateSwapStatus = async () => {
@@ -4127,16 +4191,24 @@ var ArkadeSwaps = class _ArkadeSwaps {
4127
4191
  const updatedSwap = await updateSwapStatus();
4128
4192
  if (claimStarted) return;
4129
4193
  claimStarted = true;
4130
- this.claimBtc(updatedSwap).catch(reject);
4194
+ claimPromise = this.claimBtc(updatedSwap);
4195
+ claimPromise.catch(reject);
4131
4196
  break;
4132
4197
  }
4133
- case "transaction.claimed":
4198
+ case "transaction.claimed": {
4134
4199
  await updateSwapStatus();
4135
- const claimedStatus = await this.getSwapStatus(pendingSwap.id);
4136
- resolve({
4137
- txid: claimedStatus.transaction?.id ?? ""
4138
- });
4200
+ const txid = await this.resolveChainClaimTxid(pendingSwap.id, claimPromise);
4201
+ if (!txid) {
4202
+ reject(
4203
+ new SwapError({
4204
+ message: `Transaction ID not available for claimed swap ${pendingSwap.id}.`
4205
+ })
4206
+ );
4207
+ break;
4208
+ }
4209
+ resolve({ txid });
4139
4210
  break;
4211
+ }
4140
4212
  case "transaction.lockupFailed":
4141
4213
  await updateSwapStatus();
4142
4214
  await this.quoteSwap(swap.response.id, quoteOptionsForSwap(swap)).catch(
@@ -4185,6 +4257,7 @@ var ArkadeSwaps = class _ArkadeSwaps {
4185
4257
  /**
4186
4258
  * Claim sats on BTC chain by claiming the HTLC.
4187
4259
  * @param pendingSwap - The pending chain swap with BTC transaction hex.
4260
+ * @returns The BTC transaction ID of the claim.
4188
4261
  */
4189
4262
  async claimBtc(pendingSwap) {
4190
4263
  if (!pendingSwap.toAddress)
@@ -4257,6 +4330,7 @@ var ArkadeSwaps = class _ArkadeSwaps {
4257
4330
  finalScriptWitness: [musigSigned.aggregatePartials()]
4258
4331
  });
4259
4332
  await this.swapProvider.postBtcTransaction(claimTx.hex);
4333
+ return { txid: claimTx.id };
4260
4334
  }
4261
4335
  /**
4262
4336
  * When an ARK to BTC swap fails, refund every unspent VTXO at the chain
@@ -4456,6 +4530,7 @@ var ArkadeSwaps = class _ArkadeSwaps {
4456
4530
  }
4457
4531
  return new Promise((resolve, reject) => {
4458
4532
  let claimStarted = false;
4533
+ let claimPromise;
4459
4534
  const swap = { ...pendingSwap };
4460
4535
  const onStatusUpdate = async (status, data) => {
4461
4536
  const updateSwapStatus = () => {
@@ -4468,15 +4543,23 @@ var ArkadeSwaps = class _ArkadeSwaps {
4468
4543
  await updateSwapStatus();
4469
4544
  if (claimStarted) return;
4470
4545
  claimStarted = true;
4471
- this.claimArk(swap).catch(reject);
4546
+ claimPromise = this.claimArk(swap);
4547
+ claimPromise.catch(reject);
4472
4548
  break;
4473
- case "transaction.claimed":
4549
+ case "transaction.claimed": {
4474
4550
  await updateSwapStatus();
4475
- const claimedStatus = await this.getSwapStatus(pendingSwap.id);
4476
- resolve({
4477
- txid: claimedStatus.transaction?.id ?? ""
4478
- });
4551
+ const txid = await this.resolveChainClaimTxid(pendingSwap.id, claimPromise);
4552
+ if (!txid) {
4553
+ reject(
4554
+ new SwapError({
4555
+ message: `Transaction ID not available for claimed swap ${pendingSwap.id}.`
4556
+ })
4557
+ );
4558
+ break;
4559
+ }
4560
+ resolve({ txid });
4479
4561
  break;
4562
+ }
4480
4563
  case "transaction.claim.pending":
4481
4564
  await updateSwapStatus();
4482
4565
  await this.signCooperativeClaimForServer(swap).catch((err) => {
@@ -4535,6 +4618,7 @@ var ArkadeSwaps = class _ArkadeSwaps {
4535
4618
  * Claim sats on ARK chain by claiming the VHTLC.
4536
4619
  * Refactored to use claimVHTLCIdentity + claimVHTLCwithOffchainTx utilities.
4537
4620
  * @param pendingSwap - The pending chain swap.
4621
+ * @returns The Ark transaction ID of the claim.
4538
4622
  */
4539
4623
  async claimArk(pendingSwap) {
4540
4624
  if (!pendingSwap.toAddress)
@@ -4597,24 +4681,42 @@ var ArkadeSwaps = class _ArkadeSwaps {
4597
4681
  script: import_sdk8.ArkAddress.decode(address).pkScript
4598
4682
  };
4599
4683
  const vhtlcIdentity = claimVHTLCIdentity(this.wallet.identity, preimage);
4600
- if ((0, import_sdk8.isRecoverable)(vtxo)) {
4601
- await this.joinBatch(vhtlcIdentity, input, output, arkInfo);
4602
- } else {
4603
- await claimVHTLCwithOffchainTx(
4604
- vhtlcIdentity,
4605
- vhtlcScript,
4606
- serverXOnlyPublicKey,
4607
- input,
4608
- output,
4609
- arkInfo,
4610
- this.arkProvider
4611
- );
4612
- }
4684
+ const txid = (0, import_sdk8.isRecoverable)(vtxo) ? await this.joinBatch(vhtlcIdentity, input, output, arkInfo) : await claimVHTLCwithOffchainTx(
4685
+ vhtlcIdentity,
4686
+ vhtlcScript,
4687
+ serverXOnlyPublicKey,
4688
+ input,
4689
+ output,
4690
+ arkInfo,
4691
+ this.arkProvider
4692
+ );
4613
4693
  const finalStatus = await this.getSwapStatus(pendingSwap.id);
4614
4694
  await this.savePendingChainSwap({
4615
4695
  ...pendingSwap,
4616
4696
  status: finalStatus.status
4617
4697
  });
4698
+ return { txid };
4699
+ }
4700
+ /**
4701
+ * Resolve the on-chain txid for a chain swap at completion.
4702
+ *
4703
+ * The claim transaction we broadcast (claimBtc/claimArk) carries the real
4704
+ * on-chain txid; getSwapStatus does not surface it at transaction.claimed.
4705
+ * Prefer the claim's txid and fall back to the provider status only for
4706
+ * resumed swaps where we never ran the claim ourselves (claimPromise is
4707
+ * undefined). Returns undefined when no usable txid is available, so
4708
+ * callers never resolve with the Boltz swap id in place of a real txid.
4709
+ */
4710
+ async resolveChainClaimTxid(swapId, claimPromise) {
4711
+ if (claimPromise) {
4712
+ const claimTxid = await claimPromise.then(
4713
+ (res) => res.txid,
4714
+ () => void 0
4715
+ );
4716
+ if (claimTxid && claimTxid.trim() !== "") return claimTxid;
4717
+ }
4718
+ const txid = (await this.getSwapStatus(swapId)).transaction?.id;
4719
+ return txid && txid.trim() !== "" ? txid : void 0;
4618
4720
  }
4619
4721
  /**
4620
4722
  * Sign a cooperative claim for the server in BTC => ARK swaps.
@@ -1,7 +1,7 @@
1
- import { I as IArkadeSwaps, A as ArkadeSwaps, Q as QuoteSwapOptions, V as VhtlcTimeouts } from '../arkade-swaps-CfMets16.cjs';
2
- import { o as SwapManagerClient, C as CreateLightningInvoiceRequest, e as CreateLightningInvoiceResponse, S as SendLightningPaymentRequest, f as SendLightningPaymentResponse, c as BoltzSubmarineSwap, b as BoltzReverseSwap, g as SubmarineRefundOutcome, h as SubmarineRecoveryInfo, i as SubmarineRecoveryResult, F as FeesResponse, a as BoltzChainSwap, k as ArkToBtcResponse, m as ChainArkRefundOutcome, l as BtcToArkResponse, d as Chain, j as ChainFeesResponse, L as LimitsResponse, G as GetSwapStatusResponse, B as BoltzSwap } from '../types--axEWA8c.cjs';
3
- import { E as ExpoArkadeSwapsConfig } from '../swapsPollProcessor-BpAqG0V6.cjs';
4
- export { D as DefineSwapBackgroundTaskOptions, b as ExpoArkadeLightningConfig, c as ExpoSwapBackgroundConfig, P as PersistedSwapBackgroundConfig, S as SWAP_POLL_TASK_TYPE, a as SwapTaskDependencies } from '../swapsPollProcessor-BpAqG0V6.cjs';
1
+ import { I as IArkadeSwaps, A as ArkadeSwaps, Q as QuoteSwapOptions, V as VhtlcTimeouts } from '../arkade-swaps-DG9UepoS.cjs';
2
+ import { o as SwapManagerClient, C as CreateLightningInvoiceRequest, e as CreateLightningInvoiceResponse, S as SendLightningPaymentRequest, f as SendLightningPaymentResponse, c as BoltzSubmarineSwap, b as BoltzReverseSwap, g as SubmarineRefundOutcome, h as SubmarineRecoveryInfo, i as SubmarineRecoveryResult, F as FeesResponse, a as BoltzChainSwap, k as ArkToBtcResponse, m as ChainArkRefundOutcome, l as BtcToArkResponse, d as Chain, j as ChainFeesResponse, L as LimitsResponse, G as GetSwapStatusResponse, B as BoltzSwap } from '../types-D97i1LFu.cjs';
3
+ import { E as ExpoArkadeSwapsConfig } from '../swapsPollProcessor-BlyUrhtO.cjs';
4
+ export { D as DefineSwapBackgroundTaskOptions, b as ExpoArkadeLightningConfig, c as ExpoSwapBackgroundConfig, P as PersistedSwapBackgroundConfig, S as SWAP_POLL_TASK_TYPE, a as SwapTaskDependencies } from '../swapsPollProcessor-BlyUrhtO.cjs';
5
5
  import { ArkInfo, Identity, ArkTxInput, VHTLC } from '@arkade-os/sdk';
6
6
  import { TransactionOutput } from '@scure/btc-signer/psbt.js';
7
7
  import '@arkade-os/sdk/worker/expo';
@@ -115,7 +115,9 @@ declare class ExpoArkadeSwaps implements IArkadeSwaps {
115
115
  waitAndClaimBtc(pendingSwap: BoltzChainSwap): Promise<{
116
116
  txid: string;
117
117
  }>;
118
- claimBtc(pendingSwap: BoltzChainSwap): Promise<void>;
118
+ claimBtc(pendingSwap: BoltzChainSwap): Promise<{
119
+ txid: string;
120
+ }>;
119
121
  refundArk(pendingSwap: BoltzChainSwap): Promise<ChainArkRefundOutcome>;
120
122
  btcToArk(args: {
121
123
  feeSatsPerByte?: number;
@@ -125,7 +127,9 @@ declare class ExpoArkadeSwaps implements IArkadeSwaps {
125
127
  waitAndClaimArk(pendingSwap: BoltzChainSwap): Promise<{
126
128
  txid: string;
127
129
  }>;
128
- claimArk(pendingSwap: BoltzChainSwap): Promise<void>;
130
+ claimArk(pendingSwap: BoltzChainSwap): Promise<{
131
+ txid: string;
132
+ }>;
129
133
  signCooperativeClaimForServer(pendingSwap: BoltzChainSwap): Promise<void>;
130
134
  waitAndClaimChain(pendingSwap: BoltzChainSwap): Promise<{
131
135
  txid: string;
@@ -1,7 +1,7 @@
1
- import { I as IArkadeSwaps, A as ArkadeSwaps, Q as QuoteSwapOptions, V as VhtlcTimeouts } from '../arkade-swaps-BXAD1s8j.js';
2
- import { o as SwapManagerClient, C as CreateLightningInvoiceRequest, e as CreateLightningInvoiceResponse, S as SendLightningPaymentRequest, f as SendLightningPaymentResponse, c as BoltzSubmarineSwap, b as BoltzReverseSwap, g as SubmarineRefundOutcome, h as SubmarineRecoveryInfo, i as SubmarineRecoveryResult, F as FeesResponse, a as BoltzChainSwap, k as ArkToBtcResponse, m as ChainArkRefundOutcome, l as BtcToArkResponse, d as Chain, j as ChainFeesResponse, L as LimitsResponse, G as GetSwapStatusResponse, B as BoltzSwap } from '../types--axEWA8c.js';
3
- import { E as ExpoArkadeSwapsConfig } from '../swapsPollProcessor-DFVOAy_-.js';
4
- export { D as DefineSwapBackgroundTaskOptions, b as ExpoArkadeLightningConfig, c as ExpoSwapBackgroundConfig, P as PersistedSwapBackgroundConfig, S as SWAP_POLL_TASK_TYPE, a as SwapTaskDependencies } from '../swapsPollProcessor-DFVOAy_-.js';
1
+ import { I as IArkadeSwaps, A as ArkadeSwaps, Q as QuoteSwapOptions, V as VhtlcTimeouts } from '../arkade-swaps-Uet3tgN6.js';
2
+ import { o as SwapManagerClient, C as CreateLightningInvoiceRequest, e as CreateLightningInvoiceResponse, S as SendLightningPaymentRequest, f as SendLightningPaymentResponse, c as BoltzSubmarineSwap, b as BoltzReverseSwap, g as SubmarineRefundOutcome, h as SubmarineRecoveryInfo, i as SubmarineRecoveryResult, F as FeesResponse, a as BoltzChainSwap, k as ArkToBtcResponse, m as ChainArkRefundOutcome, l as BtcToArkResponse, d as Chain, j as ChainFeesResponse, L as LimitsResponse, G as GetSwapStatusResponse, B as BoltzSwap } from '../types-D97i1LFu.js';
3
+ import { E as ExpoArkadeSwapsConfig } from '../swapsPollProcessor-Bv4Z2R7g.js';
4
+ export { D as DefineSwapBackgroundTaskOptions, b as ExpoArkadeLightningConfig, c as ExpoSwapBackgroundConfig, P as PersistedSwapBackgroundConfig, S as SWAP_POLL_TASK_TYPE, a as SwapTaskDependencies } from '../swapsPollProcessor-Bv4Z2R7g.js';
5
5
  import { ArkInfo, Identity, ArkTxInput, VHTLC } from '@arkade-os/sdk';
6
6
  import { TransactionOutput } from '@scure/btc-signer/psbt.js';
7
7
  import '@arkade-os/sdk/worker/expo';
@@ -115,7 +115,9 @@ declare class ExpoArkadeSwaps implements IArkadeSwaps {
115
115
  waitAndClaimBtc(pendingSwap: BoltzChainSwap): Promise<{
116
116
  txid: string;
117
117
  }>;
118
- claimBtc(pendingSwap: BoltzChainSwap): Promise<void>;
118
+ claimBtc(pendingSwap: BoltzChainSwap): Promise<{
119
+ txid: string;
120
+ }>;
119
121
  refundArk(pendingSwap: BoltzChainSwap): Promise<ChainArkRefundOutcome>;
120
122
  btcToArk(args: {
121
123
  feeSatsPerByte?: number;
@@ -125,7 +127,9 @@ declare class ExpoArkadeSwaps implements IArkadeSwaps {
125
127
  waitAndClaimArk(pendingSwap: BoltzChainSwap): Promise<{
126
128
  txid: string;
127
129
  }>;
128
- claimArk(pendingSwap: BoltzChainSwap): Promise<void>;
130
+ claimArk(pendingSwap: BoltzChainSwap): Promise<{
131
+ txid: string;
132
+ }>;
129
133
  signCooperativeClaimForServer(pendingSwap: BoltzChainSwap): Promise<void>;
130
134
  waitAndClaimChain(pendingSwap: BoltzChainSwap): Promise<{
131
135
  txid: string;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  SWAP_POLL_TASK_TYPE
3
- } from "../chunk-H6F67K2A.js";
3
+ } from "../chunk-DNCIVDU5.js";
4
4
  import {
5
5
  ArkadeSwaps
6
- } from "../chunk-B4CYBKFJ.js";
6
+ } from "../chunk-CFB2NNGT.js";
7
7
  import "../chunk-SJQJQO7P.js";
8
8
 
9
9
  // src/expo/arkade-lightning.ts