import 'package:freezed_annotation/freezed_annotation.dart'; import 'enums.dart'; import 'lora_secimi.dart'; part 'karakter_kilidi.freezed.dart'; part 'karakter_kilidi.g.dart'; /// Karakter Kilidi — yüz/ağız tutarlılığı için tek master toggle altında /// best-frame, face-swap, face-restore, sabit seed, LoRA, lipsync ayarları. @freezed class KarakterKilidi with _$KarakterKilidi { const factory KarakterKilidi({ @Default(true) bool aktif, // ─── Sabit seed ────────────────────────────────────────────────────── int? sabitSeed, // ─── Face Swap ─────────────────────────────────────────────────────── @Default(true) bool faceSwapAktif, @Default(80) int faceSwapBlend, // 0..100 String? faceSwapKaynakYolu, // ─── Face Restore ──────────────────────────────────────────────────── @Default(FaceRestoreSaglayici.gfpgan) FaceRestoreSaglayici faceRestoreSaglayici, @Default(60) int faceRestoreGuc, // 0..100 // ─── Best-frame seçimi ─────────────────────────────────────────────── @Default(8) int bestFrameAdaySayisi, // 4 | 8 | 16 // ─── Karakter LoRA ─────────────────────────────────────────────────── LoraSecimi? karakterLora, // ─── Çoklu yüz açısı (front/sol/sağ profil) ───────────────────────── @Default(false) bool cokluYuzAcisi, // ─── Lipsync ───────────────────────────────────────────────────────── @Default(LipsyncMod.infiniteTalkSingle) LipsyncMod lipsyncMod, @Default(0.85) double lipsyncKuvveti, // 0..1 @Default(true) bool vad, // audio_prompt_type=AVN için VAD // ─── Vokal ayırma ──────────────────────────────────────────────────── @Default(true) bool vokalAyirma, @Default('audio_separator') String vokalAyiraciSaglayicisi, DateTime? olusturma, DateTime? guncelleme, }) = _KarakterKilidi; factory KarakterKilidi.fromJson(Map j) => _$KarakterKilidiFromJson(j); }