@arkade-os/swap 0.0.11 → 0.0.12
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/dist/{chunk-RIC5ZTZK.js → chunk-XXWOODUE.js} +46 -1
- package/dist/index.cjs +391 -40
- package/dist/index.d.cts +115 -6
- package/dist/index.d.ts +115 -6
- package/dist/index.js +322 -21
- package/dist/nostr.d.cts +1 -1
- package/dist/nostr.d.ts +1 -1
- package/dist/nostr.js +1 -1
- package/dist/repositories/realm/index.d.cts +2 -2
- package/dist/repositories/realm/index.d.ts +2 -2
- package/dist/repositories/sqlite/index.d.cts +2 -2
- package/dist/repositories/sqlite/index.d.ts +2 -2
- package/dist/{repository-CfE18Fif.d.ts → repository-DaK1RzRq.d.cts} +4 -1
- package/dist/{repository-B02vsgcV.d.cts → repository-DlLvj_y6.d.ts} +4 -1
- package/dist/{rfq-DkckzRKK.d.ts → rfq-DzsmhXX3.d.cts} +31 -4
- package/dist/{rfq-DkckzRKK.d.cts → rfq-DzsmhXX3.d.ts} +31 -4
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ProvisionedKey, ProvisionedClaimSecret, asset, RelativeTimelock, IWallet, arkade, RestIndexerProvider, Transaction, IContractManager, VHTLC, Identity, ActivityResolver } from '@arkade-os/sdk';
|
|
2
|
-
import { S as SwapSecretsProjection, R as RfqSwapRecord, A as AssetSwapRepository, a as AssetSwap, M as MarketsCacheEntry, b as RefundArkProvider, c as RefundIndexer, L as LockupVtxo, d as RfqSwap, e as ArkadeRefundResult, f as LockupSpendIndexer, g as RfqSwapState } from './repository-
|
|
3
|
-
export { h as AssetSwapStatus, i as AvailableRfqSwapManagerCallbacks, B as BTC_ASSET_ID, I as InMemoryAssetSwapRepository, j as LightningReceiveSwap, k as LightningSendSwap, l as LockupFate, m as LockupNeedsRecoveryError, n as LockupParams, o as LockupSpend, O as OnchainSendAction, p as OnchainSendSwap, P as PersistableRfqSwap, q as PreimageBlockedReason, r as PreimageNotRecoverableError, s as REFUND_MTP_LAG_SECONDS, t as RFQ_RESOLVED_STATES, u as RFQ_SWAP_RETENTION_SECONDS, v as RFQ_SWAP_TERMINAL_STATES, w as RefundOutcome, x as RfqRestoreFailure, y as RfqRestoreOptions, z as RfqRestoreResult, C as RfqSwapActionName, D as RfqSwapLockup, E as RfqSwapManager, F as RfqSwapManagerCallbacks, G as RfqSwapManagerConfig, H as RfqSwapManagerDeps, J as RfqSwapManagerEvents, K as RfqSwapOrigin, N as RfqSwapOriginRequired, Q as RfqSwapOutcome, T as RfqSwapRecordStore, U as SwapContractRegistry, V as addAssetSwap, W as awaitRfqResolution, X as createRfqSwapRecord, Y as findLockupVtxos, Z as getAssetSwaps, _ as getAssetSwapsOrThrow, $ as isRfqSwapTerminal, a0 as isRfqTerminal, a1 as nextOnchainAction, a2 as preimageForSwapRecord, a3 as pushRefundWithoutReceiver, a4 as readLockupFate, a5 as rebuildRfqSwap, a6 as refundIfUnresolved, a7 as rfqSwapOriginOf, a8 as shouldRetainRfqSwap, a9 as swapSecretsToRecord, aa as updateAssetSwap, ab as updateAssetSwapBestEffort, ac as updateRfqSwapRecord } from './repository-
|
|
1
|
+
import { ProvisionedKey, ProvisionedClaimSecret, asset, RelativeTimelock, IWallet, arkade, RestIndexerProvider, Transaction, IContractManager, OnchainProvider, PaymentRail, VHTLC, Identity, ActivityResolver } from '@arkade-os/sdk';
|
|
2
|
+
import { S as SwapSecretsProjection, R as RfqSwapRecord, A as AssetSwapRepository, a as AssetSwap, M as MarketsCacheEntry, b as RefundArkProvider, c as RefundIndexer, L as LockupVtxo, d as RfqSwap, e as ArkadeRefundResult, f as LockupSpendIndexer, g as RfqSwapState } from './repository-DaK1RzRq.cjs';
|
|
3
|
+
export { h as AssetSwapStatus, i as AvailableRfqSwapManagerCallbacks, B as BTC_ASSET_ID, I as InMemoryAssetSwapRepository, j as LightningReceiveSwap, k as LightningSendSwap, l as LockupFate, m as LockupNeedsRecoveryError, n as LockupParams, o as LockupSpend, O as OnchainSendAction, p as OnchainSendSwap, P as PersistableRfqSwap, q as PreimageBlockedReason, r as PreimageNotRecoverableError, s as REFUND_MTP_LAG_SECONDS, t as RFQ_RESOLVED_STATES, u as RFQ_SWAP_RETENTION_SECONDS, v as RFQ_SWAP_TERMINAL_STATES, w as RefundOutcome, x as RfqRestoreFailure, y as RfqRestoreOptions, z as RfqRestoreResult, C as RfqSwapActionName, D as RfqSwapLockup, E as RfqSwapManager, F as RfqSwapManagerCallbacks, G as RfqSwapManagerConfig, H as RfqSwapManagerDeps, J as RfqSwapManagerEvents, K as RfqSwapOrigin, N as RfqSwapOriginRequired, Q as RfqSwapOutcome, T as RfqSwapRecordStore, U as SwapContractRegistry, V as addAssetSwap, W as awaitRfqResolution, X as createRfqSwapRecord, Y as findLockupVtxos, Z as getAssetSwaps, _ as getAssetSwapsOrThrow, $ as isRfqSwapTerminal, a0 as isRfqTerminal, a1 as nextOnchainAction, a2 as preimageForSwapRecord, a3 as pushRefundWithoutReceiver, a4 as readLockupFate, a5 as rebuildRfqSwap, a6 as refundIfUnresolved, a7 as rfqSwapOriginOf, a8 as shouldRetainRfqSwap, a9 as swapSecretsToRecord, aa as updateAssetSwap, ab as updateAssetSwapBestEffort, ac as updateRfqSwapRecord } from './repository-DaK1RzRq.cjs';
|
|
4
4
|
import { Network, LocalCardInput, DiscoveredMarket, Side, OfferPlan } from '@arkade-os/solver-discovery';
|
|
5
|
-
import { O as OnchainNetwork, a as OnchainHtlc, b as OnchainHtlcParams } from './rfq-
|
|
6
|
-
export { A as ARKADE_ASSET,
|
|
5
|
+
import { O as OnchainNetwork, a as OnchainHtlc, b as OnchainHtlcParams, C as ChainSource, R as RfqTransport, r as requestOnchainSend, I as InvoiceFacts, c as requestLightningSend } from './rfq-DzsmhXX3.cjs';
|
|
6
|
+
export { A as ARKADE_ASSET, d as ARKADE_BTC, e as AddressMismatch, f as ChainUtxo, H as HtlcUtxo, L as LIGHTNING_BTC, g as LIGHTNING_RECEIVE_PAIR, h as LIGHTNING_SEND_PAIR, i as LOCKTIME_THRESHOLD, j as LightningReceiveTreeParams, k as LightningSendTreeParams, M as MAX_MIN_CONFIRMATIONS, l as MIN_CLAIM_WINDOW_SECONDS, m as MIN_HEADROOM_SECONDS, n as ONCHAIN_BTC, o as ONCHAIN_CLAIM_MARGIN_SECONDS, p as ONCHAIN_DUST_SATS, q as ONCHAIN_ORDER_MARGIN_SECONDS, s as ONCHAIN_RECEIVE_PAIR, t as ONCHAIN_SECONDS_PER_BLOCK, u as ONCHAIN_SEND_PAIR, v as OnchainHtlcPhase, w as RFQ_TERMINAL_STATES, x as RelaySocket, y as RfqQuote, z as RfqRefusalReason, B as RfqStatus, S as SOLO_REFUND_HEADROOM_SECONDS, D as SwapRefusal, E as arkadeAssetLeg, F as arkadeSwapRequest, G as assertFundable, J as assertReceivable, K as awaitOnchainFill, N as buildHtlcClaim, P as buildHtlcRefund, Q as claimOnchainFill, T as classifyOnchainHtlc, U as deriveLightningReceive, V as deriveOnchainReceive, W as deriveOnchainSend, X as extractPreimage, Y as httpTransport, Z as l1ScriptForAddress, _ as lightningReceiveRequest, $ as lightningSendRequest, a0 as lightningSendVtxoScript, a1 as newPreimage, a2 as newRfqId, a3 as offerTermsFromQuote, a4 as onchainHtlcScript, a5 as onchainReceiveRequest, a6 as onchainSendRequest, a7 as paymentHashOf, a8 as receiveVtxoScript, a9 as relayTransport, aa as requestLightningReceive, ab as requestOnchainReceive, ac as rfqPair, ad as unilateralClaimDelay, ae as unilateralRefundDelay, af as unilateralRefundWithoutReceiverDelay, ag as verifyLockupAddress, ah as verifyReceiveInvoice } from './rfq-DzsmhXX3.cjs';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Which wallet key signs this leg. Stored at `profile.signer`.
|
|
@@ -141,6 +141,9 @@ interface OnchainSendProfile extends Record<string, unknown> {
|
|
|
141
141
|
htlcAddress: string;
|
|
142
142
|
/** `profile.min_confirmations`; gates when the fill is claimable. */
|
|
143
143
|
minConfirmations: number;
|
|
144
|
+
/** Where the claim PAYS, hex. The spender's own choice, so nothing else
|
|
145
|
+
* gives it back — and `buildHtlcClaim` needs it. */
|
|
146
|
+
payoutPkScript: string;
|
|
144
147
|
/** The fill's outpoint, learned on first sighting. Without it a SPENT htlc
|
|
145
148
|
* reads as never funded — see `classifyOnchainHtlc`. */
|
|
146
149
|
funding?: {
|
|
@@ -180,6 +183,7 @@ declare function onchainSendProfile(result: {
|
|
|
180
183
|
htlcParams: OnchainHtlcParams;
|
|
181
184
|
l1Network: OnchainNetwork;
|
|
182
185
|
minConfirmations: number;
|
|
186
|
+
payoutPkScript: Uint8Array;
|
|
183
187
|
}): Omit<OnchainSendProfile, "signer" | "hashlock">;
|
|
184
188
|
|
|
185
189
|
/**
|
|
@@ -667,6 +671,111 @@ type OfferContractRetirer = Pick<IContractManager, "setContractWatchState">;
|
|
|
667
671
|
*/
|
|
668
672
|
declare function retireSettledOfferContracts(manager: OfferContractRetirer, swaps: AssetSwap[]): Promise<void>;
|
|
669
673
|
|
|
674
|
+
/** `network` is `requestOnchainSend`'s `l1Network`, and only decodes scripts to
|
|
675
|
+
* addresses — the provider decides which chain is read, so mismatching the two
|
|
676
|
+
* yields addresses it knows nothing about rather than an error. */
|
|
677
|
+
declare const chainSourceFrom: (provider: OnchainProvider, network: OnchainNetwork) => ChainSource;
|
|
678
|
+
|
|
679
|
+
/**
|
|
680
|
+
* Choosing which solver to negotiate with. Both send corridors pick a card the
|
|
681
|
+
* same way and differ only in the payout-side corridor they look for.
|
|
682
|
+
*/
|
|
683
|
+
|
|
684
|
+
/** Where to reach a solver. Bounds are indicative — the quote binds.
|
|
685
|
+
*
|
|
686
|
+
* No `emulatorPubkey`: the card's key only FILTERS here — the covenant is
|
|
687
|
+
* built from `deps.emulatorPubkey` or the pinned default, never from it. */
|
|
688
|
+
interface SolverRendezvous {
|
|
689
|
+
solverPubkey: string;
|
|
690
|
+
transports: {
|
|
691
|
+
nostr: {
|
|
692
|
+
relays: string[];
|
|
693
|
+
};
|
|
694
|
+
};
|
|
695
|
+
minSats: number;
|
|
696
|
+
maxSats: number;
|
|
697
|
+
}
|
|
698
|
+
/** The size check is not a courtesy: quoting outside a card's advertised range
|
|
699
|
+
* burns a negotiation, tells a third party what the user is about to do, and
|
|
700
|
+
* is refused anyway. A card that serves the corridor but not the size is
|
|
701
|
+
* skipped, not fatal — another may take it. */
|
|
702
|
+
declare const solverRendezvous: (markets: DiscoveredMarket[], payoutCorridor: "onchain" | "lightning", amountSats: number, fallbackEmulatorPubkey?: Uint8Array) => SolverRendezvous | undefined;
|
|
703
|
+
|
|
704
|
+
/**
|
|
705
|
+
* `solver-onchain` — pay an L1 address out of an Arkade balance through a
|
|
706
|
+
* solver. Registered by the app: the SDK does not depend on this package, and
|
|
707
|
+
* `RouterContext.swaps` is boltz-swap's. Every refusal is `available()`
|
|
708
|
+
* returning false, so the router drops the rail and the collaborative exit
|
|
709
|
+
* `onchain` wins by ranking.
|
|
710
|
+
*/
|
|
711
|
+
|
|
712
|
+
declare const SOLVER_ONCHAIN_RAIL = "solver-onchain";
|
|
713
|
+
/** What a record needs. Pass the whole object to `onchainSendProfile()`: only
|
|
714
|
+
* this carries `payoutPkScript`. */
|
|
715
|
+
type SolverOnchainSend = Awaited<ReturnType<typeof requestOnchainSend>> & {
|
|
716
|
+
rendezvous: SolverRendezvous;
|
|
717
|
+
/** Where the claim pays. Named nowhere else — the claim's output is the
|
|
718
|
+
* spender's choice. `onchainSendProfile()` hex-encodes it; a store fed
|
|
719
|
+
* these bytes raw returns an object with no `.length`. */
|
|
720
|
+
payoutPkScript: Uint8Array;
|
|
721
|
+
};
|
|
722
|
+
interface SolverOnchainRailDeps {
|
|
723
|
+
arkServerUrl: string;
|
|
724
|
+
l1Network: OnchainNetwork;
|
|
725
|
+
/** x-only L1 key that AUTHORISES the claim — not where it pays. */
|
|
726
|
+
payoutPubkey: Uint8Array;
|
|
727
|
+
/** Called by `available()` and again by `quote()` — pass the caching
|
|
728
|
+
* `discoverMarkets`, not a bare registry fetch. */
|
|
729
|
+
discover(): Promise<DiscoveredMarket[]>;
|
|
730
|
+
connect<T>(rendezvous: SolverRendezvous, fn: (transport: RfqTransport) => Promise<T>): Promise<T>;
|
|
731
|
+
/** Runs BEFORE funding, and a rejection cancels the send: a funded lockup
|
|
732
|
+
* with no record cannot be refunded. */
|
|
733
|
+
persist(swap: SolverOnchainSend): Promise<void>;
|
|
734
|
+
/** Resolve once the L1 fill is claimed. Optional: without it the handle
|
|
735
|
+
* stops at `"sent"`. `RfqSwapManager` drives the swap either way. */
|
|
736
|
+
awaitSettlement?(swap: SolverOnchainSend): Promise<{
|
|
737
|
+
txid: string;
|
|
738
|
+
}>;
|
|
739
|
+
emulatorPubkey?: string;
|
|
740
|
+
fallbackEmulatorPubkey?: Uint8Array;
|
|
741
|
+
}
|
|
742
|
+
declare const solverOnchainRendezvous: (markets: DiscoveredMarket[], amountSats: number, fallbackEmulatorPubkey?: Uint8Array) => SolverRendezvous | undefined;
|
|
743
|
+
/** Register alongside the core `onchain` rail, ranked first:
|
|
744
|
+
* `priority: ["ark", "solver-onchain", "onchain"]`. Both stay registered. */
|
|
745
|
+
declare function solverOnchainRail(deps: SolverOnchainRailDeps): PaymentRail;
|
|
746
|
+
|
|
747
|
+
/**
|
|
748
|
+
* `solver-lightning` — the sibling of `solver-onchain` on the BOLT11 corridor.
|
|
749
|
+
* Boltz's `lightning` rail matches the same invoices and both stay registered.
|
|
750
|
+
* The invoice fixes the amount, so a `req.amount` that disagrees is refused
|
|
751
|
+
* rather than ignored; `decodeInvoice` is injected because this package
|
|
752
|
+
* carries no bolt11 dependency.
|
|
753
|
+
*/
|
|
754
|
+
|
|
755
|
+
declare const SOLVER_LIGHTNING_RAIL = "solver-lightning";
|
|
756
|
+
type SolverLightningSend = Awaited<ReturnType<typeof requestLightningSend>> & {
|
|
757
|
+
invoice: InvoiceFacts;
|
|
758
|
+
rendezvous: SolverRendezvous;
|
|
759
|
+
};
|
|
760
|
+
/** Mirrors {@link SolverOnchainRailDeps}; see there for the shared seams. */
|
|
761
|
+
interface SolverLightningRailDeps {
|
|
762
|
+
arkServerUrl: string;
|
|
763
|
+
/** A decoder that throws drops the rail rather than taking the router
|
|
764
|
+
* down — correct, since an undecodable invoice cannot be paid. */
|
|
765
|
+
decodeInvoice(bolt11: string): InvoiceFacts;
|
|
766
|
+
discover(): Promise<DiscoveredMarket[]>;
|
|
767
|
+
connect<T>(rendezvous: SolverRendezvous, fn: (transport: RfqTransport) => Promise<T>): Promise<T>;
|
|
768
|
+
persist(swap: SolverLightningSend): Promise<void>;
|
|
769
|
+
/** Optional; without it the handle stops at `"sent"`. */
|
|
770
|
+
awaitSettlement?(swap: SolverLightningSend): Promise<{
|
|
771
|
+
preimage?: string;
|
|
772
|
+
}>;
|
|
773
|
+
emulatorPubkey?: string;
|
|
774
|
+
fallbackEmulatorPubkey?: Uint8Array;
|
|
775
|
+
}
|
|
776
|
+
declare const solverLightningRendezvous: (markets: DiscoveredMarket[], amountSats: number, fallbackEmulatorPubkey?: Uint8Array) => SolverRendezvous | undefined;
|
|
777
|
+
declare function solverLightningRail(deps: SolverLightningRailDeps): PaymentRail;
|
|
778
|
+
|
|
670
779
|
interface SealedClaimPacket {
|
|
671
780
|
/** `ephPub(33) ‖ nonce(12) ‖ ciphertext`, base64 — wire-ready. This is
|
|
672
781
|
* the whole packet: the RFQ request's `claim_packet` field carries
|
|
@@ -1024,4 +1133,4 @@ interface RfqSwapActivityDeps {
|
|
|
1024
1133
|
*/
|
|
1025
1134
|
declare function rfqSwapActivityInputs(deps: RfqSwapActivityDeps): Promise<SwapActivityInput[]>;
|
|
1026
1135
|
|
|
1027
|
-
export { ArkadeRefundResult, type ArkadeRefunderDeps, AssetSwap, AssetSwapRepository, type ClaimArkProvider, type ClaimPacketInput, type DiscoverMarketsOptions, IndexedDbAssetSwapRepository, type LightningReceiveProfile, type LightningSendProfile, LockupAmountMismatchError, LockupContractMissing, type LockupContractReader, type LockupContractWriter, LockupRegistrationFailed, LockupSpendIndexer, LockupVtxo, MarketsCacheEntry, OFFER_PACKET_TYPE, type Offer, type OfferContractRetirer, type OfferSwapWatcher, OnchainHtlc, OnchainHtlcParams, OnchainNetwork, type OnchainSendProfile, type PlanError, QUOTE_OPTIONS, RefundArkProvider, type RefundBlockedReason, RefundIndexer, RefundNotLocallyPossibleError, type RestoreIndexer, type RfqClaimSecretProjection, type RfqHashlockProjection, type RfqSignerProjection, RfqSwap, type RfqSwapActivityDeps, RfqSwapRecord, RfqSwapState, SWAP_LOCKUP_CONTRACT_KIND, SWAP_LOCKUP_CONTRACT_LABEL, SWAP_LOCKUP_CONTRACT_TYPE, type SealedClaimPacket, type SpendKind, type SwapActivityInput, SwapSecretsProjection, type Tx, type WatchOfferSwapsParams, arkadeRefunder, awaitLockupFunding, cancelOffer, claimReceiveLockup, classifyDepositSpend, classifySpend, createOffer, decodeOffer, discoverMarkets, encodeOffer, findMarket, lockupContractParams, makeCachedFeedFetch, offerVtxoScript, onchainSendProfile, pushClaim, registerLockupContract, restoreAssetSwaps, retireSettledOfferContracts, rfqClaimSecretOf, rfqSecretsProfile, rfqSignerOf, rfqSwapActivityInputs, sealClaimPacket, senderIdentityForSwapRecord, spendTxidsOf, spendUpdate, swapActivityResolver, swapPrograms, validatePlan, watchOfferSwaps };
|
|
1136
|
+
export { ArkadeRefundResult, type ArkadeRefunderDeps, AssetSwap, AssetSwapRepository, ChainSource, type ClaimArkProvider, type ClaimPacketInput, type DiscoverMarketsOptions, IndexedDbAssetSwapRepository, InvoiceFacts, type LightningReceiveProfile, type LightningSendProfile, LockupAmountMismatchError, LockupContractMissing, type LockupContractReader, type LockupContractWriter, LockupRegistrationFailed, LockupSpendIndexer, LockupVtxo, MarketsCacheEntry, OFFER_PACKET_TYPE, type Offer, type OfferContractRetirer, type OfferSwapWatcher, OnchainHtlc, OnchainHtlcParams, OnchainNetwork, type OnchainSendProfile, type PlanError, QUOTE_OPTIONS, RefundArkProvider, type RefundBlockedReason, RefundIndexer, RefundNotLocallyPossibleError, type RestoreIndexer, type RfqClaimSecretProjection, type RfqHashlockProjection, type RfqSignerProjection, RfqSwap, type RfqSwapActivityDeps, RfqSwapRecord, RfqSwapState, RfqTransport, SOLVER_LIGHTNING_RAIL, SOLVER_ONCHAIN_RAIL, SWAP_LOCKUP_CONTRACT_KIND, SWAP_LOCKUP_CONTRACT_LABEL, SWAP_LOCKUP_CONTRACT_TYPE, type SealedClaimPacket, type SolverLightningRailDeps, type SolverLightningSend, type SolverOnchainRailDeps, type SolverOnchainSend, type SolverRendezvous, type SpendKind, type SwapActivityInput, SwapSecretsProjection, type Tx, type WatchOfferSwapsParams, arkadeRefunder, awaitLockupFunding, cancelOffer, chainSourceFrom, claimReceiveLockup, classifyDepositSpend, classifySpend, createOffer, decodeOffer, discoverMarkets, encodeOffer, findMarket, lockupContractParams, makeCachedFeedFetch, offerVtxoScript, onchainSendProfile, pushClaim, registerLockupContract, requestLightningSend, requestOnchainSend, restoreAssetSwaps, retireSettledOfferContracts, rfqClaimSecretOf, rfqSecretsProfile, rfqSignerOf, rfqSwapActivityInputs, sealClaimPacket, senderIdentityForSwapRecord, solverLightningRail, solverLightningRendezvous, solverOnchainRail, solverOnchainRendezvous, solverRendezvous, spendTxidsOf, spendUpdate, swapActivityResolver, swapPrograms, validatePlan, watchOfferSwaps };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ProvisionedKey, ProvisionedClaimSecret, asset, RelativeTimelock, IWallet, arkade, RestIndexerProvider, Transaction, IContractManager, VHTLC, Identity, ActivityResolver } from '@arkade-os/sdk';
|
|
2
|
-
import { S as SwapSecretsProjection, R as RfqSwapRecord, A as AssetSwapRepository, a as AssetSwap, M as MarketsCacheEntry, b as RefundArkProvider, c as RefundIndexer, L as LockupVtxo, d as RfqSwap, e as ArkadeRefundResult, f as LockupSpendIndexer, g as RfqSwapState } from './repository-
|
|
3
|
-
export { h as AssetSwapStatus, i as AvailableRfqSwapManagerCallbacks, B as BTC_ASSET_ID, I as InMemoryAssetSwapRepository, j as LightningReceiveSwap, k as LightningSendSwap, l as LockupFate, m as LockupNeedsRecoveryError, n as LockupParams, o as LockupSpend, O as OnchainSendAction, p as OnchainSendSwap, P as PersistableRfqSwap, q as PreimageBlockedReason, r as PreimageNotRecoverableError, s as REFUND_MTP_LAG_SECONDS, t as RFQ_RESOLVED_STATES, u as RFQ_SWAP_RETENTION_SECONDS, v as RFQ_SWAP_TERMINAL_STATES, w as RefundOutcome, x as RfqRestoreFailure, y as RfqRestoreOptions, z as RfqRestoreResult, C as RfqSwapActionName, D as RfqSwapLockup, E as RfqSwapManager, F as RfqSwapManagerCallbacks, G as RfqSwapManagerConfig, H as RfqSwapManagerDeps, J as RfqSwapManagerEvents, K as RfqSwapOrigin, N as RfqSwapOriginRequired, Q as RfqSwapOutcome, T as RfqSwapRecordStore, U as SwapContractRegistry, V as addAssetSwap, W as awaitRfqResolution, X as createRfqSwapRecord, Y as findLockupVtxos, Z as getAssetSwaps, _ as getAssetSwapsOrThrow, $ as isRfqSwapTerminal, a0 as isRfqTerminal, a1 as nextOnchainAction, a2 as preimageForSwapRecord, a3 as pushRefundWithoutReceiver, a4 as readLockupFate, a5 as rebuildRfqSwap, a6 as refundIfUnresolved, a7 as rfqSwapOriginOf, a8 as shouldRetainRfqSwap, a9 as swapSecretsToRecord, aa as updateAssetSwap, ab as updateAssetSwapBestEffort, ac as updateRfqSwapRecord } from './repository-
|
|
1
|
+
import { ProvisionedKey, ProvisionedClaimSecret, asset, RelativeTimelock, IWallet, arkade, RestIndexerProvider, Transaction, IContractManager, OnchainProvider, PaymentRail, VHTLC, Identity, ActivityResolver } from '@arkade-os/sdk';
|
|
2
|
+
import { S as SwapSecretsProjection, R as RfqSwapRecord, A as AssetSwapRepository, a as AssetSwap, M as MarketsCacheEntry, b as RefundArkProvider, c as RefundIndexer, L as LockupVtxo, d as RfqSwap, e as ArkadeRefundResult, f as LockupSpendIndexer, g as RfqSwapState } from './repository-DlLvj_y6.js';
|
|
3
|
+
export { h as AssetSwapStatus, i as AvailableRfqSwapManagerCallbacks, B as BTC_ASSET_ID, I as InMemoryAssetSwapRepository, j as LightningReceiveSwap, k as LightningSendSwap, l as LockupFate, m as LockupNeedsRecoveryError, n as LockupParams, o as LockupSpend, O as OnchainSendAction, p as OnchainSendSwap, P as PersistableRfqSwap, q as PreimageBlockedReason, r as PreimageNotRecoverableError, s as REFUND_MTP_LAG_SECONDS, t as RFQ_RESOLVED_STATES, u as RFQ_SWAP_RETENTION_SECONDS, v as RFQ_SWAP_TERMINAL_STATES, w as RefundOutcome, x as RfqRestoreFailure, y as RfqRestoreOptions, z as RfqRestoreResult, C as RfqSwapActionName, D as RfqSwapLockup, E as RfqSwapManager, F as RfqSwapManagerCallbacks, G as RfqSwapManagerConfig, H as RfqSwapManagerDeps, J as RfqSwapManagerEvents, K as RfqSwapOrigin, N as RfqSwapOriginRequired, Q as RfqSwapOutcome, T as RfqSwapRecordStore, U as SwapContractRegistry, V as addAssetSwap, W as awaitRfqResolution, X as createRfqSwapRecord, Y as findLockupVtxos, Z as getAssetSwaps, _ as getAssetSwapsOrThrow, $ as isRfqSwapTerminal, a0 as isRfqTerminal, a1 as nextOnchainAction, a2 as preimageForSwapRecord, a3 as pushRefundWithoutReceiver, a4 as readLockupFate, a5 as rebuildRfqSwap, a6 as refundIfUnresolved, a7 as rfqSwapOriginOf, a8 as shouldRetainRfqSwap, a9 as swapSecretsToRecord, aa as updateAssetSwap, ab as updateAssetSwapBestEffort, ac as updateRfqSwapRecord } from './repository-DlLvj_y6.js';
|
|
4
4
|
import { Network, LocalCardInput, DiscoveredMarket, Side, OfferPlan } from '@arkade-os/solver-discovery';
|
|
5
|
-
import { O as OnchainNetwork, a as OnchainHtlc, b as OnchainHtlcParams } from './rfq-
|
|
6
|
-
export { A as ARKADE_ASSET,
|
|
5
|
+
import { O as OnchainNetwork, a as OnchainHtlc, b as OnchainHtlcParams, C as ChainSource, R as RfqTransport, r as requestOnchainSend, I as InvoiceFacts, c as requestLightningSend } from './rfq-DzsmhXX3.js';
|
|
6
|
+
export { A as ARKADE_ASSET, d as ARKADE_BTC, e as AddressMismatch, f as ChainUtxo, H as HtlcUtxo, L as LIGHTNING_BTC, g as LIGHTNING_RECEIVE_PAIR, h as LIGHTNING_SEND_PAIR, i as LOCKTIME_THRESHOLD, j as LightningReceiveTreeParams, k as LightningSendTreeParams, M as MAX_MIN_CONFIRMATIONS, l as MIN_CLAIM_WINDOW_SECONDS, m as MIN_HEADROOM_SECONDS, n as ONCHAIN_BTC, o as ONCHAIN_CLAIM_MARGIN_SECONDS, p as ONCHAIN_DUST_SATS, q as ONCHAIN_ORDER_MARGIN_SECONDS, s as ONCHAIN_RECEIVE_PAIR, t as ONCHAIN_SECONDS_PER_BLOCK, u as ONCHAIN_SEND_PAIR, v as OnchainHtlcPhase, w as RFQ_TERMINAL_STATES, x as RelaySocket, y as RfqQuote, z as RfqRefusalReason, B as RfqStatus, S as SOLO_REFUND_HEADROOM_SECONDS, D as SwapRefusal, E as arkadeAssetLeg, F as arkadeSwapRequest, G as assertFundable, J as assertReceivable, K as awaitOnchainFill, N as buildHtlcClaim, P as buildHtlcRefund, Q as claimOnchainFill, T as classifyOnchainHtlc, U as deriveLightningReceive, V as deriveOnchainReceive, W as deriveOnchainSend, X as extractPreimage, Y as httpTransport, Z as l1ScriptForAddress, _ as lightningReceiveRequest, $ as lightningSendRequest, a0 as lightningSendVtxoScript, a1 as newPreimage, a2 as newRfqId, a3 as offerTermsFromQuote, a4 as onchainHtlcScript, a5 as onchainReceiveRequest, a6 as onchainSendRequest, a7 as paymentHashOf, a8 as receiveVtxoScript, a9 as relayTransport, aa as requestLightningReceive, ab as requestOnchainReceive, ac as rfqPair, ad as unilateralClaimDelay, ae as unilateralRefundDelay, af as unilateralRefundWithoutReceiverDelay, ag as verifyLockupAddress, ah as verifyReceiveInvoice } from './rfq-DzsmhXX3.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Which wallet key signs this leg. Stored at `profile.signer`.
|
|
@@ -141,6 +141,9 @@ interface OnchainSendProfile extends Record<string, unknown> {
|
|
|
141
141
|
htlcAddress: string;
|
|
142
142
|
/** `profile.min_confirmations`; gates when the fill is claimable. */
|
|
143
143
|
minConfirmations: number;
|
|
144
|
+
/** Where the claim PAYS, hex. The spender's own choice, so nothing else
|
|
145
|
+
* gives it back — and `buildHtlcClaim` needs it. */
|
|
146
|
+
payoutPkScript: string;
|
|
144
147
|
/** The fill's outpoint, learned on first sighting. Without it a SPENT htlc
|
|
145
148
|
* reads as never funded — see `classifyOnchainHtlc`. */
|
|
146
149
|
funding?: {
|
|
@@ -180,6 +183,7 @@ declare function onchainSendProfile(result: {
|
|
|
180
183
|
htlcParams: OnchainHtlcParams;
|
|
181
184
|
l1Network: OnchainNetwork;
|
|
182
185
|
minConfirmations: number;
|
|
186
|
+
payoutPkScript: Uint8Array;
|
|
183
187
|
}): Omit<OnchainSendProfile, "signer" | "hashlock">;
|
|
184
188
|
|
|
185
189
|
/**
|
|
@@ -667,6 +671,111 @@ type OfferContractRetirer = Pick<IContractManager, "setContractWatchState">;
|
|
|
667
671
|
*/
|
|
668
672
|
declare function retireSettledOfferContracts(manager: OfferContractRetirer, swaps: AssetSwap[]): Promise<void>;
|
|
669
673
|
|
|
674
|
+
/** `network` is `requestOnchainSend`'s `l1Network`, and only decodes scripts to
|
|
675
|
+
* addresses — the provider decides which chain is read, so mismatching the two
|
|
676
|
+
* yields addresses it knows nothing about rather than an error. */
|
|
677
|
+
declare const chainSourceFrom: (provider: OnchainProvider, network: OnchainNetwork) => ChainSource;
|
|
678
|
+
|
|
679
|
+
/**
|
|
680
|
+
* Choosing which solver to negotiate with. Both send corridors pick a card the
|
|
681
|
+
* same way and differ only in the payout-side corridor they look for.
|
|
682
|
+
*/
|
|
683
|
+
|
|
684
|
+
/** Where to reach a solver. Bounds are indicative — the quote binds.
|
|
685
|
+
*
|
|
686
|
+
* No `emulatorPubkey`: the card's key only FILTERS here — the covenant is
|
|
687
|
+
* built from `deps.emulatorPubkey` or the pinned default, never from it. */
|
|
688
|
+
interface SolverRendezvous {
|
|
689
|
+
solverPubkey: string;
|
|
690
|
+
transports: {
|
|
691
|
+
nostr: {
|
|
692
|
+
relays: string[];
|
|
693
|
+
};
|
|
694
|
+
};
|
|
695
|
+
minSats: number;
|
|
696
|
+
maxSats: number;
|
|
697
|
+
}
|
|
698
|
+
/** The size check is not a courtesy: quoting outside a card's advertised range
|
|
699
|
+
* burns a negotiation, tells a third party what the user is about to do, and
|
|
700
|
+
* is refused anyway. A card that serves the corridor but not the size is
|
|
701
|
+
* skipped, not fatal — another may take it. */
|
|
702
|
+
declare const solverRendezvous: (markets: DiscoveredMarket[], payoutCorridor: "onchain" | "lightning", amountSats: number, fallbackEmulatorPubkey?: Uint8Array) => SolverRendezvous | undefined;
|
|
703
|
+
|
|
704
|
+
/**
|
|
705
|
+
* `solver-onchain` — pay an L1 address out of an Arkade balance through a
|
|
706
|
+
* solver. Registered by the app: the SDK does not depend on this package, and
|
|
707
|
+
* `RouterContext.swaps` is boltz-swap's. Every refusal is `available()`
|
|
708
|
+
* returning false, so the router drops the rail and the collaborative exit
|
|
709
|
+
* `onchain` wins by ranking.
|
|
710
|
+
*/
|
|
711
|
+
|
|
712
|
+
declare const SOLVER_ONCHAIN_RAIL = "solver-onchain";
|
|
713
|
+
/** What a record needs. Pass the whole object to `onchainSendProfile()`: only
|
|
714
|
+
* this carries `payoutPkScript`. */
|
|
715
|
+
type SolverOnchainSend = Awaited<ReturnType<typeof requestOnchainSend>> & {
|
|
716
|
+
rendezvous: SolverRendezvous;
|
|
717
|
+
/** Where the claim pays. Named nowhere else — the claim's output is the
|
|
718
|
+
* spender's choice. `onchainSendProfile()` hex-encodes it; a store fed
|
|
719
|
+
* these bytes raw returns an object with no `.length`. */
|
|
720
|
+
payoutPkScript: Uint8Array;
|
|
721
|
+
};
|
|
722
|
+
interface SolverOnchainRailDeps {
|
|
723
|
+
arkServerUrl: string;
|
|
724
|
+
l1Network: OnchainNetwork;
|
|
725
|
+
/** x-only L1 key that AUTHORISES the claim — not where it pays. */
|
|
726
|
+
payoutPubkey: Uint8Array;
|
|
727
|
+
/** Called by `available()` and again by `quote()` — pass the caching
|
|
728
|
+
* `discoverMarkets`, not a bare registry fetch. */
|
|
729
|
+
discover(): Promise<DiscoveredMarket[]>;
|
|
730
|
+
connect<T>(rendezvous: SolverRendezvous, fn: (transport: RfqTransport) => Promise<T>): Promise<T>;
|
|
731
|
+
/** Runs BEFORE funding, and a rejection cancels the send: a funded lockup
|
|
732
|
+
* with no record cannot be refunded. */
|
|
733
|
+
persist(swap: SolverOnchainSend): Promise<void>;
|
|
734
|
+
/** Resolve once the L1 fill is claimed. Optional: without it the handle
|
|
735
|
+
* stops at `"sent"`. `RfqSwapManager` drives the swap either way. */
|
|
736
|
+
awaitSettlement?(swap: SolverOnchainSend): Promise<{
|
|
737
|
+
txid: string;
|
|
738
|
+
}>;
|
|
739
|
+
emulatorPubkey?: string;
|
|
740
|
+
fallbackEmulatorPubkey?: Uint8Array;
|
|
741
|
+
}
|
|
742
|
+
declare const solverOnchainRendezvous: (markets: DiscoveredMarket[], amountSats: number, fallbackEmulatorPubkey?: Uint8Array) => SolverRendezvous | undefined;
|
|
743
|
+
/** Register alongside the core `onchain` rail, ranked first:
|
|
744
|
+
* `priority: ["ark", "solver-onchain", "onchain"]`. Both stay registered. */
|
|
745
|
+
declare function solverOnchainRail(deps: SolverOnchainRailDeps): PaymentRail;
|
|
746
|
+
|
|
747
|
+
/**
|
|
748
|
+
* `solver-lightning` — the sibling of `solver-onchain` on the BOLT11 corridor.
|
|
749
|
+
* Boltz's `lightning` rail matches the same invoices and both stay registered.
|
|
750
|
+
* The invoice fixes the amount, so a `req.amount` that disagrees is refused
|
|
751
|
+
* rather than ignored; `decodeInvoice` is injected because this package
|
|
752
|
+
* carries no bolt11 dependency.
|
|
753
|
+
*/
|
|
754
|
+
|
|
755
|
+
declare const SOLVER_LIGHTNING_RAIL = "solver-lightning";
|
|
756
|
+
type SolverLightningSend = Awaited<ReturnType<typeof requestLightningSend>> & {
|
|
757
|
+
invoice: InvoiceFacts;
|
|
758
|
+
rendezvous: SolverRendezvous;
|
|
759
|
+
};
|
|
760
|
+
/** Mirrors {@link SolverOnchainRailDeps}; see there for the shared seams. */
|
|
761
|
+
interface SolverLightningRailDeps {
|
|
762
|
+
arkServerUrl: string;
|
|
763
|
+
/** A decoder that throws drops the rail rather than taking the router
|
|
764
|
+
* down — correct, since an undecodable invoice cannot be paid. */
|
|
765
|
+
decodeInvoice(bolt11: string): InvoiceFacts;
|
|
766
|
+
discover(): Promise<DiscoveredMarket[]>;
|
|
767
|
+
connect<T>(rendezvous: SolverRendezvous, fn: (transport: RfqTransport) => Promise<T>): Promise<T>;
|
|
768
|
+
persist(swap: SolverLightningSend): Promise<void>;
|
|
769
|
+
/** Optional; without it the handle stops at `"sent"`. */
|
|
770
|
+
awaitSettlement?(swap: SolverLightningSend): Promise<{
|
|
771
|
+
preimage?: string;
|
|
772
|
+
}>;
|
|
773
|
+
emulatorPubkey?: string;
|
|
774
|
+
fallbackEmulatorPubkey?: Uint8Array;
|
|
775
|
+
}
|
|
776
|
+
declare const solverLightningRendezvous: (markets: DiscoveredMarket[], amountSats: number, fallbackEmulatorPubkey?: Uint8Array) => SolverRendezvous | undefined;
|
|
777
|
+
declare function solverLightningRail(deps: SolverLightningRailDeps): PaymentRail;
|
|
778
|
+
|
|
670
779
|
interface SealedClaimPacket {
|
|
671
780
|
/** `ephPub(33) ‖ nonce(12) ‖ ciphertext`, base64 — wire-ready. This is
|
|
672
781
|
* the whole packet: the RFQ request's `claim_packet` field carries
|
|
@@ -1024,4 +1133,4 @@ interface RfqSwapActivityDeps {
|
|
|
1024
1133
|
*/
|
|
1025
1134
|
declare function rfqSwapActivityInputs(deps: RfqSwapActivityDeps): Promise<SwapActivityInput[]>;
|
|
1026
1135
|
|
|
1027
|
-
export { ArkadeRefundResult, type ArkadeRefunderDeps, AssetSwap, AssetSwapRepository, type ClaimArkProvider, type ClaimPacketInput, type DiscoverMarketsOptions, IndexedDbAssetSwapRepository, type LightningReceiveProfile, type LightningSendProfile, LockupAmountMismatchError, LockupContractMissing, type LockupContractReader, type LockupContractWriter, LockupRegistrationFailed, LockupSpendIndexer, LockupVtxo, MarketsCacheEntry, OFFER_PACKET_TYPE, type Offer, type OfferContractRetirer, type OfferSwapWatcher, OnchainHtlc, OnchainHtlcParams, OnchainNetwork, type OnchainSendProfile, type PlanError, QUOTE_OPTIONS, RefundArkProvider, type RefundBlockedReason, RefundIndexer, RefundNotLocallyPossibleError, type RestoreIndexer, type RfqClaimSecretProjection, type RfqHashlockProjection, type RfqSignerProjection, RfqSwap, type RfqSwapActivityDeps, RfqSwapRecord, RfqSwapState, SWAP_LOCKUP_CONTRACT_KIND, SWAP_LOCKUP_CONTRACT_LABEL, SWAP_LOCKUP_CONTRACT_TYPE, type SealedClaimPacket, type SpendKind, type SwapActivityInput, SwapSecretsProjection, type Tx, type WatchOfferSwapsParams, arkadeRefunder, awaitLockupFunding, cancelOffer, claimReceiveLockup, classifyDepositSpend, classifySpend, createOffer, decodeOffer, discoverMarkets, encodeOffer, findMarket, lockupContractParams, makeCachedFeedFetch, offerVtxoScript, onchainSendProfile, pushClaim, registerLockupContract, restoreAssetSwaps, retireSettledOfferContracts, rfqClaimSecretOf, rfqSecretsProfile, rfqSignerOf, rfqSwapActivityInputs, sealClaimPacket, senderIdentityForSwapRecord, spendTxidsOf, spendUpdate, swapActivityResolver, swapPrograms, validatePlan, watchOfferSwaps };
|
|
1136
|
+
export { ArkadeRefundResult, type ArkadeRefunderDeps, AssetSwap, AssetSwapRepository, ChainSource, type ClaimArkProvider, type ClaimPacketInput, type DiscoverMarketsOptions, IndexedDbAssetSwapRepository, InvoiceFacts, type LightningReceiveProfile, type LightningSendProfile, LockupAmountMismatchError, LockupContractMissing, type LockupContractReader, type LockupContractWriter, LockupRegistrationFailed, LockupSpendIndexer, LockupVtxo, MarketsCacheEntry, OFFER_PACKET_TYPE, type Offer, type OfferContractRetirer, type OfferSwapWatcher, OnchainHtlc, OnchainHtlcParams, OnchainNetwork, type OnchainSendProfile, type PlanError, QUOTE_OPTIONS, RefundArkProvider, type RefundBlockedReason, RefundIndexer, RefundNotLocallyPossibleError, type RestoreIndexer, type RfqClaimSecretProjection, type RfqHashlockProjection, type RfqSignerProjection, RfqSwap, type RfqSwapActivityDeps, RfqSwapRecord, RfqSwapState, RfqTransport, SOLVER_LIGHTNING_RAIL, SOLVER_ONCHAIN_RAIL, SWAP_LOCKUP_CONTRACT_KIND, SWAP_LOCKUP_CONTRACT_LABEL, SWAP_LOCKUP_CONTRACT_TYPE, type SealedClaimPacket, type SolverLightningRailDeps, type SolverLightningSend, type SolverOnchainRailDeps, type SolverOnchainSend, type SolverRendezvous, type SpendKind, type SwapActivityInput, SwapSecretsProjection, type Tx, type WatchOfferSwapsParams, arkadeRefunder, awaitLockupFunding, cancelOffer, chainSourceFrom, claimReceiveLockup, classifyDepositSpend, classifySpend, createOffer, decodeOffer, discoverMarkets, encodeOffer, findMarket, lockupContractParams, makeCachedFeedFetch, offerVtxoScript, onchainSendProfile, pushClaim, registerLockupContract, requestLightningSend, requestOnchainSend, restoreAssetSwaps, retireSettledOfferContracts, rfqClaimSecretOf, rfqSecretsProfile, rfqSignerOf, rfqSwapActivityInputs, sealClaimPacket, senderIdentityForSwapRecord, solverLightningRail, solverLightningRendezvous, solverOnchainRail, solverOnchainRendezvous, solverRendezvous, spendTxidsOf, spendUpdate, swapActivityResolver, swapPrograms, validatePlan, watchOfferSwaps };
|