Add optional KYC flow and service-backed account limits
This commit is contained in:
1 parent
61ccfc1844
commit
3397f04ab7
38 files changed
+3443
-36
No files matched your search
@@ -0,0 +1,54 @@
|
||||
import 'dart:typed_data';
|
||||
|
||||
enum IdentityStatus { unverified, pending, approved, changesRequested, denied }
|
||||
|
||||
enum ReviewReason {
|
||||
passportUnreadable,
|
||||
selfieUnreadable,
|
||||
passportExpired,
|
||||
unableToVerify,
|
||||
}
|
||||
|
||||
enum PhotoKind { passport, selfie }
|
||||
|
||||
enum KycError {
|
||||
unavailable,
|
||||
internal,
|
||||
permission,
|
||||
format,
|
||||
tooLarge,
|
||||
unreadable,
|
||||
tooSmall,
|
||||
incomplete,
|
||||
sessionExpired,
|
||||
rateLimited,
|
||||
conflict,
|
||||
}
|
||||
|
||||
class KycException implements Exception {
|
||||
const KycException(this.code);
|
||||
final KycError code;
|
||||
}
|
||||
|
||||
class Identity {
|
||||
const Identity({
|
||||
required this.status,
|
||||
this.reason,
|
||||
this.submissionId,
|
||||
this.simulated = false,
|
||||
});
|
||||
final IdentityStatus status;
|
||||
final ReviewReason? reason;
|
||||
final String? submissionId;
|
||||
final bool simulated;
|
||||
bool get canSubmit =>
|
||||
status == IdentityStatus.unverified ||
|
||||
status == IdentityStatus.changesRequested;
|
||||
}
|
||||
|
||||
/// Ephemeral image data only. Never serialize this model into storage or telemetry.
|
||||
class Photo {
|
||||
Photo(Uint8List bytes)
|
||||
: bytes = Uint8List.fromList(bytes).asUnmodifiableView();
|
||||
final Uint8List bytes;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
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,
|
||||
});
|
||||
final LimitPeriod period;
|
||||
final String currency;
|
||||
final int basicMinor;
|
||||
final int verifiedMinor;
|
||||
final int currentMinor;
|
||||
final int remainingMinor;
|
||||
}
|
||||
|
||||
class Limits {
|
||||
Limits({
|
||||
required this.tier,
|
||||
required List<VisibleLimit> rows,
|
||||
required this.simulated,
|
||||
}) : rows = List.unmodifiable(rows);
|
||||
final AccountTier tier;
|
||||
final List<VisibleLimit> rows;
|
||||
final bool simulated;
|
||||
}
|
||||
Reference in new issue
Block a user