import type OpenFin from '@openfin/core';
export declare enum ApplicationUUID {
    /**
     * The UUID of workspace.
     * Home is a part of this application.
     */
    Workspace = "openfin-workspace",
    OldWorkspace = "openfin-browser"
}
export interface ApplicationEvent {
    viewIdentity?: OpenFin.Identity;
    name?: string;
    uuid?: string;
}
export type ApplicationListener = (ev: ApplicationEvent) => void;
export declare enum LaunchModeType {
    FinProtocol = "fin-protocol"
}
export type ApplicationInfoExtended = OpenFin.ApplicationInfo & {
    initialOptions: OpenFin.ApplicationInfo['initialOptions'] & {
        userAppConfigArgs: any;
    };
};
export declare const getCurrentOFApplication: () => OpenFin.Application;
export declare const getWorkspaceOFApplication: () => OpenFin.Application;
/**
 * Gets the application manifest, caching the result after the first call.
 * The manifest never changes during the application lifecycle, so this avoids redundant async calls.
 * Uses promise-based caching to prevent race conditions when multiple calls occur before the first completes.
 * @returns A Promise resolving to the application manifest
 */
export declare const getCachedManifest: () => Promise<OpenFin.Manifest>;
/**
 * Gets application info, caching the result after the first call.
 * Application info (manifestUrl, licenseKey, runtime version, etc.) never changes
 * during the application lifecycle. Multiple callers (overrides, sentry, analytics)
 * share a single IPC call.
 */
export declare const getCachedAppInfo: () => Promise<OpenFin.ApplicationInfo>;
