namespace Journal.Core.Dtos;

internal sealed record VaultInitializePayload(string Password, string VaultDirectory);
internal sealed record VaultPayload(string Password, string VaultDirectory);
internal sealed record ClearDataPayload();
internal sealed record EntryListPayload();
internal sealed record EntryLoadPayload(string FilePath);
public sealed record EntrySavePayload(string Content, string? FilePath = null, string? Mode = null, string? FileName = null);
public sealed record EntryListItem(string FileName, string FilePath);
public sealed record EntryLoadResult(string FileName, string FilePath, JournalEntryDto Entry);
public sealed record EntrySaveResult(string FilePath);
internal sealed record EntryDeletePayload(string FilePath);
internal sealed record EntryTemplateListPayload();
internal sealed record EntryTemplateLoadPayload(string FilePath);
internal sealed record EntryTemplateDeletePayload(string FilePath);
public sealed record EntryTemplateLoadResult(string FileName, string FilePath, string Content);
public sealed record EntryTemplateSavePayload(string Name, string Content, string? FilePath = null);
internal sealed record DatabasePayload(string Password);
internal sealed record AiSummarizeEntryPayload(string Content, string? FileStem = null);
internal sealed record AiSummarizeAllPayload(List<string>? Entries);
internal sealed record AiChatPayload(string Prompt);
internal sealed record AiEmbedPayload(string Content);
internal sealed record CoachDailyPayload(string? DateLocal = null, CoachPreferencesDto? Preferences = null, List<string>? RecentEntries = null, List<string>? RecentFragments = null);
internal sealed record CoachEveningPayload(string? DateLocal = null, CoachPreferencesDto? Preferences = null, List<string>? RecentEntries = null, List<string>? RecentFragments = null);
internal sealed record CoachWeeklyPayload(string? WeekStartLocal = null, string? WeekEndLocal = null, CoachPreferencesDto? Preferences = null, List<string>? RecentEntries = null, List<string>? RecentFragments = null);
internal sealed record SpeechTranscribePayload(
    string? AudioBase64 = null,
    string? Audio_Base64 = null,
    string? Engine = null,
    string? WhisperModel = null,
    string? Whisper_Model = null,
    string? Text = null,
    int? SimulateDelayMs = null,
    int? Simulate_Delay_Ms = null);
internal sealed record S2TPollPayload(int? MaxItems = null);
internal sealed record ConversationCreatePayload(string Title);
internal sealed record ConversationUpdatePayload(string? Title);
internal sealed record ConversationChatPayload(string ConversationId, string Prompt);
internal sealed record SearchEntriesPayload(
    string? Query = null,
    string? Section = null,
    string? StartDate = null,
    string? EndDate = null,
    List<string>? Tags = null,
    List<string>? Types = null,
    List<string>? Checked = null,
    List<string>? Unchecked = null);
