Global Type Definitions
Centralized type declarations for cross-module interfaces, window extensions for IPC communication, and Spotify API structures.
import { LogLevel } from "@/types/logging";import { StatisticsData } from "./types/statistics";import { DashboardSessionData, DashboardArtistData } from "./types/dashboard";import { DashboardTrackData } from "./types/dashboard";import { StatisticsSummary } from "./types/dashboard";import { SettingsSchema } from "./types/settings";import { PlaybackInfo, SkippedTrack } from "./types/spotify";import { AuthConfig } from "./types/auth";import { StatisticsAPI } from "./types/statistics-api";/** * Theme management interface * Provides methods for controlling UI appearance modes * * @notExported */interface ThemeModeContext { toggle: () => Promise<boolean>; dark: () => Promise<void>; light: () => Promise<void>; system: () => Promise<boolean>; current: () => Promise<"dark" | "light" | "system">;}/** * Electron window controls interface * Encapsulates window management operations * * @notExported */interface ElectronWindow { minimize: () => Promise<void>; maximize: () => Promise<void>; close: () => Promise<void>;}/** * Global window interface * * @notExported */declare global { interface Window { themeMode: ThemeModeContext; electronWindow: ElectronWindow; theme: { setTheme: (theme: string) => void; getTheme: () => string; }; /** * Statistics API for accessing skip metrics and patterns */ statisticsAPI: StatisticsAPI; /** * Spotify API bindings * IPC-bridged methods for interacting with Spotify services */ spotify: { // Authentication authenticate: ( credentials?: AuthConfig, forceAuth?: boolean, ) => Promise<boolean>; logout: () => Promise<boolean>; isAuthenticated: () => Promise<boolean>; // Playback getCurrentPlayback: () => Promise<PlaybackInfo | null>; // Skipped tracks openURL: (url: string) => Promise<boolean | void>; getSkippedTracks: () => Promise<SkippedTrack[]>; refreshSkippedTracks: () => Promise<SkippedTrack[]>; saveSkippedTracks: (tracks: SkippedTrack[]) => Promise<boolean>; updateSkippedTrack: (track: SkippedTrack) => Promise<boolean>; removeFromSkippedData: (trackId: string) => Promise<boolean>; // Track library management unlikeTrack: (trackId: string) => Promise<boolean>; // Settings saveSettings: (settings: SettingsSchema) => Promise<boolean>; getSettings: () => Promise<SettingsSchema>; resetSettings: () => Promise<boolean>; // Statistics getStatistics: () => Promise<StatisticsData>; clearStatistics: () => Promise<boolean>; // Dashboard statistics getStatisticsSummary: () => Promise<StatisticsSummary>; getRecentSkippedTracks: (limit?: number) => Promise<DashboardTrackData[]>; getTopSkippedArtists: (limit?: number) => Promise<DashboardArtistData[]>; getRecentSessions: (limit?: number) => Promise<DashboardSessionData[]>; exportStatistics: () => Promise<boolean>; clearAllStatistics: () => Promise<boolean>; // Logs saveLog: (message: string, level?: LogLevel) => Promise<boolean | void>; getLogs: (count?: number) => Promise<string[]>; getLogsFromFile: (selectedLogFile: string) => Promise<string[]>; getAvailableLogFiles: () => Promise< { name: string; mtime: number; displayName: string; }[] >; clearLogs: () => Promise<boolean>; openLogsDirectory: () => Promise<boolean>; openSkipsDirectory: () => Promise<boolean>; // App Control restartApp: () => Promise<boolean>; // Service startMonitoring: () => Promise<boolean>; stopMonitoring: () => Promise<boolean>; isMonitoringActive: () => Promise<boolean>; getMonitoringStatus: () => Promise<{ active: boolean; status: string; message?: string; details?: string; }>; // Playback Controls pausePlayback: () => Promise<boolean>; resumePlayback: () => Promise<boolean>; skipToPreviousTrack: () => Promise<boolean>; skipToNextTrack: () => Promise<boolean>; // Events onPlaybackUpdate: (callback: (data: PlaybackInfo) => void) => () => void; onMonitoringStatusChange: ( callback: (status: { status: string; message?: string; details?: string; }) => void, ) => () => void; }; }}// This export is necessary for TypeScript to recognize this as a moduleexport {}; Copy
import { LogLevel } from "@/types/logging";import { StatisticsData } from "./types/statistics";import { DashboardSessionData, DashboardArtistData } from "./types/dashboard";import { DashboardTrackData } from "./types/dashboard";import { StatisticsSummary } from "./types/dashboard";import { SettingsSchema } from "./types/settings";import { PlaybackInfo, SkippedTrack } from "./types/spotify";import { AuthConfig } from "./types/auth";import { StatisticsAPI } from "./types/statistics-api";/** * Theme management interface * Provides methods for controlling UI appearance modes * * @notExported */interface ThemeModeContext { toggle: () => Promise<boolean>; dark: () => Promise<void>; light: () => Promise<void>; system: () => Promise<boolean>; current: () => Promise<"dark" | "light" | "system">;}/** * Electron window controls interface * Encapsulates window management operations * * @notExported */interface ElectronWindow { minimize: () => Promise<void>; maximize: () => Promise<void>; close: () => Promise<void>;}/** * Global window interface * * @notExported */declare global { interface Window { themeMode: ThemeModeContext; electronWindow: ElectronWindow; theme: { setTheme: (theme: string) => void; getTheme: () => string; }; /** * Statistics API for accessing skip metrics and patterns */ statisticsAPI: StatisticsAPI; /** * Spotify API bindings * IPC-bridged methods for interacting with Spotify services */ spotify: { // Authentication authenticate: ( credentials?: AuthConfig, forceAuth?: boolean, ) => Promise<boolean>; logout: () => Promise<boolean>; isAuthenticated: () => Promise<boolean>; // Playback getCurrentPlayback: () => Promise<PlaybackInfo | null>; // Skipped tracks openURL: (url: string) => Promise<boolean | void>; getSkippedTracks: () => Promise<SkippedTrack[]>; refreshSkippedTracks: () => Promise<SkippedTrack[]>; saveSkippedTracks: (tracks: SkippedTrack[]) => Promise<boolean>; updateSkippedTrack: (track: SkippedTrack) => Promise<boolean>; removeFromSkippedData: (trackId: string) => Promise<boolean>; // Track library management unlikeTrack: (trackId: string) => Promise<boolean>; // Settings saveSettings: (settings: SettingsSchema) => Promise<boolean>; getSettings: () => Promise<SettingsSchema>; resetSettings: () => Promise<boolean>; // Statistics getStatistics: () => Promise<StatisticsData>; clearStatistics: () => Promise<boolean>; // Dashboard statistics getStatisticsSummary: () => Promise<StatisticsSummary>; getRecentSkippedTracks: (limit?: number) => Promise<DashboardTrackData[]>; getTopSkippedArtists: (limit?: number) => Promise<DashboardArtistData[]>; getRecentSessions: (limit?: number) => Promise<DashboardSessionData[]>; exportStatistics: () => Promise<boolean>; clearAllStatistics: () => Promise<boolean>; // Logs saveLog: (message: string, level?: LogLevel) => Promise<boolean | void>; getLogs: (count?: number) => Promise<string[]>; getLogsFromFile: (selectedLogFile: string) => Promise<string[]>; getAvailableLogFiles: () => Promise< { name: string; mtime: number; displayName: string; }[] >; clearLogs: () => Promise<boolean>; openLogsDirectory: () => Promise<boolean>; openSkipsDirectory: () => Promise<boolean>; // App Control restartApp: () => Promise<boolean>; // Service startMonitoring: () => Promise<boolean>; stopMonitoring: () => Promise<boolean>; isMonitoringActive: () => Promise<boolean>; getMonitoringStatus: () => Promise<{ active: boolean; status: string; message?: string; details?: string; }>; // Playback Controls pausePlayback: () => Promise<boolean>; resumePlayback: () => Promise<boolean>; skipToPreviousTrack: () => Promise<boolean>; skipToNextTrack: () => Promise<boolean>; // Events onPlaybackUpdate: (callback: (data: PlaybackInfo) => void) => () => void; onMonitoringStatusChange: ( callback: (status: { status: string; message?: string; details?: string; }) => void, ) => () => void; }; }}// This export is necessary for TypeScript to recognize this as a moduleexport {};
Description
Global Type Definitions
Centralized type declarations for cross-module interfaces, window extensions for IPC communication, and Spotify API structures.
Source