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 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 blacklistFactors, required List audiences, required List 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 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 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? createdResponse, }) = _SnAuthFactor; factory SnAuthFactor.fromJson(Map 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 sessions, // Not from backend, used for UI @Default(false) bool isCurrent, }) = _SnAuthDevice; factory SnAuthDevice.fromJson(Map json) => _$SnAuthDeviceFromJson(json); }