/** @packageDocumentation
 * @module ContentView
 */
import * as React from "react";
import type { Id64String } from "@itwin/core-bentley";
import type { IModelConnection, ScreenViewport, ViewState } from "@itwin/core-frontend";
import type { ViewStateProp } from "@itwin/imodel-components-react";
import { ViewportComponent } from "@itwin/imodel-components-react";
import type { ConfigurableCreateInfo } from "../configurableui/ConfigurableUiControl";
import { ViewportContentControl } from "./ViewportContentControl";
/** Viewport that is connected to the IModelConnection property in the Redux store. The application must set up the Redux store and include the FrameworkReducer.
 * @public
 */
export declare const IModelConnectedViewport: import("react-redux").ConnectedComponent<typeof ViewportComponent, any>;
/** [[IModelViewportControl]] options. These options are set in the applicationData property of the [[ContentProps]].
 * @public
 */
export interface IModelViewportControlOptions {
    /** ViewState or a function to return a ViewState */
    viewState?: ViewStateProp;
    /** IModelConnection of data in Viewport */
    iModelConnection?: IModelConnection | (() => IModelConnection);
    /** Map of options that can be used to enable/disable features within the view */
    featureOptions?: {
        [key: string]: any;
    };
    /** Optional background color which may be used if viewState and iModelConnection are undefined */
    bgColor?: string;
    /** Optional property to always use the supplied `viewState` property instead of using viewport.view when set */
    alwaysUseSuppliedViewState?: boolean;
    /** Optional property to supply custom view overlay. Uses when caller want to supply custom overlay component. */
    supplyViewOverlay?: (_viewport: ScreenViewport) => React.ReactNode;
    /** Optional property to defer reactNode initialization until first reactNode property is needed. Useful when subclassing the `IModelViewportControl`. */
    deferNodeInitialization?: boolean;
}
interface ViewOverlayHostProps {
    viewport: ScreenViewport;
    featureOptions?: {
        [key: string]: any;
    };
    userSuppliedOverlay?: (_viewport: ScreenViewport) => React.ReactNode;
}
/** View Overlay component -- exported for testing
 * @internal
 */
export declare function ViewOverlayHost({ viewport, featureOptions, userSuppliedOverlay, }: ViewOverlayHostProps): JSX.Element | null;
/** iModel Viewport Control
 * @public
 */
export declare class IModelViewportControl extends ViewportContentControl {
    protected _options: IModelViewportControlOptions;
    static get id(): string;
    protected _featureOptions: {
        [key: string]: boolean | string;
    };
    protected _viewState: ViewStateProp | undefined;
    protected _iModelConnection: IModelConnection | undefined;
    protected _alwaysUseSuppliedViewState: boolean;
    private _userSuppliedViewOverlay?;
    constructor(info: ConfigurableCreateInfo, _options: IModelViewportControlOptions);
    protected initializeReactNode(): void;
    protected getReactNode(): React.ReactNode;
    /**
     * This is passed as a function to the ViewportComponent as the `viewState` prop in getImodelViewportReactElement().
     * It is called by ViewportComponent on a mount to resolve the viewState.
     */
    private _determineViewState;
    /** Get the React component that will contain the Viewport */
    protected getImodelConnectedViewportReactElement(): React.ReactNode;
    /** Get the React component that will contain the Viewport */
    protected getImodelViewportReactElement(iModelConnection: IModelConnection, viewState: ViewStateProp): React.ReactNode;
    /** Get the React component that will be shown when no iModel data is available */
    protected getNoContentReactElement(_options: IModelViewportControlOptions): React.ReactNode;
    /** Get the React.Element for a ViewSelector change. */
    getReactElementForViewSelectorChange(iModelConnection: IModelConnection, _unusedViewDefinitionId: Id64String, viewState: ViewState, _name: string): React.ReactNode;
    /** Get the default ViewOverlay unless parameter is set to not use it. May be override in an application specific sub-class  */
    protected _getViewOverlay: (vp: ScreenViewport) => React.ReactNode;
    /** Get the NavigationAidControl associated with this ContentControl */
    get navigationAidControl(): string;
}
export {};
//# sourceMappingURL=IModelViewport.d.ts.map