/** @packageDocumentation
 * @module Picker
 */
import * as React from "react";
import { UiEvent } from "@itwin/appui-abstract";
import type { Id64String } from "@itwin/core-bentley";
import type { IModelConnection, ViewState } from "@itwin/core-frontend";
import type { ListItem } from "./ListPicker.js";
/** [[ViewSelectorChangedEvent]] Args interface.
 * @beta
 * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.
 */
export interface ViewSelectorChangedEventArgs {
    iModelConnection: IModelConnection;
    viewDefinitionId: Id64String;
    viewState: ViewState;
    name: string;
}
/** ViewSelector Changed Event class.
 * @beta
 * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.
 */
export declare class ViewSelectorChangedEvent extends UiEvent<ViewSelectorChangedEventArgs> {
}
/** Properties for the [[ViewSelector]] component
 * @beta
 */
export interface ViewSelectorProps {
    imodel?: IModelConnection;
    listenForShowUpdates?: boolean;
    onViewSelected?: (args: {
        iModelConnection: IModelConnection;
        viewDefinitionId: Id64String;
        viewState: ViewState;
        name: string;
    }) => void;
    showSpatials: boolean;
    showDrawings: boolean;
    showSheets: boolean;
    showUnknown: boolean;
    searchBox?: boolean;
    panelOnly?: boolean;
}
/** State for the [[ViewSelector]] component
 * @beta
 */
interface ViewSelectorState {
    items: ListItem[];
    title: string;
    initialized: boolean;
    showSpatials: boolean;
    showDrawings: boolean;
    showSheets: boolean;
    showUnknown: boolean;
    searchBox: boolean;
    panelOnly: boolean;
    expand: boolean;
}
/** Default properties of [[ViewSelector]] component.
 * @beta
 */
export type ViewSelectorDefaultProps = Pick<ViewSelectorProps, "showSpatials" | "showDrawings" | "showSheets" | "showUnknown">;
/** View Selector React component
 * @beta
 */
export declare class ViewSelector extends React.Component<ViewSelectorProps, ViewSelectorState> {
    private static readonly _onViewSelectorShowUpdateEvent;
    private _removeShowUpdateListener?;
    private _isMounted;
    private _searchInput;
    static readonly defaultProps: ViewSelectorDefaultProps;
    /** Gets the [[ViewSelectorChangedEvent]].
     * @deprecated in 4.16.0. Use {@link ViewSelectorProps.onViewSelected} prop instead.
     */
    static readonly onViewSelectorChangedEvent: ViewSelectorChangedEvent;
    /** Updates the ViewSelector show settings.
     */
    static updateShowSettings(showSpatials: boolean, showDrawings: boolean, showSheets: boolean, showUnknown: boolean): void;
    /** Creates a ViewSelector */
    constructor(props: ViewSelectorProps);
    componentDidMount(): Promise<void>;
    /** @internal */
    componentDidUpdate(prevProps: ViewSelectorProps): Promise<void>;
    componentWillUnmount(): void;
    private _handleViewSelectorShowUpdateEvent;
    private setStateContainers;
    /**
     * Query the views and set the initial state with the iModel's views.
     */
    loadViews(): Promise<void>;
    /**
     * Update state of the entries in the widget.
     * @param viewId Identifier for the relevant view
     */
    updateState(viewId?: any): Promise<void>;
    private _setEnabled;
    private _onExpanded;
    /**
     *  Renders ViewSelector component
     */
    render(): React.JSX.Element;
}
type IModelConnectedViewSelectorProps = Omit<ViewSelectorProps, "imodel" | keyof ViewSelectorDefaultProps> & Partial<ViewSelectorDefaultProps>;
/** ViewSelector that is connected to the IModelConnection property in the Redux store. The application must set up the Redux store and include the FrameworkReducer.
 * @note Requires redux provider.
 * @beta
 * @deprecated in 4.15.0. Use {@link ViewSelector} instead.
 */
export declare function IModelConnectedViewSelector(props: IModelConnectedViewSelectorProps): React.JSX.Element;
export {};
//# sourceMappingURL=ViewSelector.d.ts.map