Window API interface - available in renderer process

interface SpotifyAPI {
    getLoginStored: () => Promise<
        null
        | { username: string; password: string },
    >;
    storeLogin: (username: string, password: string) => Promise<void>;
    clearLogin: () => Promise<void>;
    saveSkippedTracks: (tracks: SkippedTrack[]) => Promise<void>;
    getAllSkippedTracks: () => Promise<SkippedTrack[]>;
    getLoginConfig: () => Promise<null | LoginConfig>;
    saveLoginConfig: (config: LoginConfig) => Promise<void>;
    saveLog: (message: string, level: LogLevel) => Promise<void>;
    getStatistics: () => Promise<StatisticsData>;
    clearStatistics: () => Promise<boolean>;
    exitApp: () => Promise<void>;
    minimizeApp: () => Promise<void>;
    maximizeApp: () => Promise<void>;
    openURL: (url: string) => Promise<void>;
    showItemInFolder: (path: string) => Promise<void>;
    login: (username: string, password: string) => Promise<LoginResult>;
    logout: () => Promise<void>;
    play: () => Promise<void>;
    pause: () => Promise<void>;
    next: () => Promise<void>;
    previous: () => Promise<void>;
    authenticate: (
        credentials?: SpotifyCredentials,
        forceAuth?: boolean,
    ) => Promise<boolean>;
    isAuthenticated: () => Promise<boolean>;
    getCurrentPlayback: () => Promise<null | SpotifyPlaybackInfo>;
    getSkippedTracks: () => Promise<SkippedTrack[]>;
    refreshSkippedTracks: () => Promise<SkippedTrack[]>;
    updateSkippedTrack: (track: SkippedTrack) => Promise<boolean>;
    removeFromSkippedData: (trackId: string) => Promise<boolean>;
    unlikeTrack: (trackId: string) => Promise<boolean>;
    saveSettings: (settings: SpotifySettings) => Promise<boolean>;
    getSettings: () => Promise<SpotifySettings>;
    resetSettings: () => Promise<boolean>;
    getLogs: (count?: number) => Promise<string[]>;
    clearLogs: () => Promise<boolean>;
    openLogsDirectory: () => Promise<boolean>;
    openSkipsDirectory: () => Promise<boolean>;
    getAvailableLogFiles: () => Promise<
        { name: string; mtime: number; displayName: string }[],
    >;
    getLogsFromFile: (fileName: string, count?: number) => Promise<string[]>;
    restartApp: () => Promise<boolean>;
    startMonitoring: () => Promise<boolean>;
    stopMonitoring: () => Promise<boolean>;
    isMonitoringActive: () => Promise<boolean>;
    getMonitoringStatus: () => Promise<
        { active: boolean; status: string; message?: string; details?: string },
    >;
    pausePlayback: () => Promise<boolean>;
    resumePlayback: () => Promise<boolean>;
    skipToPreviousTrack: () => Promise<boolean>;
    skipToNextTrack: () => Promise<boolean>;
    onPlaybackUpdate: (
        callback: (data: SpotifyPlaybackInfo) => void,
    ) => () => void;
    onAuthStatusChange: (callback: (status: AuthStatus) => void) => void;
    onPlaybackStatusChange: (callback: (status: PlaybackState) => void) => void;
    onPlaybackTrackChange: (callback: (track: null | Track) => void) => void;
    onTrackSkipped: (callback: (skippedTrack: SkippedTrack) => void) => void;
    onMonitoringStatusChange: (
        callback: (
            status: { status: string; message?: string; details?: string },
        ) => void,
    ) => () => void;
}

Properties

getLoginStored: () => Promise<null | { username: string; password: string }>
storeLogin: (username: string, password: string) => Promise<void>
clearLogin: () => Promise<void>
saveSkippedTracks: (tracks: SkippedTrack[]) => Promise<void>
getAllSkippedTracks: () => Promise<SkippedTrack[]>
getLoginConfig: () => Promise<null | LoginConfig>
saveLoginConfig: (config: LoginConfig) => Promise<void>
saveLog: (message: string, level: LogLevel) => Promise<void>
getStatistics: () => Promise<StatisticsData>
clearStatistics: () => Promise<boolean>
exitApp: () => Promise<void>
minimizeApp: () => Promise<void>
maximizeApp: () => Promise<void>
openURL: (url: string) => Promise<void>
showItemInFolder: (path: string) => Promise<void>
login: (username: string, password: string) => Promise<LoginResult>
logout: () => Promise<void>
play: () => Promise<void>
pause: () => Promise<void>
next: () => Promise<void>
previous: () => Promise<void>
authenticate: (
    credentials?: SpotifyCredentials,
    forceAuth?: boolean,
) => Promise<boolean>
isAuthenticated: () => Promise<boolean>
getCurrentPlayback: () => Promise<null | SpotifyPlaybackInfo>
getSkippedTracks: () => Promise<SkippedTrack[]>
refreshSkippedTracks: () => Promise<SkippedTrack[]>
updateSkippedTrack: (track: SkippedTrack) => Promise<boolean>
removeFromSkippedData: (trackId: string) => Promise<boolean>
unlikeTrack: (trackId: string) => Promise<boolean>
saveSettings: (settings: SpotifySettings) => Promise<boolean>
getSettings: () => Promise<SpotifySettings>
resetSettings: () => Promise<boolean>
getLogs: (count?: number) => Promise<string[]>
clearLogs: () => Promise<boolean>
openLogsDirectory: () => Promise<boolean>
openSkipsDirectory: () => Promise<boolean>
getAvailableLogFiles: () => Promise<
    { name: string; mtime: number; displayName: string }[],
>
getLogsFromFile: (fileName: string, count?: number) => Promise<string[]>
restartApp: () => Promise<boolean>
startMonitoring: () => Promise<boolean>
stopMonitoring: () => Promise<boolean>
isMonitoringActive: () => Promise<boolean>
getMonitoringStatus: () => Promise<
    { active: boolean; status: string; message?: string; details?: string },
>
pausePlayback: () => Promise<boolean>
resumePlayback: () => Promise<boolean>
skipToPreviousTrack: () => Promise<boolean>
skipToNextTrack: () => Promise<boolean>
onPlaybackUpdate: (callback: (data: SpotifyPlaybackInfo) => void) => () => void
onAuthStatusChange: (callback: (status: AuthStatus) => void) => void
onPlaybackStatusChange: (callback: (status: PlaybackState) => void) => void
onPlaybackTrackChange: (callback: (track: null | Track) => void) => void
onTrackSkipped: (callback: (skippedTrack: SkippedTrack) => void) => void
onMonitoringStatusChange: (
    callback: (
        status: { status: string; message?: string; details?: string },
    ) => void,
) => () => void