import { NativeKeyboardLayout } from '../common/keyboard/keyboard-layout-provider';
import { Disposable } from '../common';
import { FrontendApplicationState, StopReason } from '../common/frontend-application-state';
export declare type MenuRole = ('undo' | 'redo' | 'cut' | 'copy' | 'paste' | 'selectAll' | 'about' | 'services' | 'hide' | 'hideOthers' | 'unhide' | 'quit');
export interface MenuDto {
    id?: string;
    label?: string;
    submenu?: MenuDto[];
    type?: ('normal' | 'separator' | 'submenu' | 'checkbox' | 'radio');
    checked?: boolean;
    enabled?: boolean;
    visible?: boolean;
    role?: MenuRole;
    accelerator?: string;
    execute?: () => void;
}
export declare type InternalMenuDto = Omit<MenuDto, 'execute' | 'submenu'> & {
    submenu?: InternalMenuDto[];
    handlerId?: number;
};
export declare type WindowEvent = 'maximize' | 'unmaximize' | 'focus';
export interface TheiaCoreAPI {
    getSecurityToken: () => string;
    attachSecurityToken: (endpoint: string) => Promise<void>;
    setMenuBarVisible(visible: boolean, windowName?: string): void;
    setMenu(menu: MenuDto[] | undefined): void;
    popup(menu: MenuDto[], x: number, y: number, onClosed: () => void): Promise<number>;
    closePopup(handle: number): void;
    focusWindow(name: string): void;
    showItemInFolder(fsPath: string): void;
    getTitleBarStyleAtStartup(): Promise<string>;
    setTitleBarStyle(style: string): void;
    minimize(): void;
    isMaximized(): boolean;
    maximize(): void;
    unMaximize(): void;
    close(): void;
    onWindowEvent(event: WindowEvent, handler: () => void): Disposable;
    setCloseRequestHandler(handler: (reason: StopReason) => Promise<boolean>): void;
    toggleDevTools(): void;
    getZoomLevel(): Promise<number>;
    setZoomLevel(desired: number): void;
    isFullScreenable(): boolean;
    isFullScreen(): boolean;
    toggleFullScreen(): void;
    requestReload(): void;
    restart(): void;
    applicationStateChanged(state: FrontendApplicationState): void;
    readClipboard(): string;
    writeClipboard(text: string): void;
    onKeyboardLayoutChanged(handler: (newLayout: NativeKeyboardLayout) => void): Disposable;
    sendData(data: Uint8Array): void;
    onData(handler: (data: Uint8Array) => void): Disposable;
}
declare global {
    interface Window {
        electronTheiaCore: TheiaCoreAPI;
    }
}
export declare const CHANNEL_SET_MENU = "SetMenu";
export declare const CHANNEL_SET_MENU_BAR_VISIBLE = "SetMenuBarVisible";
export declare const CHANNEL_INVOKE_MENU = "InvokeMenu";
export declare const CHANNEL_OPEN_POPUP = "OpenPopup";
export declare const CHANNEL_ON_CLOSE_POPUP = "OnClosePopup";
export declare const CHANNEL_CLOSE_POPUP = "ClosePopup";
export declare const CHANNEL_GET_SECURITY_TOKEN = "GetSecurityToken";
export declare const CHANNEL_FOCUS_WINDOW = "FocusWindow";
export declare const CHANNEL_SHOW_OPEN = "ShowOpenDialog";
export declare const CHANNEL_SHOW_SAVE = "ShowSaveDialog";
export declare const CHANNEL_SHOW_ITEM_IN_FOLDER = "ShowItemInFolder";
export declare const CHANNEL_ATTACH_SECURITY_TOKEN = "AttachSecurityToken";
export declare const CHANNEL_GET_TITLE_STYLE_AT_STARTUP = "GetTitleStyleAtStartup";
export declare const CHANNEL_SET_TITLE_STYLE = "SetTitleStyle";
export declare const CHANNEL_CLOSE = "Close";
export declare const CHANNEL_MINIMIZE = "Minimize";
export declare const CHANNEL_MAXIMIZE = "Maximize";
export declare const CHANNEL_IS_MAXIMIZED = "IsMaximized";
export declare const CHANNEL_UNMAXIMIZE = "UnMaximize";
export declare const CHANNEL_ON_WINDOW_EVENT = "OnWindowEvent";
export declare const CHANNEL_TOGGLE_DEVTOOLS = "ToggleDevtools";
export declare const CHANNEL_GET_ZOOM_LEVEL = "GetZoomLevel";
export declare const CHANNEL_SET_ZOOM_LEVEL = "SetZoomLevel";
export declare const CHANNEL_IS_FULL_SCREENABLE = "IsFullScreenable";
export declare const CHANNEL_IS_FULL_SCREEN = "IsFullScreen";
export declare const CHANNEL_TOGGLE_FULL_SCREEN = "ToggleFullScreen";
export declare const CHANNEL_REQUEST_CLOSE = "RequestClose";
export declare const CHANNEL_REQUEST_RELOAD = "RequestReload";
export declare const CHANNEL_RESTART = "Restart";
export declare const CHANNEL_APP_STATE_CHANGED = "ApplicationStateChanged";
export declare const CHANNEL_READ_CLIPBOARD = "ReadClipboard";
export declare const CHANNEL_WRITE_CLIPBOARD = "WriteClipboard";
export declare const CHANNEL_KEYBOARD_LAYOUT_CHANGED = "KeyboardLayoutChanged";
export declare const CHANNEL_IPC_CONNECTION = "IpcConnection";
//# sourceMappingURL=electron-api.d.ts.map