/**
 * Important note: These classes make use of "getters". Don't confuse these with function calls.
 */
import { SDServerInfo, MonitorInfo, VirtualScreenCoordinates } from "../FEA";
import { StandardErrorCallback } from "../types";
import { FEAWindow } from "../FEA";
declare class SystemWindow {
    constructor(params: any, cb: any);
    static getCurrent(): FEAWindow;
    static wrap(appUuid: string, windowName: string): FEAWindow;
}
export declare class Application {
    constructor(params: any, cb: any);
    static get getCurrent(): () => import("../FEA").FEAApplication;
    static get wrap(): (uuid: string) => import("../FEA").FEAApplication;
}
declare class SystemNotification {
    constructor(params: any);
}
/**
 *
 * @introduction
 * <h2>Clipboard</h2>
 *
 *
 *
 * @hideconstructor
 * @param {object} params
 */
declare class Clipboard {
    constructor();
    /**
     * Write Text to Clipboard
     */
    static writeText(data: any, type: any, callback: any, errorCallback: any): void;
    static writeHTML(data: any, type: any, callback: any, errorCallback: any): void;
    static writeRTF(data: any, type: any, callback: any, errorCallback: any): void;
    static readText(type: any, callback: any, errorCallback: any): void;
    static readHTML(type: any, callback: any, errorCallback: any): void;
    static readRTF(type: any, callback: any, errorCallback: any): void;
}
/**
 *
 * @introduction
 * <h2>System</h2>
 *
 *
 *
 * @hideconstructor
 * @param {object} params
 */
/**
 * @introduction
 * <h2>The Finsemble System API </h2>
 * ----------
 * The Finsemble System API is a set private and experimental of APIs for exposing operating system and electron-based functionality, including the clipboard, mouse position, monitor info, and others.
 * @hideConstructor true
 * @private
 * @constructor
 * @summary You don't need to ever invoke the constructor. This is done for you when WindowClient is added to the FSBL object.
 */
export declare class System {
    /**
     * Determines if the current window was launched through finsemble, or is external or freestanding
     * @private
     * @returns boolean True if freestanding
     */
    static isFreestanding(): boolean;
    /**
     * Application
     * @private
     * @returns Application
     */
    static get Application(): typeof Application;
    /**
     * Window
     * @private
     * @returns Window
     */
    static get Window(): typeof SystemWindow;
    /**
     * Notification
     * @private
     * @returns Notification
     */
    static get Notification(): typeof SystemNotification;
    /**
     * Clipboard
     * @private
     * @returns Clipboard
     */
    static get Clipboard(): typeof Clipboard;
    /**
     * (experimental) Gets current mouse position
     * @experimental
     * @param cb
     */
    static getMousePosition(cb?: StandardErrorCallback<VirtualScreenCoordinates>): Promise<VirtualScreenCoordinates>;
    /**
     * Asynchronous method that passes the SmartDesktopDesigner's Server Information to the provided callback
     * @private
     * @returns Clipboard
     */
    static getSDServerInfo(cb?: Function): Promise<SDServerInfo>;
    /**
     * Get all monitors
     * @private
     * @param cb Callback with monitorInfo type
     */
    static getMonitorInfo(cb?: (monitorInfo: MonitorInfo) => void): Promise<MonitorInfo>;
    /**
     * Returns the container of the finsemble application. Hardcoded to "FEA".
     * @private
     * @returns string
     */
    static container(): string;
    /**
     * Returns a boolean that is true when the webcontents are running within an electron browserView
     * @private
     * @returns boolean
     */
    static isBrowserView(): boolean;
    /**
     * Returns the BrowserViewId.  See  isBrowserView method.
     * @private
     * @returns number The browserViewId
     */
    static getViewId(): number | null;
    /**
     * Does the current webcontents contain browserviews
     * @private
     * @returns boolean True when the current webcontents are a browserwindow that contains associated browserviews
     */
    static hasBrowserView(): boolean;
    /**
     * Returns the fin object
     * @private
     * @returns fin
     */
    static get fin(): import("../FEA").FEA;
    /**
     * Invokes optional callback and resolves promise when FEA is ready.
     *
     * @param {Function} [cb] Optional callback for system ready
     * @private
     * @returns Promise<void>
     *
     * We might be able to eliminate the need to wait for ready() by making FEA automatically ready at the end of the e2o preload.
     */
    static ready(cb?: () => void): Promise<void>;
    /**
     * Asynchronous method that passes the host specs of the system to the provided callback
     * @private
     * @param cb callback
     */
    static getHostSpecs(cb?: Function): Promise<any>;
    /**
     * Returns the InterApplicationBus
     * @private
     * @returns IAB
     */
    static get InterApplicationBus(): import("../FEA").FEAInterApplicationBus;
    /**
     * Launches an external application
     * @private
     */
    static get launchExternalProcess(): (options: import("../FEA").ExternalProcessLaunchInfo, callback?: ((payload: {
        uuid: string;
    }) => void) | undefined, errorCallback?: ((reason: string) => void) | undefined) => void;
    /**
     * Terminates an external application
     * @private
     */
    static get terminateExternalProcess(): (processUuid: string, timeout: number, callback?: ((info: {
        result: "failed" | "clean" | "terminated";
    }) => void) | undefined, errorCallback?: ((reason: string) => void) | undefined) => void;
    /**
     * Returns all applications
     * @private
     * @returns Application
     */
    static get getAllApplications(): (callback?: ((applicationInfoList: import("../FEA").ApplicationInfo[]) => void) | undefined, errorCallback?: ((reason: string) => void) | undefined) => void;
    /**
     * (deprecated) Exits finsemble
     */
    static get exit(): (callback?: (() => void) | undefined, errorCallback?: ((reason: string) => void) | undefined) => void;
    /**
     * Clears finsemble cache
     * @private
     */
    static get clearCache(): (options: import("../FEA").CacheOptions, callback?: (() => void) | undefined, errorCallback?: ((reason: string) => void) | undefined) => void;
    /**
     * Shows the chromium developer tools for the current window
     * @private
     * @returns IAB
     */
    static get showDeveloperTools(): (uuid: string, name: string, isView?: number | boolean | null | undefined, callback?: (() => void) | undefined, errorCallback?: ((reason: string) => void) | undefined) => void;
    /**
     * Returns runtime information
     * @private
     * @returns RunTimeInfo
     */
    /**
     * Adds an event listener
     * @private
     * @returns RunTimeInfo
     */
    static get addEventListener(): ({
        <K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
        (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
    } & typeof addEventListener) | ((type: "application-closed" | "application-crashed" | "application-created" | "application-started" | "apply-update-requested" | "desktop-icon-clicked" | "idle-state-changed" | "monitor-info-changed" | "new-window-created" | "session-changed" | "protocol-handler-triggered", listener: (event: import("../FEA").SystemBaseEvent | import("../FEA").DesktopIconClickedEvent | import("../FEA").IdleStateChangedEvent | import("../FEA").MonitorInfoChangedEvent | import("../FEA").SessionChangedEvent | import("../FEA").ProtocolHandlerEvent) => void, callback?: (() => void) | undefined, errorCallback?: ((reason: string) => void) | undefined) => void);
    /**
     * Returns the InterApplicationBus
     * @private
     * @returns IAB
     */
    static get addSelectClientCertificateListener(): () => any;
    /**
     * addCertificateErrorListener
     * @private
     * @returns addCertificateErrorListener function
     */
    static get addCertificateErrorListener(): () => any;
    /**
     * getVersion
     * @private
     * @returns getVersion function
     */
    static get getVersion(): (callback?: ((version: string) => void) | undefined, errorCallback?: ((reason: string) => void) | undefined) => void;
    static getFEAInfo(cb: any): void;
    /**
     * getUpdateAvailable
     * @private
     * @returns getUpdateAvailable function
     */
    static get getUpdateAvailable(): (cb: (isUpdateAvailable: boolean) => void) => void;
    /**
     * (deprecated) Opens website with external browser
     * @returns openUrlWithBrowser function
     */
    static get openUrlWithBrowser(): (url: string, callback?: (() => void) | undefined, errorCallback?: ((reason: string) => void) | undefined) => void;
    /**
     * getAllWindows
     * @private
     * @returns getAllWindows function
     */
    static getAllWindows(...args: any[]): void;
    /**
     * getProcessList
     * @private
     * @returns getProcessList function
     */
    static get getProcessList(): (callback?: ((processInfoList: import("../FEA").ProcessInfo[]) => void) | undefined, errorCallback?: ((reason: string) => void) | undefined) => void;
    /**
     * getProtocolString
     * @private
     * @returns getProtocolString function
     */
    static get getProtocolString(): (cb?: ((data: string) => void) | undefined) => Promise<string>;
    /**
     * hideSplashScreen
     * @private
     * @returns hideSplashScreen function
     */
    static get hideSplashScreen(): () => void;
    /**
     * Performs handshake with FEA to indicate the primary application started successfully
     * @private
     */
    static startupApplicationHandshake(): void;
    /**
     * This is the pattern used to close applications.
     * @private
     * @param app
     * @param cb
     */
    static closeApplication(app: any, cb?: Function): Promise<unknown>;
}
export {};
//# sourceMappingURL=system.d.ts.map