/** @packageDocumentation
 * @module Frontstage
 */
import { ScreenViewport } from "@itwin/core-frontend";
import { PointProps, StagePanelLocation, WidgetState } from "@itwin/appui-abstract";
import { RectangleProps, SizeProps } from "@itwin/core-react";
import { NineZoneManagerProps, NineZoneState } from "@itwin/appui-layout-react";
import { ContentControl } from "../content/ContentControl";
import { ContentGroup, ContentGroupProvider } from "../content/ContentGroup";
import { ContentLayoutDef } from "../content/ContentLayout";
import { ToolItemDef } from "../shared/ToolItemDef";
import { StagePanelDef, StagePanelState } from "../stagepanels/StagePanelDef";
import { WidgetDef } from "../widgets/WidgetDef";
import { ZoneDef } from "../zones/ZoneDef";
import { FrontstageProps } from "./Frontstage";
import { FrontstageProvider } from "./FrontstageProvider";
import { TimeTracker } from "../configurableui/TimeTracker";
import { SavedWidgets } from "../widget-panels/Frontstage";
/** @internal */
export interface FrontstageEventArgs {
    frontstageDef: FrontstageDef;
}
/** @internal */
export interface FrontstageNineZoneStateChangedEventArgs extends FrontstageEventArgs {
    state: NineZoneState | undefined;
}
/** FrontstageDef class provides an API for a Frontstage.
 * @public
 */
export declare class FrontstageDef {
    private _id;
    private _initialProps?;
    private _defaultTool?;
    private _defaultContentId;
    private _isInFooterMode;
    private _isStageClosing;
    private _isReady;
    private _isApplicationClosing;
    private _applicationData?;
    private _usage?;
    private _version;
    private _topLeft?;
    private _topCenter?;
    private _topRight?;
    private _centerLeft?;
    private _centerRight?;
    private _bottomLeft?;
    private _bottomCenter?;
    private _bottomRight?;
    private _topPanel?;
    private _topMostPanel?;
    private _leftPanel?;
    private _rightPanel?;
    private _bottomPanel?;
    private _bottomMostPanel?;
    private _contentLayoutDef?;
    private _contentGroup?;
    private _frontstageProvider?;
    private _nineZone?;
    private _timeTracker;
    private _nineZoneState?;
    private _contentGroupProvider?;
    private _floatingContentControls?;
    private _savedWidgetDefs?;
    get id(): string;
    /** @deprecated in 3.6. UI 1.0 will be removed in AppUi 4.0.*/
    get defaultTool(): ToolItemDef | undefined;
    /** @deprecated in 3.6. UI 1.0 will be removed in AppUi 4.0.*/
    get defaultContentId(): string;
    get isInFooterMode(): boolean;
    /** @deprecated in 3.6. UI 1.0 will be removed in AppUi 4.0.*/
    get applicationData(): any | undefined;
    get usage(): string;
    get version(): number;
    get contentGroupProvider(): ContentGroupProvider | undefined;
    get floatingContentControls(): ContentControl[] | undefined;
    /** @deprecated in 3.6. Use [[FrontstageDef.contentManipulation]] instead. */
    get topLeft(): ZoneDef | undefined;
    /** @deprecated in 3.6. Use [[FrontstageDef.toolSettings]] instead. */
    get topCenter(): ZoneDef | undefined;
    /** @deprecated in 3.6. Use [[FrontstageDef.viewNavigation]] instead. */
    get topRight(): ZoneDef | undefined;
    /** @deprecated in 3.6. Use [[FrontstageDef.leftPanel]] instead. */
    get centerLeft(): ZoneDef | undefined;
    /** @deprecated in 3.6. Use [[FrontstageDef.rightPanel]] instead. */
    get centerRight(): ZoneDef | undefined;
    /** @deprecated in 3.6. Use [[FrontstageDef.leftPanel]] instead. */
    get bottomLeft(): ZoneDef | undefined;
    /** @deprecated in 3.6. Use [[FrontstageDef.statusBar]] instead. */
    get bottomCenter(): ZoneDef | undefined;
    /** @deprecated in 3.6. Use [[FrontstageDef.rightPanel]] instead. */
    get bottomRight(): ZoneDef | undefined;
    /** @beta */
    get toolSettings(): WidgetDef | undefined;
    /** @beta */
    get statusBar(): WidgetDef | undefined;
    /** @beta */
    get contentManipulation(): WidgetDef | undefined;
    /** @beta */
    get viewNavigation(): WidgetDef | undefined;
    /** @beta */
    get topPanel(): StagePanelDef | undefined;
    /** @beta
     * @deprecated in 3.0. Only topPanel is supported in UI 2.0 */
    get topMostPanel(): StagePanelDef | undefined;
    /** @beta */
    get leftPanel(): StagePanelDef | undefined;
    /** @beta */
    get rightPanel(): StagePanelDef | undefined;
    /** @beta */
    get bottomPanel(): StagePanelDef | undefined;
    /** @beta
     * @deprecated in 3.0. Only bottomPanel is supported in UI 2.0  */
    get bottomMostPanel(): StagePanelDef | undefined;
    get contentLayoutDef(): ContentLayoutDef | undefined;
    get contentGroup(): ContentGroup | undefined;
    get frontstageProvider(): FrontstageProvider | undefined;
    /** @internal */
    get nineZone(): NineZoneManagerProps | undefined;
    set nineZone(props: NineZoneManagerProps | undefined);
    private toStagePanelLocation;
    private populateStateMaps;
    private triggerStateChangeEventForWidgetsAndPanels;
    /** @internal */
    get nineZoneState(): NineZoneState | undefined;
    set nineZoneState(state: NineZoneState | undefined);
    /** @internal */
    get savedWidgetDefs(): SavedWidgets | undefined;
    set savedWidgetDefs(widgets: SavedWidgets | undefined);
    /** @internal */
    get timeTracker(): TimeTracker;
    /** Created a [[FrontstageDef]] and initialize it */
    static create(provider: FrontstageProvider): Promise<FrontstageDef>;
    /** Handles when the Frontstage becomes activated */
    protected _onActivated(): Promise<void>;
    /** Handles when the Frontstage becomes activated */
    onActivated(): Promise<void>;
    /** Handles when the Frontstage becomes inactive */
    protected _onDeactivated(): Promise<void>;
    /** Handles when the Frontstage becomes inactive */
    onDeactivated(): Promise<void>;
    /** @internal */
    setIsApplicationClosing(value: boolean): void;
    /** Returns once the contained widgets and content controls are ready to use */
    waitUntilReady(): Promise<void>;
    /** Handles when the Frontstage becomes active */
    protected _onFrontstageReady(): void;
    /** Handles when the Frontstage becomes active */
    onFrontstageReady(): void;
    /** Starts the default tool for the Frontstage.
     * @deprecated in 3.6. UI 1.0 will be removed in AppUi 4.0.
     */
    startDefaultTool(): void;
    /** Sets the Content Layout and Content Group */
    setContentLayoutAndGroup(contentLayoutDef: ContentLayoutDef, contentGroup: ContentGroup): void;
    /** Sets the active view content control to the default or first */
    setActiveContent(): Promise<boolean>;
    /** Sets the active view content control */
    setActiveView(newContent: ContentControl, oldContent?: ContentControl): void;
    /** Sets the active view content control based on the selected viewport. */
    setActiveViewFromViewport(viewport: ScreenViewport): boolean;
    /** Gets a [[ZoneDef]] based on a given zone id.
     * @deprecated in 3.6. UI1.0 is deprecated.
     */
    getZoneDef(zoneId: number): ZoneDef | undefined;
    /** Gets a list of [[ZoneDef]]s.
     * @deprecated in 3.6. UI1.0 is deprecated.
     */
    get zoneDefs(): ZoneDef[];
    /** Gets a [[StagePanelDef]] based on a given panel location
     * @beta
     */
    getStagePanelDef(location: StagePanelLocation): StagePanelDef | undefined;
    /** Gets a list of [[StagePanelDef]]s
     * @beta
     */
    get panelDefs(): StagePanelDef[];
    /** Finds a [[WidgetDef]] based on a given id */
    findWidgetDef(id: string): WidgetDef | undefined;
    /** Gets the list of [[WidgetControl]]s */
    private get _widgetControls();
    addFloatingContentControl(contentControl?: ContentControl): void;
    dropFloatingContentControl(contentControl?: ContentControl): void;
    /** Gets the list of [[ContentControl]]s */
    get contentControls(): ContentControl[];
    /** Initializes a FrontstageDef from FrontstageProps
     * @internal
     */
    initializeFromProps(props: FrontstageProps): Promise<void>;
    /** @internal */
    updateWidgetDefs(): void;
    /** @beta */
    restoreLayout(): void;
    /** Used only in UI 2.0 to determine WidgetState from NinezoneState
     *  @internal
     */
    getWidgetCurrentState(widgetDef: WidgetDef): WidgetState | undefined;
    /** Used only in UI 2.0 to determine StagePanelState and size from NinezoneState
     *  @internal
     */
    getPanelCurrentState(panelDef: StagePanelDef): [StagePanelState, number];
    isPopoutWidget(widgetId: string): boolean;
    isFloatingWidget(widgetId: string): boolean;
    /** Create a new floating panel that contains the widget specified by its Id. Supported only when in
     *  UI 2.0 or higher.
     * @param widgetId case sensitive Widget Id
     * @param point Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.
     * @param size defines the width and height of the floating panel. If undefined and widget has been floated before
     * the previous size is used, else {height:400, width:400} is used.
     * @beta
     */
    floatWidget(widgetId: string, point?: PointProps, size?: SizeProps): void;
    /** Check widget and panel state to determine whether the widget is currently displayed
     * @param widgetId case-sensitive Widget Id
     * @public
     */
    isWidgetDisplayed(widgetId: string): boolean;
    /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.
     * @internal */
    openPopoutWidgetContainer(state: NineZoneState, widgetContainerId: string): void;
    /** Create a new popout/child window that contains the widget specified by its Id. Supported only when in
     *  UI 2.0 or higher.
     * @param widgetId case sensitive Widget Id
     * @param point Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.
     * @param size defines the width and height of the floating panel. If undefined and widget has been floated before
     * the previous size is used, else {height:800, width:600} is used.
     * @beta
     */
    popoutWidget(widgetId: string, point?: PointProps, size?: SizeProps): void;
    get isStageClosing(): boolean;
    get isApplicationClosing(): boolean;
    get isReady(): boolean;
    /** @internal */
    saveChildWindowSizeAndPosition(childWindowId: string, childWindow: Window): void;
    /** Method used to possibly change a Popout Widget back to a docked widget if the user was the one closing the popout's child
     * window.
     *  @internal
     */
    dockPopoutWidgetContainer(widgetContainerId: string): void;
    /** Finds the container with the specified widget and re-docks all widgets
     * back to the panel zone location that was used when the floating container
     * was generated. Supported only when in UI 2.0 or higher.
     * @param widgetId  case sensitive Widget Id.
     * @beta
     */
    dockWidgetContainer(widgetId: string): void;
    setFloatingWidgetContainerBounds(floatingWidgetId: string, bounds: RectangleProps): boolean;
    getFloatingWidgetContainerIds(): string[];
    getFloatingWidgetContainerIdByWidgetId(widgetId: string): string | undefined;
    getFloatingWidgetContainerBounds(floatingWidgetId: string | undefined): RectangleProps | undefined;
    private _widgetDefs;
    /** Iterable of all widget definitions in a frontstage.
     * @internal
     */
    get widgetDefs(): {
        [Symbol.iterator](): Iterator<WidgetDef, any, undefined>;
    };
}
//# sourceMappingURL=FrontstageDef.d.ts.map