/** @packageDocumentation
 * @module State
 */
import type { XAndY } from "@itwin/core-geometry";
import type { CursorMenuItemProps, MenuItemProps } from "../shared/MenuItem.js";
import type { ActionsUnion, DeepReadonly } from "./redux-ts.js";
/** Definition of a cursor menu. If menuItems are empty the menu control is not displayed.
 * @public
 */
export interface CursorMenuPayload {
    position: XAndY;
    childWindowId?: string;
    items: CursorMenuItemProps[];
}
/** PresentationSelectionScope holds the id and the localized label for a selection scope supported for a specific iModel.
 * Added to avoid an api-extract error caused by using SelectionScope.
 * @public
 * @deprecated in 4.15.0. Use `selectionScopes` prop of {@link SelectionScopeField} component.
 */
export interface PresentationSelectionScope {
    id: string;
    label: string;
}
/** Definition of data added to Redux store to define cursor menu.  If menuItems are empty the menu control is not displayed.
 * To close the menu clear the menuItems or pass in undefined as the CursorData.
 * @public
 * @deprecated in 4.11.0. Use {@link CursorMenuPayload} instead.
 */
export interface CursorMenuData {
    position: XAndY;
    childWindowId?: string;
    items: MenuItemProps[];
}
/** Action Ids used by Redux and to send sync UI components. Typically used to refresh visibility or enable state of control.
 * Since these are also used as sync ids they should be in lowercase.
 * @note This is used by sync UI event APIs.
 * @public
 * @deprecated in 4.15.0. Use your preferred state management library instead.
 */
export declare enum SessionStateActionId {
    SetNumItemsSelected = "sessionstate:set-num-items-selected",
    SetAvailableSelectionScopes = "sessionstate:set-available-selection-scopes",
    SetSelectionScope = "sessionstate:set-selection-scope",
    SetActiveIModelId = "sessionstate:set-active-imodelid",
    SetIModelConnection = "sessionstate:set-imodel-connection",
    SetDefaultIModelViewportControlId = "sessionstate:set-default-viewportid",
    SetDefaultViewId = "sessionstate:set-default-viewid",
    SetDefaultViewState = "sessionstate:set-default-view-state",
    UpdateCursorMenu = "sessionstate:update-cursor-menu"
}
/** The portion of state managed by the SessionStateReducer.
 * @public
 * @deprecated in 4.15.0. Use your preferred state management library instead.
 */
export interface SessionState {
    /** @deprecated in 4.15.0. Use {@link UiFramework.getNumItemsSelected} instead. */
    numItemsSelected: number;
    /** @deprecated in 4.15.0. Use `selectionScopes` prop of {@link SelectionScopeField} instead. */
    availableSelectionScopes: PresentationSelectionScope[];
    /** @deprecated in 4.15.0. Use `activeScope` prop of {@link SelectionScopeField} instead. */
    activeSelectionScope: string;
    /** @deprecated in 4.15.0. Not used by AppUI components. */
    iModelId: string;
    /** @deprecated in 4.15.0. Not used by AppUI components. */
    defaultIModelViewportControlId: string | undefined;
    /** @deprecated in 4.15.0. Not used by AppUI components. */
    defaultViewId: string | undefined;
    /** @deprecated in 4.15.0. Use {@link UiFramework.getDefaultViewState} or {@link useActiveIModelConnection} instead. */
    defaultViewState: any;
    /** @deprecated in 4.15.0. Use {@link UiFramework.getIModelConnection} or {@link useActiveIModelConnection} instead. */
    iModelConnection: any;
    /** @deprecated in 4.11.0. Use {@link CursorMenuPayload} instead */
    cursorMenuData: CursorMenuData | undefined;
    /** @deprecated in 4.15.0. Use cursor APIs of {@link UiFramework}. */
    cursorMenuPayload: CursorMenuPayload | undefined;
}
/** An interface that allows redux connected object to dispatch changes to the SessionState reducer.
 * @beta
 * @deprecated in 4.15.0. Use your preferred state management library instead.
 */
export interface SessionStateActionsProps {
    setActiveIModelId: typeof SessionStateActions.setActiveIModelId;
    setAvailableSelectionScopes: typeof SessionStateActions.setAvailableSelectionScopes;
    setDefaultIModelViewportControlId: typeof SessionStateActions.setDefaultIModelViewportControlId;
    setDefaultViewId: typeof SessionStateActions.setDefaultViewId;
    setDefaultViewState: typeof SessionStateActions.setDefaultViewState;
    setIModelConnection: typeof SessionStateActions.setIModelConnection;
    setNumItemsSelected: typeof SessionStateActions.setNumItemsSelected;
    setSelectionScope: typeof SessionStateActions.setSelectionScope;
    updateCursorMenu: typeof SessionStateActions.updateCursorMenu;
}
/** An object with a function that creates each SessionStateReducer that can be handled by our reducer.
 * @public
 * @deprecated in 4.15.0. Use your preferred state management library instead.
 */
export declare const SessionStateActions: {
    setActiveIModelId: (iModelId: string) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetActiveIModelId, string>;
    setAvailableSelectionScopes: (availableSelectionScopes: PresentationSelectionScope[]) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetAvailableSelectionScopes, import("./redux-ts.js").DeepReadonlyArray<PresentationSelectionScope>>;
    setDefaultIModelViewportControlId: (iModelViewportControlId: string) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetDefaultIModelViewportControlId, string>;
    setDefaultViewId: (viewId: string) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetDefaultViewId, string>;
    setDefaultViewState: (viewState: any) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetDefaultViewState, any>;
    setNumItemsSelected: (numSelected: number) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetNumItemsSelected, number>;
    setIModelConnection: (iModelConnection: any) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetIModelConnection, any>;
    setSelectionScope: (activeSelectionScope: string) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetSelectionScope, string>;
    updateCursorMenu: (cursorMenuData: CursorMenuData | CursorMenuPayload) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.UpdateCursorMenu, import("./redux-ts.js").DeepReadonlyObject<CursorMenuData> | import("./redux-ts.js").DeepReadonlyObject<CursorMenuPayload>>;
};
/** Object that contains available actions that modify SessionState. Parent control's props should
 * extend from SessionStateActionsProps before using this in Redux 'connect' function.
 * @beta
 * @deprecated in 4.15.0. Use your preferred state management library instead.
 */
export declare const sessionStateMapDispatchToProps: {
    setActiveIModelId: (iModelId: string) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetActiveIModelId, string>;
    setAvailableSelectionScopes: (availableSelectionScopes: PresentationSelectionScope[]) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetAvailableSelectionScopes, import("./redux-ts.js").DeepReadonlyArray<PresentationSelectionScope>>;
    setDefaultIModelViewportControlId: (iModelViewportControlId: string) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetDefaultIModelViewportControlId, string>;
    setDefaultViewId: (viewId: string) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetDefaultViewId, string>;
    setDefaultViewState: (viewState: any) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetDefaultViewState, any>;
    setNumItemsSelected: (numSelected: number) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetNumItemsSelected, number>;
    setIModelConnection: (iModelConnection: any) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetIModelConnection, any>;
    setSelectionScope: (activeSelectionScope: string) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.SetSelectionScope, string>;
    updateCursorMenu: (cursorMenuData: CursorMenuData | CursorMenuPayload) => import("./redux-ts.js").ActionWithPayload<SessionStateActionId.UpdateCursorMenu, import("./redux-ts.js").DeepReadonlyObject<CursorMenuData> | import("./redux-ts.js").DeepReadonlyObject<CursorMenuPayload>>;
};
/** Union of SessionState Redux actions
 * @public
 * @deprecated in 4.15.0. Use your preferred state management library instead.
 */
export type SessionStateActionsUnion = ActionsUnion<typeof SessionStateActions>;
/** Handles actions to update SessionState.
 * @public
 * @deprecated in 4.15.0. Use your preferred state management library instead.
 */
export declare function SessionStateReducer(state: SessionState | undefined, action: SessionStateActionsUnion): DeepReadonly<SessionState>;
//# sourceMappingURL=SessionState.d.ts.map