import { FC, HTMLAttributes } from 'react';
import { AlignmentOffset, AlignmentMode, BuildingSVGGroupClickHandler, InteractionMode, PVSystemResponse, RooftopGeometryResponse } from '../../../types';
/**
* The PV System Visualizer component allows sales members and homeowners to visualize a rooftop PV system.
*
* This component takes in data from two Instant Design endpoints to display the current design:
* `POST Find or Create a Rooftop Geometry` and `POST PV System`.
* The `rooftopGeometryResponse` prop takes the `POST Find or Create a Rooftop Geometry` response,
* which provides the rooftop geometry and satellite image.
* The `pvSystemResponse` prop takes the `POST PV System` response,
* which provides the PV system design's image.
*/
export declare const PVSystemVisualizer: FC;
export interface PVSystemVisualizerProps extends HTMLAttributes {
/**
* The response from the `POST Find or Create a Rooftop Geometry` endpoint.
*/
rooftopGeometryResponse?: RooftopGeometryResponse;
/**
* The response from the `POST PV System` endpoint.
*/
pvSystemResponse?: PVSystemResponse;
/**
* Whether to allow clicking roof faces to perform the onRoofFaceClick callback function.
*/
allowRoofFaceInteraction?: boolean;
/**
* The function to call when allowRoofFaceInteraction is true and a roof face is clicked.
*/
onRoofFaceClick?: BuildingSVGGroupClickHandler;
/**
* Whether to allow clicking panels to perform the onPanelClick callback function.
*/
allowPanelInteraction?: boolean;
/**
* The function to call when allowPanelInteraction is true and a panel is clicked.
*/
onPanelClick?: BuildingSVGGroupClickHandler;
/**
* The interaction mode that the PV System Visualizer is currently in.
*/
interactionMode?: InteractionMode;
/**
* If true, show the building alignment screen. Overridden if `showPresentationView` is true.
*/
showAlignment?: boolean;
/**
* The method called when the building alignment visibility is changed.
*/
setShowAlignment?: (showAlignment: boolean) => void;
/**
* User interface options for the PV System Visualizer.
*/
alignmentOffset?: AlignmentOffset;
/**
* A callback function to be performed when one of the user interface options changes.
*/
onAlignmentOffsetChange?: (offset: AlignmentOffset) => void;
/**
* If true, show a non-editable version of the PV system.
*/
showPresentationView?: boolean;
/**
* If true, show a non-editable version of the PV system without the sidebar or dashboard.
*/
showImagesOnly?: boolean;
/**
* If true, show the PV System Visualizer in a loading state.
*/
showLoadingSpinner?: boolean;
/**
* The alignment mode we wwant to use. Only applies when in `showImagesOnly` mode.
*/
alignmentMode?: AlignmentMode;
/**
* If true, hide satellite imagery attribution.
*/
hideAttribution?: boolean;
/**
* A callback function invoked when the user completes adjusting the alignment offset.
*/
onAlignmentOffsetComplete?: () => void;
/**
* If true, the irradiance will be toggled
*/
showIrradianceView?: boolean;
}