-
Notifications
You must be signed in to change notification settings - Fork 77
Expand file tree
/
Copy pathpayjoin_policy.dart
More file actions
55 lines (49 loc) · 1.69 KB
/
Copy pathpayjoin_policy.dart
File metadata and controls
55 lines (49 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import 'package:primitives/primitives.dart';
final class PayjoinPolicy {
static final minimumAllowedAmount = Sats.fromInt(1000);
static final maximumAllowedAmount = Sats.fromInt(21000000);
static const minimumSessionLifetime = Duration(minutes: 1);
static const maximumSessionLifetime = Duration(hours: 24);
final bool enabled;
final Sats minimumAmount;
final Duration sessionLifetime;
PayjoinPolicy({
required this.enabled,
required this.minimumAmount,
required this.sessionLifetime,
}) {
if (minimumAmount.compareTo(minimumAllowedAmount) < 0 ||
minimumAmount.compareTo(maximumAllowedAmount) > 0) {
throw ArgumentError.value(
minimumAmount,
'minimumAmount',
'must be between $minimumAllowedAmount and $maximumAllowedAmount sats',
);
}
if (sessionLifetime < minimumSessionLifetime ||
sessionLifetime > maximumSessionLifetime ||
sessionLifetime.inMicroseconds % Duration.microsecondsPerSecond != 0) {
throw ArgumentError.value(
sessionLifetime,
'sessionLifetime',
'must be a whole number of seconds between $minimumSessionLifetime '
'and $maximumSessionLifetime',
);
}
}
factory PayjoinPolicy.defaults() => PayjoinPolicy(
enabled: false,
minimumAmount: Sats.fromInt(10000),
sessionLifetime: maximumSessionLifetime,
);
PayjoinPolicy copyWith({
bool? enabled,
Sats? minimumAmount,
Duration? sessionLifetime,
}) => PayjoinPolicy(
enabled: enabled ?? this.enabled,
minimumAmount: minimumAmount ?? this.minimumAmount,
sessionLifetime: sessionLifetime ?? this.sessionLifetime,
);
}
enum PayjoinRelayHealth { available, unavailable }