/**
 * These are to support legacy exports (see notes below).
 */
import { BaseService as baseService } from "./services/baseService";
import { _BaseClient } from "./clients/baseClient";
import UserNotification from "./common/userNotification";
import * as Util from "./common/util";
import DependencyManager from "./common/dependencyManager";
import { System } from "./common/system";
/**
 * Imports
 */
import { FEAGlobals } from "./common/Globals";
import { FSBLDesktop } from "./clients/Startup/FSBLDesktop";
import { FEA } from "./FEA";
import { FinsembleWindow } from "./common/window/FinsembleWindow";
import { DesktopAgent } from "./typedefs/FDC3/index";
export * as services from "./services";
export * as clients from "./clients";
export * as types from "./types";
export * as FEA from "./FEA";
export * as common from "./common";
export * as deprecated from "./deprecated";
export * as constants from "./common/constants";
/**
 * 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;
    }
}
/**
 * Legacy ambient types
 *
 * These are types that are used in the client APIs and which previously
 * exported as root level ambient types. Customers that wrote typescript
 * code may have been using these types.
 */
export { WindowIdentifier, WindowDescriptor, WindowLocator, SpawnParams, ShowWindowParams, } from "./services/window/types";
export { WindowBounds } from "./services/window/types";
export { WorkspaceEventName } from "./services/workspace/types";
export { WindowEventName, WrapState } from "./services/window/types";
/**
 * Following are legacy exports that have been used by customers primarily to build custom
 * services and storage adapters. These will be deprecated over time as we roll out simplified
 * mechanisms for services and adapters.
 */
/**
 * Used for build storage adapters
 */
export declare const models: {
    baseStorage: (this: import("./services/storage/adapters/types").IBaseStorage, args: string) => void;
};
export { FinsembleWindow, baseService, UserNotification, DependencyManager, System, Util };
export declare const Clients: {
    RouterClient: {
        onReady: (cb?: (() => void) | undefined) => Promise<void>;
        addListener: <T = any>(channel: string, eventHandler: (err: null, response: import("./clients/routerClientInstance").ListenerResponse<T>) => void) => import("./clients/routerClientInstance").RouterListenerUnsubscribe;
        transmit: <T_1 = any>(toChannel: string, data: T_1, options?: {
            suppressWarnings: boolean;
        } | undefined) => void;
        removeListener: (channel: string, eventHandler: Function) => void;
        addResponder: <Q = any, R = any>(channel: string, queryEventHandler: import("./types").StandardErrorCallback<import("./clients/routerClientInstance").ResponderMessage<Q, R>>) => void;
        query: <Q_1 = any, R_1 = any>(responderChannel: string, queryEvent: Q_1, queryParams?: {
            timeout?: number | undefined;
            logWhenNoResponder?: boolean | undefined;
        } | import("./clients/routerClientInstance").QueryResponseCallback<R_1> | undefined, responseEventHandler?: import("./clients/routerClientInstance").QueryResponseCallback<R_1> | undefined) => Promise<import("./clients/routerClientInstance").StandardQueryResponse<R_1>>;
        removeResponder: (responderChannel: string) => void;
        addPubSubResponder: <T_2 = any>(topic: string | RegExp, initialState?: object | undefined, params?: {
            subscribeCallback?: import("./clients/routerClientInstance").SubscribeCallback<T_2> | undefined;
            unsubscribeCallback?: import("./clients/routerClientInstance").UnsubscribeCallback | undefined;
            publishCallback?: import("./clients/routerClientInstance").PublishCallback<T_2> | undefined;
        } | undefined, callback?: ((err?: string | Error | undefined, result?: "success" | undefined) => void) | undefined) => void;
        removePubSubResponder: (topic: string | RegExp) => void;
        subscribe: <T_3 = any>(topic: string, notifyCallback: (err: import("./types").StandardError, response: import("./clients/routerClientInstance").SubscriberResponse<T_3>) => void) => {
            subscribeID: string;
            topic: string;
        };
        publish: <T_4 = any>(topic: string, event: T_4) => void;
        unsubscribe: (subscribeIDStruct: {
            subscribeID: string;
            topic: string;
        }) => void;
        trustedMessage: (incomingMessage: import("./clients/routerClientInstance").RouterMessage<any>) => boolean;
        disconnectAll: () => void;
        calibrateTimeWithRouterService(callback: (offset: number) => void): void;
    };
    StorageClient: import("./clients/storageClient").StorageClient;
    LauncherClient: import("./clients/launcherClient").LauncherClient;
    DistributedStoreClient: import("./clients/distributedStoreClient").DistributedStoreClient;
    LinkerClient: import("./deprecated/linkerClient").LinkerClient;
    WindowClient: import("./clients/windowClient").WindowClient;
    WorkspaceClient: import("./clients/workspaceClient").WorkspaceClient;
    DialogManager: import("./clients/dialogManagerClient").DialogManagerClient;
    AuthenticationClient: import("./clients/authenticationClient").AuthenticationClient;
    ConfigClient: import("./clients/configClient").ConfigClient;
    DragAndDropClient: import("./deprecated/dragAndDropClient").DragAndDropClient;
    Logger: {
        start: (routerClient?: {
            onReady: (cb?: (() => void) | undefined) => Promise<void>;
            addListener: <T = any>(channel: string, eventHandler: (err: null, response: import("./clients/routerClientInstance").ListenerResponse<T>) => void) => import("./clients/routerClientInstance").RouterListenerUnsubscribe;
            transmit: <T_1 = any>(toChannel: string, data: T_1, options?: {
                suppressWarnings: boolean;
            } | undefined) => void;
            removeListener: (channel: string, eventHandler: Function) => void;
            addResponder: <Q = any, R = any>(channel: string, queryEventHandler: import("./types").StandardErrorCallback<import("./clients/routerClientInstance").ResponderMessage<Q, R>>) => void;
            query: <Q_1 = any, R_1 = any>(responderChannel: string, queryEvent: Q_1, queryParams?: {
                timeout?: number | undefined;
                logWhenNoResponder?: boolean | undefined;
            } | import("./clients/routerClientInstance").QueryResponseCallback<R_1> | undefined, responseEventHandler?: import("./clients/routerClientInstance").QueryResponseCallback<R_1> | undefined) => Promise<import("./clients/routerClientInstance").StandardQueryResponse<R_1>>;
            removeResponder: (responderChannel: string) => void;
            addPubSubResponder: <T_2 = any>(topic: string | RegExp, initialState?: object | undefined, params?: {
                subscribeCallback?: import("./clients/routerClientInstance").SubscribeCallback<T_2> | undefined;
                unsubscribeCallback?: import("./clients/routerClientInstance").UnsubscribeCallback | undefined;
                publishCallback?: import("./clients/routerClientInstance").PublishCallback<T_2> | undefined;
            } | undefined, callback?: ((err?: string | Error | undefined, result?: "success" | undefined) => void) | undefined) => void;
            removePubSubResponder: (topic: string | RegExp) => void;
            subscribe: <T_3 = any>(topic: string, notifyCallback: (err: import("./types").StandardError, response: import("./clients/routerClientInstance").SubscriberResponse<T_3>) => void) => {
                subscribeID: string;
                topic: string;
            };
            publish: <T_4 = any>(topic: string, event: T_4) => void;
            unsubscribe: (subscribeIDStruct: {
                subscribeID: string;
                topic: string;
            }) => void;
            trustedMessage: (incomingMessage: import("./clients/routerClientInstance").RouterMessage<any>) => boolean;
            disconnectAll: () => void;
            calibrateTimeWithRouterService(callback: (offset: number) => void): void;
        } | undefined) => void;
        channelFilter: (channel: string) => boolean;
        setting: () => import("./services/logger/types").CentralLoggerClientState;
        callStack: () => string;
        unregisterClient: (params?: {
            clientName: string;
            deleteFromPersistence?: boolean | undefined;
            viewId?: number | undefined;
        } | undefined, cb?: ((err: import("./types").StandardError, data?: any) => void) | undefined) => void;
        setRouterClient: (routerClient: {
            onReady: (cb?: (() => void) | undefined) => Promise<void>;
            addListener: <T = any>(channel: string, eventHandler: (err: null, response: import("./clients/routerClientInstance").ListenerResponse<T>) => void) => import("./clients/routerClientInstance").RouterListenerUnsubscribe;
            transmit: <T_1 = any>(toChannel: string, data: T_1, options?: {
                suppressWarnings: boolean;
            } | undefined) => void;
            removeListener: (channel: string, eventHandler: Function) => void;
            addResponder: <Q = any, R = any>(channel: string, queryEventHandler: import("./types").StandardErrorCallback<import("./clients/routerClientInstance").ResponderMessage<Q, R>>) => void;
            query: <Q_1 = any, R_1 = any>(responderChannel: string, queryEvent: Q_1, queryParams?: {
                timeout?: number | undefined;
                logWhenNoResponder?: boolean | undefined;
            } | import("./clients/routerClientInstance").QueryResponseCallback<R_1> | undefined, responseEventHandler?: import("./clients/routerClientInstance").QueryResponseCallback<R_1> | undefined) => Promise<import("./clients/routerClientInstance").StandardQueryResponse<R_1>>;
            removeResponder: (responderChannel: string) => void;
            addPubSubResponder: <T_2 = any>(topic: string | RegExp, initialState?: object | undefined, params?: {
                subscribeCallback?: import("./clients/routerClientInstance").SubscribeCallback<T_2> | undefined;
                unsubscribeCallback?: import("./clients/routerClientInstance").UnsubscribeCallback | undefined;
                publishCallback?: import("./clients/routerClientInstance").PublishCallback<T_2> | undefined;
            } | undefined, callback?: ((err?: string | Error | undefined, result?: "success" | undefined) => void) | undefined) => void;
            removePubSubResponder: (topic: string | RegExp) => void;
            subscribe: <T_3 = any>(topic: string, notifyCallback: (err: import("./types").StandardError, response: import("./clients/routerClientInstance").SubscriberResponse<T_3>) => void) => {
                subscribeID: string;
                topic: string;
            };
            publish: <T_4 = any>(topic: string, event: T_4) => void;
            unsubscribe: (subscribeIDStruct: {
                subscribeID: string;
                topic: string;
            }) => void;
            trustedMessage: (incomingMessage: import("./clients/routerClientInstance").RouterMessage<any>) => boolean;
            disconnectAll: () => void;
            calibrateTimeWithRouterService(callback: (offset: number) => void): void;
        }) => void;
        onStateChanged(cb: (newState: import("./services/logger/types").CentralLoggerClientState) => void): void;
        error: (...args: any[]) => void;
        warn: (...args: any[]) => void;
        info: (...args: any[]) => void;
        log: (...args: any[]) => void;
        debug: (...args: any[]) => void;
        verbose: (...args: any[]) => void;
        deprecated: (...args: any[]) => void;
        system: {
            error: (...args: any[]) => void;
            warn: (...args: any[]) => void;
            info: (...args: any[]) => void;
            log: (...args: any[]) => void;
            debug: (...args: any[]) => void;
            verbose: (...args: any[]) => void;
            deprecated: (...args: any[]) => void;
        };
        perf: {
            error: (...args: any[]) => void;
            warn: (...args: any[]) => void;
            info: (...args: any[]) => void;
            log: (...args: any[]) => void;
            debug: (...args: any[]) => void;
            verbose: (...args: any[]) => void;
            deprecated: (...args: any[]) => void;
        };
        console: {
            error: (...args: any[]) => void;
            warn: (...args: any[]) => void;
            info: (...args: any[]) => void;
            log: (...args: any[]) => void;
            debug: (...args: any[]) => void;
            verbose: (...args: any[]) => void;
            deprecated: (...args: any[]) => void;
        };
    };
    baseClient: typeof _BaseClient;
    SearchClient: import("./clients/searchClient").SearchClient;
    HotkeyClient: import("./clients/hotkeysClient").HotkeyClient;
    NotificationClient: import("./clients/notificationClient").NotificationClient;
};
//# sourceMappingURL=main.d.ts.map