/// <reference types="@geoscene/core/interfaces.d.ts" />
/// <reference types="../../index.d.ts" />
import { Use } from '@arcgis/lumina/controllers';
import { default as ShadowCast } from '@geoscene/core/widgets/ShadowCast.js';
import { PublicLitElement as LitElement, TargetedEvent } from '@arcgis/lumina';
import { GeosceneReferenceElement } from '../../utils/component-utils';

declare const useShadowCastWidget: (component: LitElement & Pick<ShadowCast, "icon" | "label" | "viewModel" | "headingLevel"> & {
    state?: unknown;
    viewModel?: __geoscene.ShadowCastViewModel | undefined;
    closed?: boolean;
    icon: import('@arcgis/components-utils').Nil | string;
    label: import('@arcgis/components-utils').Nil | string;
    referenceElement?: GeosceneReferenceElement | string;
    position: __geoscene.UIPosition;
    geosceneReady: import('@arcgis/lumina').EventEmitter;
    geoscenePropertyChange: import('@arcgis/lumina').EventEmitter<{
        name: string;
    }> | undefined;
    el: HTMLElement & {
        childElem?: HTMLElement & {
            ownedBy?: HTMLElement;
        };
        view?: __geoscene.LinkChartView | __geoscene.MapView | __geoscene.SceneView;
    };
    autoDestroyDisabled: boolean;
    destroy: () => Promise<void>;
}) => ShadowCast;
/**
 * The Shadow Cast component displays the cumulative shadows of 3D features in a [Scene](https://doc.geoscene.cn/javascript/4.33/references/map-components/geoscene-scene/).
 * This type of analysis is helpful in urban development, where new projects have to satisfy certain shadow duration constraints.
 *
 * The component calculates the cumulative shadows for a time range during a single day. The user can
 * configure the time range and select a calendar date. This time range and calendar date are only used
 * for the shadow analysis and are not connected to the lighting in the scene.
 * To control the lighting in the scene, the [Daylight](https://doc.geoscene.cn/javascript/4.33/references/map-components/geoscene-daylight/) component can be used.
 * Changing the timezone in the component updates the visualization by interpreting the time range as being
 * in that timezone. This behavior is different from the [Daylight](https://doc.geoscene.cn/javascript/4.33/references/map-components/geoscene-daylight/) component,
 * where selecting a timezone updates the [environment lighting's](https://doc.geoscene.cn/javascript/4.33/references/map-components/geoscene-scene/#environment) date and time according to the camera position.
 *
 * The component provides three [visualization modes](#visualizationType): threshold, duration, and discrete mode.
 *
 * In the **threshold** mode, only the areas that receive
 * shadows for more than a certain amount of time are displayed. In the image below, on May 1, 2021 the red areas receive
 * shadow for more than 4 hours within the time interval of 10AM to 4PM.
 *
 * [![threshold mode](https://doc.geoscene.cn/javascript/4.33/assets/img/apiref/widgets/shadow-cast/shadow-cast-threshold.png)](https://doc.geoscene.cn/javascript/4.33/sample-code/shadow-cast/)
 *
 * **Total shadow duration** mode displays the duration of the cumulative shadow using opacity: areas that don't
 * receive any shadow are fully transparent and areas that receive a maximum amount of shadow have a default opacity
 * of 0.7. The values in between are interpolated. Hovering over the Scene will display a tooltip showing the
 * amount of time that location is in shadow, rounded to 15-minute intervals. In this mode, the visualization
 * can display shadow cast in a continuous way or in 1-hour intervals.
 *
 * [![duration mode](https://doc.geoscene.cn/javascript/4.33/assets/img/apiref/widgets/shadow-cast/shadow-cast-duration.png)](https://doc.geoscene.cn/javascript/4.33/sample-code/shadow-cast/)
 *
 * **Discrete shadows** is a third visualization mode which displays individual shadows at a given time interval.
 * For example, setting the time range to 10AM-11AM and the visualization time interval to 30 minutes will display
 * shadows for 10AM, 10:30AM and 11:00AM.
 *
 * [![discrete mode](https://doc.geoscene.cn/javascript/4.33/assets/img/apiref/widgets/shadow-cast/shadow-cast-discrete.png)](https://doc.geoscene.cn/javascript/4.33/sample-code/shadow-cast/)
 *
 * The defaults for the time range and visualization settings can be changed using the [startTimeOfDay](#startTimeOfDay), [endTimeOfDay](#endTimeOfDay), and [visualizationType](#visualizationType) properties.
 *
 * **Known limitations**
 *
 * * Shadow Cast is only supported in a 3D [Scene](https://doc.geoscene.cn/javascript/4.33/references/map-components/geoscene-scene/) component.
 * * Terrain does not cast shadows and it is therefore not taken into account in this analysis.
 * * The component does not take into account the daylight savings.
 * Use the timezone dropdown to adjust the offset from the Coordinated Universal Time (UTC) and account for the daylight saving time.
 * * The timezone is automatically detected by the component based on the camera location. In some situations, this might not be accurate.
 * In case of an inaccurate timezone, users can set it manually using the timezone dropdown.
 *
 * **See also**
 *
 * - [Sample - Shadow cast component](https://doc.geoscene.cn/javascript/4.33/sample-code/shadow-cast/)
 *
 * [Read more...](https://doc.geoscene.cn/javascript/4.33/references/map-components/geoscene-shadow-cast/)
 */
export declare class GeosceneShadowCast extends LitElement {
    /**
     * If true, the component will not be destroyed automatically when it is
     * disconnected from the document. This is useful when you want to move the
     * component to a different place on the page, or temporarily hide it. If this
     * is set, make sure to call the [destroy](https://doc.geoscene.cn/javascript/4.33/references/map-components/geoscene-shadow-cast/#destroy) method when you are done to
     * prevent memory leaks.
     *
     * @default false
     */
    autoDestroyDisabled: boolean;
    /**
     * The calendar date used to calculate the shadow cast. This date excludes the time. If a date with a time is set, the time value will be set to midnight (`00:00:00`) of that date in local system time.
     * If no date is set, then it defaults to the current date in local system time.
     *
     * _See also_
     *
     * * [Date](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date)
     */
    get date(): Date;
    set date(value: Date | number | string);
    /**
     * The configuration used when the component's [visualizationType](#visualizationType)
     * is set to "discrete".
     *
     * [Read more](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-ShadowCast-DiscreteOptions.html)
     */
    discreteOptions: __geoscene.DiscreteOptions;
    /**
     * The configuration used when the component's [visualizationType](#visualizationType)
     * is set to "duration".
     *
     * [Read more](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-ShadowCast-DurationOptions.html)
     */
    durationOptions: __geoscene.DurationOptions;
    /**
     * Time (in milliseconds from midnight of the [date](#date)) when the shadow cast computation should stop.
     *
     * [Read more](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-ShadowCast-ShadowCastViewModel.html#endTimeOfDay)
     *
     * @default 16 * 3600 * 1000
     */
    endTimeOfDay: number;
    /**
     * Indicates the heading level to use for the titles "Time range" and "Visualization".
     *
     * @default 4
     */
    headingLevel: number;
    /** @default false */
    hideColorPicker: boolean;
    /** @default false */
    hideDatePicker: boolean;
    /** @default false */
    hideTimeRangeSlider: boolean;
    /** @default false */
    hideTimezone: boolean;
    /** @default false */
    hideTooltip: boolean;
    /** @default false */
    hideVisualizationOptions: boolean;
    /** @default false */
    hideThresholdContext: boolean;
    /** @default false */
    hideThresholdContextColor: boolean;
    /** @default false */
    hideThresholdContextTimeInterval: boolean;
    /** @default false */
    hideThresholdContextToggle: boolean;
    /**
     * Icon which represents the component. Typically used when the component is controlled by another component (e.g. by the Expand component).
     *
     * See also: [Calcite Icons](https://doc.geoscene.cn/calcite-design-system/icons/)
     *
     * @default "measure-building-height-shadow"
     */
    icon: string;
    /** The component's default label. */
    label: string;
    /** @default "bottom-left" */
    position: __geoscene.UIPosition;
    /**
     * By assigning the `id` attribute of the Map or Scene component to this property, you can position a child component anywhere in the DOM while still maintaining a connection to the Map or Scene.
     *
     * @see [Associate components with a Map or Scene component](https://doc.geoscene.cn/javascript/4.33/programming-patterns/#associate-components-with-a-map-or-scene-component)
     */
    referenceElement?: GeosceneReferenceElement | string;
    /**
     * Time (in milliseconds from midnight of the [date](#date)) when the shadow cast computation should start.
     *
     * [Read more](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-ShadowCast-ShadowCastViewModel.html#startTimeOfDay)
     *
     * @default 10 * 3600 * 1000
     */
    startTimeOfDay: number;
    /**
     * The component's state. The values mean the following:
     *
     * * `disabled` -  component is being created
     * * `ready` - component is ready
     *
     * @default "disabled"
     */
    readonly state: "ready" | "disabled";
    /**
     * The configuration used when the component's [visualizationType](#visualizationType)
     * is set to "threshold".
     *
     * [Read more](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-ShadowCast-ThresholdOptions.html)
     */
    thresholdOptions: __geoscene.ThresholdOptions;
    /** The difference in hours between UTC time and the times displayed in the component. */
    utcOffset: number;
    /**
     * Type of visualization to use when showing the shadows. There are 3 types of visualization:
     * * `threshold` - only displays areas that receive shadows for a period longer than a given threshold value
     * * `duration` - displays all areas that receive shadows either in a continuous mode or in 1 hour time intervals
     * * `discrete` - displays individual shadows cast at a given time interval
     *
     * @default "threshold"
     */
    visualizationType: "duration" | "threshold" | "discrete";
    /** Permanently destroy the component. */
    destroy(): Promise<void>;
    /**
     * Returns the time (in milliseconds) spent in shadow for a certain point on the screen.
     *
     * [Read more](https://doc.geoscene.cn/javascript/4.33/api-reference/geoscene-widgets-ShadowCast-ShadowCastViewModel.html#getDuration)
     */
    getDuration(point: __geoscene.Point): Promise<number>;
    /** Starts the component. While running, it will automatically perform shadow accumulation. */
    start(): Promise<void>;
    /** Stops the component. */
    stop(): Promise<void>;
    /** Emitted when the value of a property is changed. Use this to listen to changes to properties. */
    readonly geoscenePropertyChange: TargetedEvent<this, {
        name: "state";
    }>;
    /** Emitted when the component associated with a map or scene view is is ready to be interacted with. */
    readonly geosceneReady: TargetedEvent<this, void>;
    readonly _setterTypes: {
        date?: Date | number | string;
    };
}
export {};