Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion lib/features/bullnym/domain/bullnym_fiat_settlement.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,17 @@ enum BullnymSettlementLegStatus {
unknown,
}

/// Why a configured fiat conversion was overridden to all-Bitcoin.
/// Why a configured fiat conversion was overridden to all-Bitcoin. `unknown`
/// covers a reason this client version does not recognize — it is NOT a wire
/// value, so every reason the contract defines must be mapped explicitly.
enum BullnymFiatConversionOverrideReason {
belowMinimum,
invalidSplit,
conversionUnavailable,

/// The server could not confirm the outcome of a conversion attempt, so the
/// funds stayed in Bitcoin (contract 0.3 `ambiguous_create`).
ambiguousCreate,
unknown,
}

Expand Down Expand Up @@ -310,6 +316,7 @@ class BullnymGetPaidSettlement {
'invalid_split' => BullnymFiatConversionOverrideReason.invalidSplit,
'conversion_unavailable' =>
BullnymFiatConversionOverrideReason.conversionUnavailable,
'ambiguous_create' => BullnymFiatConversionOverrideReason.ambiguousCreate,
_ => BullnymFiatConversionOverrideReason.unknown,
};

Expand Down
10 changes: 10 additions & 0 deletions lib/features/get_paid/domain/get_paid_settlement.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ enum GetPaidFiatOverrideReason {
belowMinimum,
invalidSplit,
conversionUnavailable,

/// A conversion attempt whose outcome the server could not confirm, so the
/// funds stayed in Bitcoin.
ambiguousCreate,
unknown,
}

Expand Down Expand Up @@ -52,10 +56,16 @@ class GetPaidFiatSettlementLeg {
/// The Bitcoin-wallet portion of a mixed settlement.
class GetPaidBitcoinSettlementLeg {
final int amountSat;

/// The server-named network this leg settles on (version one settles Bitcoin
/// legs on Liquid only; the strict parser rejects any other value, so an
/// unrecognized network never reaches here as a definite leg).
final String network;
final GetPaidSettlementLegStatus status;

const GetPaidBitcoinSettlementLeg({
required this.amountSat,
required this.network,
required this.status,
});
}
Expand Down
3 changes: 3 additions & 0 deletions lib/features/get_paid/domain/get_paid_settlement_mapper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ GetPaidFiatSettlementLeg _fiatLeg(BullnymFiatSettlementLeg leg) =>
GetPaidBitcoinSettlementLeg _bitcoinLeg(BullnymBitcoinSettlementLeg leg) =>
GetPaidBitcoinSettlementLeg(
amountSat: leg.amountSat,
network: leg.network,
status: _legStatus(leg.status),
);

Expand All @@ -66,6 +67,8 @@ GetPaidFiatOverrideReason _overrideReason(
GetPaidFiatOverrideReason.invalidSplit,
BullnymFiatConversionOverrideReason.conversionUnavailable =>
GetPaidFiatOverrideReason.conversionUnavailable,
BullnymFiatConversionOverrideReason.ambiguousCreate =>
GetPaidFiatOverrideReason.ambiguousCreate,
BullnymFiatConversionOverrideReason.unknown =>
GetPaidFiatOverrideReason.unknown,
};
Loading
Loading