Class ComposedSwapClient
- Namespace
- NArk.ArkadeIntents.Composition
- Assembly
- NArk.ArkadeIntents.dll
Composes independent solver quotes entirely on the client.
public sealed class ComposedSwapClient
- Inheritance
-
ComposedSwapClient
- Inherited Members
Remarks
The outgoing quote is always completed first. A receive quote then reuses H and pins its claim to L. No solver is told that the two RFQs form a route. Claiming M reveals P before an EVM lock necessarily exists, so this mechanism relies on the configured outgoing solver state machine; only a verified ERC20 claim is final settlement.
Constructors
ComposedSwapClient(IEvmOutgoingQuoteClient, ILightningIngressQuoteClient, IOnchainIngressQuoteClient, ComposedSwapOptions?, TimeProvider?)
Composes independent solver quotes entirely on the client.
public ComposedSwapClient(IEvmOutgoingQuoteClient evm, ILightningIngressQuoteClient lightning, IOnchainIngressQuoteClient onchain, ComposedSwapOptions? options = null, TimeProvider? timeProvider = null)
Parameters
evmIEvmOutgoingQuoteClientlightningILightningIngressQuoteClientonchainIOnchainIngressQuoteClientoptionsComposedSwapOptionstimeProviderTimeProvider
Remarks
The outgoing quote is always completed first. A receive quote then reuses H and pins its claim to L. No solver is told that the two RFQs form a route. Claiming M reveals P before an EVM lock necessarily exists, so this mechanism relies on the configured outgoing solver state machine; only a verified ERC20 claim is final settlement.
Methods
CreateArkadeAsync(string, long, string, EvmSendPolicy, IRfqTransport, string?, SolverCard?, CancellationToken)
Creates a direct Arkade-to-EVM route.
public Task<ArkadeToEvmRoute> CreateArkadeAsync(string walletId, long amountSats, string evmClaimAddress, EvmSendPolicy policy, IRfqTransport outgoingTransport, string? outgoingRfqId = null, SolverCard? outgoingCard = null, CancellationToken cancellationToken = default)
Parameters
walletIdstringamountSatslongevmClaimAddressstringpolicyEvmSendPolicyoutgoingTransportIRfqTransportoutgoingRfqIdstringoutgoingCardSolverCardcancellationTokenCancellationToken
Returns
CreateLightningAsync(string, long, string, EvmSendPolicy, IRfqTransport, IRfqTransport, string, string?, string?, SolverCard?, SolverCard?, CancellationToken)
Creates outgoing L first, then a Lightning invoice whose M claim pays L.
public Task<LightningToEvmRoute> CreateLightningAsync(string walletId, long amountSats, string evmClaimAddress, EvmSendPolicy policy, IRfqTransport outgoingTransport, IRfqTransport ingressTransport, string covclaimdPubKey, string? outgoingRfqId = null, string? ingressRfqId = null, SolverCard? outgoingCard = null, SolverCard? ingressCard = null, CancellationToken cancellationToken = default)
Parameters
walletIdstringamountSatslongevmClaimAddressstringpolicyEvmSendPolicyoutgoingTransportIRfqTransportingressTransportIRfqTransportcovclaimdPubKeystringoutgoingRfqIdstringingressRfqIdstringoutgoingCardSolverCardingressCardSolverCardcancellationTokenCancellationToken
Returns
CreateOnchainAsync(string, long, string, EvmSendPolicy, IRfqTransport, IRfqTransport, string, BitcoinAddress, string?, string?, SolverCard?, SolverCard?, CancellationToken)
Creates outgoing L first, then an L1 receive whose M claim pays L.
public Task<OnchainToEvmRoute> CreateOnchainAsync(string walletId, long amountSats, string evmClaimAddress, EvmSendPolicy policy, IRfqTransport outgoingTransport, IRfqTransport ingressTransport, string covclaimdPubKey, BitcoinAddress l1RefundAddress, string? outgoingRfqId = null, string? ingressRfqId = null, SolverCard? outgoingCard = null, SolverCard? ingressCard = null, CancellationToken cancellationToken = default)
Parameters
walletIdstringamountSatslongevmClaimAddressstringpolicyEvmSendPolicyoutgoingTransportIRfqTransportingressTransportIRfqTransportcovclaimdPubKeystringl1RefundAddressBitcoinAddressoutgoingRfqIdstringingressRfqIdstringoutgoingCardSolverCardingressCardSolverCardcancellationTokenCancellationToken