61 lines
1.6 KiB
Dart
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;
|
|
}
|