import { GeneratedPalettes, NotificationIndicatorColorsParsed } from '../../../../common/src/api/theming';
import { ThemeStorageController } from '../../../../client-api-platform/src/api/controllers/theme-storage-controller';
import { CustomThemes } from '../../../../client-api-platform/src/shapes';
/**
 * Initialises the storage palettes from the custom themes. This function is called on platform init.
 * This function takes both the legacy themes and the new theme system tokens and
 * passes them into the theme engine to generate the css variables.
 *
 * @param customThemes the custom themes to initialise the storage palettes from.
 * @param isWindows whether the operating system is Windows.
 * @returns the generated palettes fromt the theme engine, theme palette sheet which is injected into the DOM, and legacy theme object if it exists.
 */
export declare const initialiseStoragePalettes: (customThemes: CustomThemes | undefined, isWindows: boolean) => {
    generatedPalettes: GeneratedPalettes;
    themePaletteSheet: string;
    legacyTheme: CustomThemes | null;
    notificationIndicatorColors: NotificationIndicatorColorsParsed | null;
};
export declare const getThemeStorageController: () => ThemeStorageController;
/**
 * Resolves when the first theme sync completes. Use this to ensure that we do not launch UI such as browser until this has completed.
 *
 * @param allowFailure Whether to suppress rejections and continue anyway. Recommended for most use cases.
 */
export declare const waitForFirstThemeSync: (allowFailure?: boolean) => Promise<void>;
/**
 * Whether `initialiseThemeController` has run in this module instance. Callers that gate on
 * `waitForFirstThemeSync` must check this first: `firstThemeSync` is module-level state, so a
 * separately-bundled copy of this module (e.g. `@openfin/enterprise-api`, which bundles its own
 * copy alongside the customer's `@openfin/workspace-platform`) has a promise that nothing will
 * ever settle — awaiting it would hang forever.
 */
export declare const isThemeControllerInitialised: () => boolean;
/**
 * Creates and initialises the Theme Storage Controller singleton.
 *
 * Triggers the first theme sync, but does not await it. To ensure dependent UI can guarantee the theme palette is synced,
 * you can call `await waitForFirstThemeSync` (e.g. in the createWindow provider override).
 *
 * @param isEnterprise Whether in enterprise mode (allows using local storage proxy directly).
 * @param baseUrl Base url of the hosted workspace UI.
 * @param syncTimeout How long `waitForFirstThemeSync` should wait before rejecting.
 */
export declare const initialiseThemeController: (isEnterprise: boolean, baseUrl: string, syncTimeout: number) => void;
