/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
import { MessageBoxOptions, MessageBoxReturnValue, OpenDevToolsOptions, OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue } from 'electron';
import { Event } from "../../../base/common/event.mjs";
import { Disposable } from "../../../base/common/lifecycle.mjs";
import { AddFirstParameterToFunctions } from "../../../base/common/types.mjs";
import { URI } from "../../../base/common/uri.mjs";
import { MouseInputEvent } from "../../../base/parts/sandbox/common/electronTypes.mjs";
import { ISerializableCommandAction } from "../../action/common/action.mjs";
import { INativeOpenDialogOptions } from "../../dialogs/common/dialogs.mjs";
import { IDialogMainService } from "../../dialogs/electron-main/dialogMainService.mjs";
import { IEnvironmentMainService } from "../../environment/electron-main/environmentMainService.mjs";
import { ILifecycleMainService } from "../../lifecycle/electron-main/lifecycleMainService.mjs";
import { ILogService } from "../../log/common/log.mjs";
import { ICommonNativeHostService, IOSProperties, IOSStatistics } from "../common/native.mjs";
import { IProductService } from "../../product/common/productService.mjs";
import { ISharedProcess } from "../../sharedProcess/node/sharedProcess.mjs";
import { IPartsSplash } from "../../theme/common/themeService.mjs";
import { IThemeMainService } from "../../theme/electron-main/themeMainService.mjs";
import { IColorScheme, IOpenedWindow, IOpenEmptyWindowOptions, IOpenWindowOptions, IWindowOpenable } from "../../window/common/window.mjs";
import { IWindowsMainService } from "../../windows/electron-main/windows.mjs";
import { IWorkspacesManagementMainService } from "../../workspaces/electron-main/workspacesManagementMainService.mjs";
import { VSBuffer } from "../../../base/common/buffer.mjs";
import { IV8Profile } from "../../profiling/common/profiling.mjs";
import { IStateMainService } from "../../state/electron-main/state.mjs";
export interface INativeHostMainService extends AddFirstParameterToFunctions<ICommonNativeHostService, Promise<unknown>, number | undefined> {
}
export declare const INativeHostMainService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<INativeHostMainService>;
export declare class NativeHostMainService extends Disposable implements INativeHostMainService {
    private sharedProcess;
    private readonly windowsMainService;
    private readonly dialogMainService;
    private readonly lifecycleMainService;
    private readonly environmentMainService;
    private readonly logService;
    private readonly productService;
    private readonly themeMainService;
    private readonly stateMainService;
    private readonly workspacesManagementMainService;
    readonly _serviceBrand: undefined;
    constructor(sharedProcess: ISharedProcess, windowsMainService: IWindowsMainService, dialogMainService: IDialogMainService, lifecycleMainService: ILifecycleMainService, environmentMainService: IEnvironmentMainService, logService: ILogService, productService: IProductService, themeMainService: IThemeMainService, stateMainService: IStateMainService, workspacesManagementMainService: IWorkspacesManagementMainService);
    get windowId(): never;
    readonly onDidOpenWindow: Event<number>;
    readonly onDidTriggerSystemContextMenu: Event<{
        windowId: number;
        x: number;
        y: number;
    }>;
    readonly onDidMaximizeWindow: Event<number>;
    readonly onDidUnmaximizeWindow: Event<number>;
    readonly onDidBlurWindow: Event<number>;
    readonly onDidFocusWindow: Event<number>;
    readonly onDidResumeOS: Event<unknown>;
    readonly onDidChangeColorScheme: Event<IColorScheme>;
    private readonly _onDidChangePassword;
    readonly onDidChangePassword: Event<{
        account: string;
        service: string;
    }>;
    readonly onDidChangeDisplay: Event<void>;
    getWindows(): Promise<IOpenedWindow[]>;
    getWindowCount(windowId: number | undefined): Promise<number>;
    getActiveWindowId(windowId: number | undefined): Promise<number | undefined>;
    openWindow(windowId: number | undefined, options?: IOpenEmptyWindowOptions): Promise<void>;
    openWindow(windowId: number | undefined, toOpen: IWindowOpenable[], options?: IOpenWindowOptions): Promise<void>;
    private doOpenWindow;
    private doOpenEmptyWindow;
    toggleFullScreen(windowId: number | undefined): Promise<void>;
    handleTitleDoubleClick(windowId: number | undefined): Promise<void>;
    isMaximized(windowId: number | undefined): Promise<boolean>;
    maximizeWindow(windowId: number | undefined): Promise<void>;
    unmaximizeWindow(windowId: number | undefined): Promise<void>;
    minimizeWindow(windowId: number | undefined): Promise<void>;
    updateWindowControls(windowId: number | undefined, options: {
        height?: number;
        backgroundColor?: string;
        foregroundColor?: string;
    }): Promise<void>;
    focusWindow(windowId: number | undefined, options?: {
        windowId?: number;
        force?: boolean;
    }): Promise<void>;
    setMinimumSize(windowId: number | undefined, width: number | undefined, height: number | undefined): Promise<void>;
    saveWindowSplash(windowId: number | undefined, splash: IPartsSplash): Promise<void>;
    installShellCommand(windowId: number | undefined): Promise<void>;
    uninstallShellCommand(windowId: number | undefined): Promise<void>;
    private getShellCommandLink;
    showMessageBox(windowId: number | undefined, options: MessageBoxOptions): Promise<MessageBoxReturnValue>;
    showSaveDialog(windowId: number | undefined, options: SaveDialogOptions): Promise<SaveDialogReturnValue>;
    showOpenDialog(windowId: number | undefined, options: OpenDialogOptions): Promise<OpenDialogReturnValue>;
    private toBrowserWindow;
    pickFileFolderAndOpen(windowId: number | undefined, options: INativeOpenDialogOptions): Promise<void>;
    pickFolderAndOpen(windowId: number | undefined, options: INativeOpenDialogOptions): Promise<void>;
    pickFileAndOpen(windowId: number | undefined, options: INativeOpenDialogOptions): Promise<void>;
    pickWorkspaceAndOpen(windowId: number | undefined, options: INativeOpenDialogOptions): Promise<void>;
    private doOpenPicked;
    showItemInFolder(windowId: number | undefined, path: string): Promise<void>;
    setRepresentedFilename(windowId: number | undefined, path: string): Promise<void>;
    setDocumentEdited(windowId: number | undefined, edited: boolean): Promise<void>;
    openExternal(windowId: number | undefined, url: string): Promise<boolean>;
    private safeSnapOpenExternal;
    moveItemToTrash(windowId: number | undefined, fullPath: string): Promise<void>;
    isAdmin(): Promise<boolean>;
    writeElevated(windowId: number | undefined, source: URI, target: URI, options?: {
        unlock?: boolean;
    }): Promise<void>;
    private get cliPath();
    getOSStatistics(): Promise<IOSStatistics>;
    getOSProperties(): Promise<IOSProperties>;
    getOSVirtualMachineHint(): Promise<number>;
    getOSColorScheme(): Promise<IColorScheme>;
    hasWSLFeatureInstalled(): Promise<boolean>;
    killProcess(windowId: number | undefined, pid: number, code: string): Promise<void>;
    readClipboardText(windowId: number | undefined, type?: 'selection' | 'clipboard'): Promise<string>;
    writeClipboardText(windowId: number | undefined, text: string, type?: 'selection' | 'clipboard'): Promise<void>;
    readClipboardFindText(windowId: number | undefined): Promise<string>;
    writeClipboardFindText(windowId: number | undefined, text: string): Promise<void>;
    writeClipboardBuffer(windowId: number | undefined, format: string, buffer: VSBuffer, type?: 'selection' | 'clipboard'): Promise<void>;
    readClipboardBuffer(windowId: number | undefined, format: string): Promise<VSBuffer>;
    hasClipboard(windowId: number | undefined, format: string, type?: 'selection' | 'clipboard'): Promise<boolean>;
    newWindowTab(): Promise<void>;
    showPreviousWindowTab(): Promise<void>;
    showNextWindowTab(): Promise<void>;
    moveWindowTabToNewWindow(): Promise<void>;
    mergeAllWindowTabs(): Promise<void>;
    toggleWindowTabsBar(): Promise<void>;
    updateTouchBar(windowId: number | undefined, items: ISerializableCommandAction[][]): Promise<void>;
    notifyReady(windowId: number | undefined): Promise<void>;
    relaunch(windowId: number | undefined, options?: {
        addArgs?: string[];
        removeArgs?: string[];
    }): Promise<void>;
    reload(windowId: number | undefined, options?: {
        disableExtensions?: boolean;
    }): Promise<void>;
    closeWindow(windowId: number | undefined): Promise<void>;
    closeWindowById(currentWindowId: number | undefined, targetWindowId?: number | undefined): Promise<void>;
    quit(windowId: number | undefined): Promise<void>;
    exit(windowId: number | undefined, code: number): Promise<void>;
    resolveProxy(windowId: number | undefined, url: string): Promise<string | undefined>;
    findFreePort(windowId: number | undefined, startPort: number, giveUpAfter: number, timeout: number, stride?: number): Promise<number>;
    openDevTools(windowId: number | undefined, options?: OpenDevToolsOptions): Promise<void>;
    toggleDevTools(windowId: number | undefined): Promise<void>;
    sendInputEvent(windowId: number | undefined, event: MouseInputEvent): Promise<void>;
    enableSandbox(windowId: number | undefined, enabled: boolean): Promise<void>;
    toggleSharedProcessWindow(): Promise<void>;
    profileRenderer(windowId: number | undefined, session: string, duration: number): Promise<IV8Profile>;
    windowsGetStringRegKey(windowId: number | undefined, hive: 'HKEY_CURRENT_USER' | 'HKEY_LOCAL_MACHINE' | 'HKEY_CLASSES_ROOT' | 'HKEY_USERS' | 'HKEY_CURRENT_CONFIG', path: string, name: string): Promise<string | undefined>;
    private windowById;
}
