/** @packageDocumentation
 * @module Frontstage
 */
import { UiEvent } from "@itwin/appui-abstract";
import type { NineZoneState, PanelSide } from "@itwin/appui-layout-react";
import { WidgetDef } from "../widgets/WidgetDef";
import { WidgetHost } from "../widgets/WidgetHost";
import type { StagePanelConfig, StagePanelMaxSizeSpec, StagePanelSectionConfig } from "./StagePanelConfig";
import { StagePanelLocation } from "./StagePanelLocation";
import { StagePanelSection } from "./StagePanelSection";
/** Enum for StagePanel state.
 * @public
 */
export declare enum StagePanelState {
    Off = 0,
    Minimized = 1,
    Open = 2,
    Popup = 3
}
/** Panel state changed event args interface.
 * @public
 */
export interface PanelStateChangedEventArgs {
    panelDef: StagePanelDef;
    panelState: StagePanelState;
}
/** Panel state changed event class.
 * @beta
 */
export declare class PanelStateChangedEvent extends UiEvent<PanelStateChangedEventArgs> {
}
/** @internal */
export interface PanelSizeChangedEventArgs {
    panelDef: StagePanelDef;
    size: number | undefined;
}
/** @internal */
export declare class PanelSizeChangedEvent extends UiEvent<PanelSizeChangedEventArgs> {
}
/** Panel pinned changed event args interface.
 * @public
 */
export interface PanelPinnedChangedEventArgs {
    panelDef: StagePanelDef;
    pinned: boolean;
}
/**
 * A StagePanelDef represents each Stage Panel within a Frontstage.
 * @public
 */
export declare class StagePanelDef extends WidgetHost {
    private _panelState;
    private _defaultState;
    private _maxSizeSpec;
    private _minSize;
    private _size;
    private _defaultSize;
    private _resizable;
    private _pinned;
    private _location;
    private _start;
    private _end;
    /** Constructor for PanelDef.
     */
    constructor();
    /** @internal */
    get maxSizeSpec(): StagePanelMaxSizeSpec | undefined;
    /** @internal */
    get minSize(): number | undefined;
    /** Default size of the panel */
    get size(): number | undefined;
    set size(size: number | undefined);
    /** Indicates whether the panel is resizable. */
    get resizable(): boolean;
    /** Indicates whether the panel is pinned. */
    get pinned(): boolean;
    set pinned(pinned: boolean);
    /** Location of panel. */
    get location(): StagePanelLocation;
    /** Panel state. Defaults to PanelState.Open. */
    get panelState(): StagePanelState;
    set panelState(panelState: StagePanelState);
    /** @internal */
    get defaultState(): StagePanelState;
    /** @internal */
    get defaultSize(): number | undefined;
    /** @internal */
    static create(config: StagePanelConfig, location: StagePanelLocation): StagePanelDef;
    /** @internal */
    initializeFromConfig(config: StagePanelConfig | undefined, location: StagePanelLocation): void;
    /** Gets the list of Widgets. */
    get widgetDefs(): ReadonlyArray<WidgetDef>;
    /** @internal */
    updateDynamicWidgetDefs(stageId: string, stageUsage: string, location: StagePanelLocation, _section: StagePanelSection | undefined, allStageWidgetDefs: WidgetDef[]): void;
    /** @internal */
    getPanelSectionDef(section: StagePanelSection): StagePanelSectionDef;
}
/** @internal */
export declare class StagePanelSectionDef extends WidgetHost {
    /** @internal */
    initializeFromConfig(config: StagePanelSectionConfig | undefined): void;
}
/** @internal */
export declare function toPanelSide(location: StagePanelLocation): PanelSide;
/** @internal */
export declare const setPanelSize: (nineZone: NineZoneState, side: PanelSide, size: number | undefined) => NineZoneState;
/** @internal */
export declare const setPanelPinned: (nineZone: NineZoneState, side: PanelSide, pinned: boolean) => NineZoneState;
//# sourceMappingURL=StagePanelDef.d.ts.map