import 'package:freezed_annotation/freezed_annotation.dart'; part 'auth.freezed.dart'; part 'auth.g.dart'; @freezed sealed class AppToken with _$AppToken { const factory AppToken({required String token}) = _AppToken; factory AppToken.fromJson(Map<String, dynamic> json) => _$AppTokenFromJson(json); } @freezed sealed class SnAuthChallenge with _$SnAuthChallenge { const factory SnAuthChallenge({ required String id, required DateTime expiredAt, required int stepRemain, required int stepTotal, required int failedAttempts, required int platform, required int type, required List<String> blacklistFactors, required List<dynamic> audiences, required List<dynamic> scopes, required String ipAddress, required String userAgent, required String deviceId, required String? nonce, required String? location, required String accountId, required DateTime createdAt, required DateTime updatedAt, required DateTime? deletedAt, }) = _SnAuthChallenge; factory SnAuthChallenge.fromJson(Map<String, dynamic> json) => _$SnAuthChallengeFromJson(json); } @freezed sealed class SnAuthSession with _$SnAuthSession { const factory SnAuthSession({ required String id, required String? label, required DateTime lastGrantedAt, required DateTime expiredAt, required String accountId, required String challengeId, required SnAuthChallenge challenge, required DateTime createdAt, required DateTime updatedAt, required DateTime? deletedAt, }) = _SnAuthSession; factory SnAuthSession.fromJson(Map<String, dynamic> json) => _$SnAuthSessionFromJson(json); } @freezed sealed class SnAuthFactor with _$SnAuthFactor { const factory SnAuthFactor({ required String id, required int type, required DateTime createdAt, required DateTime updatedAt, required DateTime? deletedAt, required DateTime? expiredAt, required DateTime? enabledAt, required int trustworthy, required Map<String, dynamic>? createdResponse, }) = _SnAuthFactor; factory SnAuthFactor.fromJson(Map<String, dynamic> json) => _$SnAuthFactorFromJson(json); } @freezed sealed class SnAuthDevice with _$SnAuthDevice { const factory SnAuthDevice({ required dynamic label, required String userAgent, required String deviceId, required int platform, required List<SnAuthSession> sessions, // Not from backend, used for UI @Default(false) bool isCurrent, }) = _SnAuthDevice; factory SnAuthDevice.fromJson(Map<String, dynamic> json) => _$SnAuthDeviceFromJson(json); }