Files
sxchnge/frontend/packages/sxchnge_kyc/lib/src/models/limits.dart
T

61 lines
1.6 KiB
Dart

enum AccountTier { basic, verified }
enum LimitPeriod { day, month }
class VisibleLimit {
const VisibleLimit({
required this.period,
required this.currency,
required this.basicMinor,
required this.verifiedMinor,
required this.currentMinor,
required this.remainingMinor,
required this.usedMinor,
required this.reservedMinor,
});
final LimitPeriod period;
final String currency;
final int basicMinor;
final int verifiedMinor;
final int currentMinor;
final int remainingMinor;
final int usedMinor;
final int reservedMinor;
/// Presentation only: remaining capacity and payment authorization stay server-owned.
double get occupiedFraction => currentMinor <= 0
? 0
: ((usedMinor + reservedMinor) / currentMinor).clamp(0.0, 1.0);
}
class Limits {
Limits({
required this.tier,
required List<VisibleLimit> rows,
required this.simulated,
this.profileRef,
List<PolicyLimit> entries = const [],
}) : rows = List.unmodifiable(rows),
entries = List.unmodifiable(entries);
final AccountTier tier;
final List<VisibleLimit> rows;
final bool simulated;
final String? profileRef;
final List<PolicyLimit> entries;
}
/// Authoritative policy amounts in major units. Keep decimal strings intact,
/// including currencies whose precision differs from fiat's common two digits.
class PolicyLimit {
const PolicyLimit({
required this.operation,
required this.period,
required this.currency,
required this.cap,
required this.remaining,
required this.used,
required this.reserved,
});
final String operation, period, currency, cap, remaining, used, reserved;
}