/** @packageDocumentation
 * @module Frontstage
 */
import type { UiStateStorageResult } from "@itwin/core-react";
import { UiStateStorageStatus } from "@itwin/core-react";
import * as React from "react";
import type { FrontstageDef } from "../frontstage/FrontstageDef";
import type { NineZoneDispatch, NineZoneLabels } from "../layout/base/NineZone";
import type { NineZoneState } from "../layout/state/NineZoneState";
import { StagePanelLocation } from "../stagepanels/StagePanelLocation";
import { StagePanelSection } from "../stagepanels/StagePanelSection";
import type { WidgetDef } from "../widgets/WidgetDef";
import "./Frontstage.scss";
/** @internal */
export declare function useLayoutStore(frontstageDef: FrontstageDef | undefined): import("../layout/base/LayoutStore").LayoutStore;
/** Update in-memory NineZoneState of newly activated frontstage with up to date size.
 * @internal
 */
export declare function useUpdateNineZoneSize(frontstageDef: FrontstageDef): void;
/** @internal */
export declare function useNineZoneDispatch(frontstageDef: FrontstageDef): NineZoneDispatch;
/** @internal */
export declare function WidgetPanelsFrontstage(): React.JSX.Element | null;
interface ActiveFrontstageDefProviderProps {
    frontstageDef: FrontstageDef;
}
/** @internal */
export declare function ActiveFrontstageDefProvider({ frontstageDef, }: ActiveFrontstageDefProviderProps): React.JSX.Element;
/** @internal */
export declare function useLabels(): NineZoneLabels;
/** Adds missing widgets to the layout.
 * @internal
 */
export declare function addPanelSectionWidgetDefs(frontstageDef: FrontstageDef, location: StagePanelLocation, section: StagePanelSection): void;
/** Adds frontstageDef widgets that are missing in NineZoneState.
 * @internal
 */
export declare function addFrontstageWidgetDefs(frontstageDef: FrontstageDef): void;
type PanelSectionId = `${Lowercase<keyof typeof StagePanelLocation>}${keyof typeof StagePanelSection}`;
/** @internal */
export declare function getPanelSectionId(location: StagePanelLocation, section: StagePanelSection): PanelSectionId;
/** @internal */
export declare function getPanelSectionWidgets(frontstageDef: FrontstageDef, location: StagePanelLocation, section: StagePanelSection): ReadonlyArray<WidgetDef>;
/** @internal */
export declare function isFrontstageStateSettingResult(settingsResult: UiStateStorageResult): settingsResult is {
    status: UiStateStorageStatus.Success;
    setting: WidgetPanelsFrontstageState;
};
/** @internal */
export declare function initializePanel(frontstageDef: FrontstageDef, location: StagePanelLocation): void;
/** @internal */
export declare const stateVersion = 17;
/** @internal */
export declare function initializeNineZoneState(frontstageDef: FrontstageDef): void;
/** Converts from saved NineZoneState to NineZoneState.
 * @note Restores toolSettings tab.
 * @note Restores tab labels.
 * @internal
 */
export declare function restoreNineZoneState(frontstageDef: FrontstageDef, packed: NineZoneState): void;
/** Prepares NineZoneState to be saved.
 * @note Removes toolSettings tab.
 * @note Removes tab labels and iconSpec.
 * @internal
 */
export declare function packNineZoneState(state: NineZoneState): NineZoneState;
/** FrontstageState is saved in UiStateStorage.
 * @internal
 */
export interface WidgetPanelsFrontstageState {
    nineZone: NineZoneState;
    id: FrontstageDef["id"];
    /** Frontstage version used to create the frontstage state. Allows to invalidate the layout from the frontstage. */
    version: number;
    /** Platform provided frontstage version. Allows to invalidate the layout from the platform. */
    stateVersion: number;
}
/** @internal */
export declare function useSavedFrontstageState(frontstageDef: FrontstageDef): void;
/** @internal */
export declare const FRONTSTAGE_SETTINGS_NAMESPACE = "uifw-frontstageSettings";
/** @internal */
export declare function getFrontstageStateSettingName(frontstageId: WidgetPanelsFrontstageState["id"]): string;
/** @internal */
export declare function useFrontstageManager(frontstageDef: FrontstageDef, useToolAsToolSettingsLabel?: boolean): void;
/** @internal */
export declare function useItemsManager(frontstageDef: FrontstageDef): void;
export {};
//# sourceMappingURL=Frontstage.d.ts.map