/**
 * Rendererプロセスから呼び出すMainプロセスのAPI
 */
export interface MainApi {
  /**
   * テキストファイルを保存します
   * @param file ファイルパス
   * @param contents テキスト
   * @return 成功したかどうか
   */
  saveTextFile(file: string, contents: string): Promise<boolean>;

  /**
   * テキストファイルを読み込みます
   * @param file ファイル名
   * @return テキスト
   */
  readTextFile(file: string): Promise<string | null>;
  /**
   * 一時ディレクトリを作成する
   * @return ディレクトリのパス
   */
  makeTmpDirectory(): Promise<string>;
  /**
   * ファイルをコンパイルします
   * @param file コンパイルするファイル
   * @param output 出力ファイル（拡張子は無し）
   * @return 出力ファイル名
   */
  compile(file: string, output: string): Promise<boolean>;

  /**
   * 子プロセスを起動します
   * @param file 実行ファイル名
   * @return プロセスの終了したときの状態
   */
  exec(file: string): Promise<number>;

  /**
   * ファイルオープンダイアログを表示する
   */
  showOpenFileDialog(option: {
    title?: string;
    defaultPath?: string;
    filters?: { name: string; extensions: string[] }[];
  }): Promise<string | null>;

  /**
   * ファイルオープンダイアログを表示する
   */
  showSaveFileDialog(option: {
    title?: string;
    defaultPath?: string;
    filters?: { name: string; extensions: string[] }[];
  }): Promise<string | null>;
}
