import type { ContentSource, ElectronWindowTitleBarStyle } from "./create-electron-window.injectable";
import type { ClusterFrameInfo } from "../../../../common/cluster-frames.injectable";
export interface ElectronWindow {
    show: () => void;
    close: () => void;
    send: (args: SendToViewArgs) => void;
    loadFile: (filePath: string) => Promise<void>;
    loadUrl: (url: string) => Promise<void>;
    reload: () => void;
}
export interface SendToViewArgs {
    channel: string;
    frameInfo?: ClusterFrameInfo;
    data?: unknown;
}
export interface LensWindow {
    id: string;
    start: () => Promise<void>;
    close: () => void;
    show: () => void;
    send: (args: SendToViewArgs) => void;
    isVisible: boolean;
    isStarting: boolean;
    reload: () => void;
}
export interface LensWindowConfiguration {
    id: string;
    title: string;
    defaultHeight: number;
    defaultWidth: number;
    getContentSource: () => ContentSource;
    resizable: boolean;
    windowFrameUtilitiesAreShown: boolean;
    centered: boolean;
    titleBarStyle?: ElectronWindowTitleBarStyle;
    /**
     * This function is called before the ContentSource is used and then awaited after
     * the open call resolves
     */
    beforeOpen?: () => Promise<void>;
    onFocus?: () => void;
    onBlur?: () => void;
    onDomReady?: () => void;
    onClose?: () => void;
}
declare const createLensWindowInjectable: import("@ogre-tools/injectable").Injectable<(configuration: LensWindowConfiguration) => LensWindow, unknown, void>;
export default createLensWindowInjectable;
