import * as React from "react";
/**
 * The default set of component names
 *
 * @export
 * @class DefaultComponentNames
 */
export declare enum DefaultComponentNames {
    Legend = "Legend",
    SelectionPanel = "SelectionPanel",
    Map = "Map",
    Navigator = "Navigator",
    MouseCoordinates = "MouseCoordinates",
    ScaleDisplay = "ScaleDisplay",
    SelectedFeatureCount = "SelectedFeatureCount",
    PoweredByMapGuide = "PoweredByMapGuide",
    TaskPane = "TaskPane",
    About = "About",
    SessionExpired = "SessionExpired",
    Measure = "Measure",
    ViewerOptions = "ViewerOptions",
    QuickPlot = "QuickPlot",
    BaseMapSwitcher = "BaseMapSwitcher",
    MapMenu = "MapMenu",
    ViewSize = "ViewSize",
    CoordinateTracker = "CoordinateTracker",
    AddManageLayers = "AddManageLayers",
    ShareLinkToView = "ShareLinkToView"
}
/**
 * A react component factory function signature
 */
export declare type ComponentFactory = (props: any) => JSX.Element;
/**
 * Registers a react component factory function for the given component id
 *
 * @export
 * @param {string} id
 * @param {ComponentFactory} factory
 */
export declare function registerComponentFactory(id: string, factory: ComponentFactory): void;
/**
 * Gets the registered component factory function for the given component id
 *
 * @export
 * @param {string} id
 * @returns {ComponentFactory}
 */
export declare function getComponentFactory(id: string): ComponentFactory | undefined;
/**
 * Placeholder component properties
 *
 * @export
 * @interface IPlaceholderComponentProps
 */
export interface IPlaceholderComponentProps {
    /**
     * The id of the component this placeholder is for
     *
     * @type {string}
     * @memberOf IPlaceholderComponentProps
     */
    id: string;
    /**
     * The locale
     *
     * @type {string}
     * @memberOf IPlaceholderComponentProps
     */
    locale?: string;
    /**
     * The props of the underlying component
     *
     * @type {*}
     * @memberOf IPlaceholderComponentProps
     */
    componentProps?: any;
}
/**
 * A component placeholder
 *
 * @export
 * @class PlaceholderComponent
 * @extends {React.Component<IPlaceholderComponentProps, any>}
 */
export declare class PlaceholderComponent extends React.Component<IPlaceholderComponentProps, any> {
    constructor(props: IPlaceholderComponentProps);
    render(): JSX.Element;
}
