/** @packageDocumentation
 * @module Widget
 */
import { BeUiEvent } from "@itwin/core-bentley";
import { StagePanelLocation, StagePanelSection } from "@itwin/appui-abstract";
import { ZoneLocation } from "../zones/Zone";
import { WidgetDef } from "./WidgetDef";
/** Information about WidgetDefs in the WidgetManager
 * @internal
 */
export interface WidgetInfo {
    widgetDef: WidgetDef;
    stageId?: string;
    stageUsage?: string;
    location: ZoneLocation | StagePanelLocation;
    section: StagePanelSection;
}
/** Arguments of [[this.onWidgetsChanged]] event.
 * @internal
 */
export interface WidgetsChangedEventArgs {
    readonly items: ReadonlyArray<WidgetInfo>;
}
/** Event class for [[this.onWidgetsChanged]].
 * @internal
 */
export declare class WidgetsChangedEvent extends BeUiEvent<WidgetsChangedEventArgs> {
}
/** Widget Manager class.
 * @beta
 */
export declare class WidgetManager {
    private _widgets;
    /** Event raised when Widgets are changed.
     * @internal
     */
    readonly onWidgetsChanged: WidgetsChangedEvent;
    /** @internal */
    get widgetCount(): number;
    /** @internal */
    get widgets(): ReadonlyArray<WidgetInfo>;
    set widgets(w: ReadonlyArray<WidgetInfo>);
    /** Adds a WidgetDef for use in a Frontstage.
     * @note Added `widgetDef` must return unique id to correctly save/restore App layout.
     * Semi-stable id is generated when auto-generated `widgetDef` id is detected,
     * but correctness of such id depends on `addWidgetDef` call order and widget location.
     */
    addWidgetDef(widgetDef: WidgetDef, stageId: string | undefined, stageUsage: string | undefined, location: ZoneLocation | StagePanelLocation, section?: StagePanelSection): boolean;
    /** Removes a WidgetDef.
     */
    removeWidgetDef(widgetId: string): boolean;
    private getStagePanelLocationFromZoneLocation;
    /** Gets WidgetDefs for a Frontstage location.
     */
    getWidgetDefs(stageId: string, stageUsage: string, location: ZoneLocation | StagePanelLocation, section?: StagePanelSection, frontstageApplicationData?: any): ReadonlyArray<WidgetDef> | undefined;
}
//# sourceMappingURL=WidgetManager.d.ts.map