import { ChildWindowType, ProcessType } from "../ProcessMonitorTypes";
import { StoreModel } from "../../../../clients/StoreModel";
import { StandardCallback } from "../../../../types";
import { ProcessInfo } from "../../../../FEA";
declare let ProcessMonitorStore: StoreModel | undefined;
type VoidCallback = () => void;
export declare let storeWrapper: StoreModel | null | undefined;
declare const Actions: {
    /**
     * Creates the local store, then gets the first cut at stats for the process list.
     */
    initialize: (cb: VoidCallback) => void;
    /**
     * Gets the process list, pulls the statistics out, and renders the app. Also sets up an interval where we'll retrieve more stats from the system.
     */
    getInitialData: () => void;
    /**
     * Sets the sort field; if it's the same field as we had previously, we flip the sort direction.
     */
    setSort: (field: string) => Promise<void>;
    /**
     * Extracts data from the process list (via the createDataModel function), and then sets the processList value on the store. This causes the UI to re-render.
     */
    extractData: (processes: ProcessInfo[]) => void;
    /**
     * Converts the system.getProcessList response into something that's easily render-able.
     */
    createDataModel: (processes: ProcessInfo[], cb: (procs: ProcessType[]) => void) => Promise<void>;
    /**
     * Sorting function. Handles ascending and descending.
     */
    sortProcesses: (procs: ProcessType[]) => Promise<ProcessType[]>;
    /**
     * Gets the current "flashing" state - whether the process monitor is currently flashing a window
     */
    getFlashingState: (cb?: StandardCallback) => Promise<void>;
    /**
     * Gets the current "flashing" state for the process monitor
     */
    setFlashingState: (value: boolean, cb?: StandardCallback) => Promise<void>;
    /**
     * Make the window flash a couple of times so that the user can identify it.
     */
    identifyWindow: (winID: ChildWindowType) => void;
    /**
     * Terminates a process group. Containing windows for browser views will be closed.
     */
    terminateProcess: (webContents: ProcessType["statistics"]["webContents"]) => void;
    /**
     * This function exists to make the UI feel snappy. May take a second or so for the window to close properly and for the change to flow to system.getProcessList. To make that lag go away, we immediately render the change.
     */
    removeWindowLocally: (windowName: string) => Promise<void>;
    /**
     * Try to close the window. If that fails, try to force close the window. If that fails, ask if they'd like to terminate the parent process.
     */
    closeWindow: (windowName: string, force?: boolean) => void;
};
export { ProcessMonitorStore as Store, Actions };
//# sourceMappingURL=ProcessMonitorStore.d.ts.map