Table of Contents

Class RfqQuote<TProfile>

Namespace
NArk.ArkadeIntents.Rfq
Assembly
NArk.ArkadeIntents.dll

The solver's quote. Its binding fieldsSolverPubkey, RefundLocktime, ValidUntil, FromAmount and ToAmount — are the values a client may trust; everything in Profile is compare-only or informational, with one exception named there (an HTLC send quote's refund_without_receiver_delay, which the client builds into its script because it is the one number the client cannot derive).

public sealed class RfqQuote<TProfile>

Type Parameters

TProfile

The corridor's quote-profile shape.

Inheritance
RfqQuote<TProfile>
Inherited Members

Remarks

The client derives the settlement contract from its own data and compares. That is what makes a wrong or malicious solver able to produce only terms the client declines, never a contract that traps funds.

Properties

CarrierSats

The dust sats an Arkade asset deposit rides on, when the quote publishes them.

[JsonConverter(typeof(AtomicAmountConverter))]
public BigInteger? CarrierSats { get; init; }

Property Value

BigInteger?

Remarks

Not a fee, and already netted into the two amounts above: returned inside ToAtomicAmount when the payout leg is sats (the client fronted the carrier on its own deposit) and charged out of FromAtomicAmount when the payout leg is an asset (the solver fronts it at output 0).

What it changes is what a client actually sends: an asset deposit carries FromAtomicAmount of the asset plus this many sats. Absent means zero, and only the Arkade-to-Arkade class publishes it at all.

FromAmount

What the client pays, in atomic units of the from-leg.

[JsonIgnore]
public long FromAmount { get; init; }

Property Value

long

FromAtomicAmount

The from-leg amount without narrowing to the sats API's Int64 range.

[JsonPropertyName("from_amount")]
[JsonConverter(typeof(AtomicAmountConverter))]
public BigInteger FromAtomicAmount { get; init; }

Property Value

BigInteger

MaxFromAmount

Optional upper bound on the onchain receive deposit, in atomic units.

[JsonConverter(typeof(AtomicAmountConverter))]
public BigInteger? MaxFromAmount { get; init; }

Property Value

BigInteger?

MinFromAmount

Optional lower bound on the onchain receive deposit, in atomic units.

[JsonConverter(typeof(AtomicAmountConverter))]
public BigInteger? MinFromAmount { get; init; }

Property Value

BigInteger?

Pair

The pair quoted.

public string? Pair { get; init; }

Property Value

string

Profile

Compare-only corridor-specific fields.

public TProfile? Profile { get; init; }

Property Value

TProfile

RefundLocktime

Unix seconds at which the client's refund path opens. HTLC-class profiles only — the atomic class has nothing to refund.

public long RefundLocktime { get; init; }

Property Value

long

RfqId

The correlation id this quote answers.

public string? RfqId { get; init; }

Property Value

string

SolverPubkey

The solver's x-only settlement key (hex).

public required string SolverPubkey { get; init; }

Property Value

string

ToAmount

What the client receives, in atomic units of the to-leg. The solver's fee is the spread.

[JsonIgnore]
public long ToAmount { get; init; }

Property Value

long

ToAtomicAmount

The to-leg amount without narrowing to the sats API's Int64 range.

[JsonPropertyName("to_amount")]
[JsonConverter(typeof(AtomicAmountConverter))]
public BigInteger ToAtomicAmount { get; init; }

Property Value

BigInteger

Type

Envelope discriminator.

public string? Type { get; init; }

Property Value

string

V

Envelope version.

public int V { get; init; }

Property Value

int

ValidUntil

Unix seconds until which the terms bind, provided funding is observed in time.

public long ValidUntil { get; init; }

Property Value

long