import { Observable } from 'rxjs';

import { WindowState } from '../types/window-state.type';
import { WindowIdle } from '../types/window-idle.type';
import { NotificationRequest } from '../models/notification';

export interface NativeService {
  notify(noti: NotificationRequest): void;
  closeAllNotify(): void;

  checkForUpdates(): Observable<boolean>;

  showImageViewer(): void;

  saveFile(buffer: Buffer, fileName: string, path?: string): Observable<string>;
  readFile(path: string): Observable<Buffer>;

  windowStateChanged(): Observable<WindowState>;
  windowClose(): void;
  windowMinimize(): void;
  windowMaximize(): void;

  idleStateChanged(): Observable<WindowIdle>;
}
