export interface Track { id: string; title: string; artist: string; duration: number; // in seconds } export interface Playlist { id: string; title: string; trackCount: number; thumbnail?: string; lastUpdated: string; tracks?: Track[]; // Optional detailed track list } export enum ServerType { LOCAL = 'LOCAL', CLOUD = 'CLOUD' } export enum SyncStrategy { LOCAL_OVERWRITE = 'LOCAL_OVERWRITE', CLOUD_OVERWRITE = 'CLOUD_OVERWRITE', MERGE_LOCAL = 'MERGE_LOCAL', MERGE_CLOUD = 'MERGE_CLOUD' } export enum SyncState { IDLE = 'IDLE', SYNCING = 'SYNCING', SUCCESS = 'SUCCESS', ERROR = 'ERROR' } export interface RegexReplacement { id: string; pattern: string; replacement: string; } export enum ScheduleMode { DISABLED = 'DISABLED', CRON = 'CRON', DAILY = 'DAILY', WEEKLY = 'WEEKLY' } export interface ScheduleSettings { mode: ScheduleMode; cronExpression: string; dailyTime: string; weeklyDays: number[]; // 0 = Sunday, 1 = Monday, etc. weeklyTime: string; autoWatch: boolean; } export interface PlexLibrary { id: string; title: string; type: string; } export interface PlexServerConnection { isConnected: boolean; name?: string; ip?: string; port?: number; libraryName?: string; libraries?: PlexLibrary[]; } export interface PlexConnectionSettings { protocol: 'http' | 'https'; address: string; port: string; token: string; username?: string; password?: string; timeout?: number; // in seconds } export interface ApiResponse { data: T; status: 'success' | 'error'; message?: string; }