import { FEAGlobals } from "./common";
import { FSBLDesktop } from "./clients/Startup/FSBLDesktop";
import { FEA } from "./FEA";
import { FinsembleWindow } from "./common/FinsembleWindow";
import { DesktopAgent } from "@finos/fdc3";
import { Icon } from "./main";
export * from "./main";
export { Icon };
/**
 * Declare global variables that are injected either by preloads or by the FSBL library itself.
 */
declare global {
    /**
     * FSBL is declared as "let" because we sometimes set FSBL.debug to true.
     * This is type FSBLDesktop though in freestanding apps and services this isn't accurate.
     * Use of ambient types should be avoided in those use cases. FSBL is added through
     * the finsemble-desktop-api-preload (FSBL.js) that is preloaded by Launcher.
     */
    let FSBL: typeof FEAGlobals.FSBL;
    /**
     * The fin object is injected by FEA. Sometimes it's referred to as e2o.
     */
    const fin: typeof FEAGlobals.fin;
    /**
     * finsembleWindow is created on the fly by the FSBL client API initialization code.
     */
    const finsembleWindow: typeof FEAGlobals.finsembleWindow;
    /**
     * fdc3 is created on the fly by FSBLDesktop.
     */
    const fdc3: typeof FEAGlobals.fdc3;
}
/**
 * Wait, didn't we just declare these? Yes, as globals:
 *
 * Example
 *  ```
 * FSBL.Clients.RouterClient...
 * ```
 *
 * but they don't exist on the `window` object. These following definitions are necessary to make this work:
 *
 * Example
 * ```
 * window.FSBL.Clients.RouterClient...
 * ```
 */
declare global {
    interface Window {
        /**
         * FSBL is declared as "let" because we sometimes set FSBL.debug to true.
         * This is type FSBLDesktop though in freestanding apps and services this isn't accurate.
         * Use of ambient types should be avoided in those use cases. FSBL is added through
         * the finsemble-desktop-api-preload (FSBL.js) that is preloaded by Launcher.
         */
        FSBL: FSBLDesktop;
        /**
         * The fin object is injected by FEA. Sometimes it's referred to as e2o.
         */
        fin: FEA;
        /**
         * finsembleWindow is created on the fly by the FSBL client API initialization code.
         */
        finsembleWindow: FinsembleWindow;
        /**
         * fdc3 is created on the fly by FSBLDesktop.
         */
        fdc3: DesktopAgent;
    }
}
//# sourceMappingURL=index.d.ts.map