/** @packageDocumentation
 * @module DisplayStyles
 */
import { BeEvent, CompressedId64Set, Id64Array, Id64String, OrderedId64Iterable } from "@itwin/core-bentley";
import { XYZProps } from "@itwin/core-geometry";
import { AmbientOcclusion } from "./AmbientOcclusion";
import { AnalysisStyle, AnalysisStyleProps } from "./AnalysisStyle";
import { BackgroundMapSettings, PersistentBackgroundMapProps } from "./BackgroundMapSettings";
import { ClipStyle, ClipStyleProps } from "./ClipStyle";
import { ColorDef, ColorDefProps } from "./ColorDef";
import { DefinitionElementProps } from "./ElementProps";
import { HiddenLine } from "./HiddenLine";
import { FeatureAppearance, FeatureAppearanceProps } from "./FeatureSymbology";
import { PlanarClipMaskProps, PlanarClipMaskSettings } from "./PlanarClipMask";
import { SubCategoryOverride } from "./SubCategoryOverride";
import { LightSettings, LightSettingsProps } from "./LightSettings";
import { MapImageryProps, MapImagerySettings } from "./MapImagerySettings";
import { PlanProjectionSettings, PlanProjectionSettingsProps } from "./PlanProjectionSettings";
import { RenderSchedule } from "./RenderSchedule";
import { Environment, EnvironmentProps } from "./Environment";
import { SolarShadowSettings, SolarShadowSettingsProps } from "./SolarShadows";
import { SubCategoryAppearance } from "./SubCategoryAppearance";
import { ThematicDisplay, ThematicDisplayProps } from "./ThematicDisplay";
import { ViewFlagProps, ViewFlags } from "./ViewFlags";
import { Cartographic } from "./geometry/Cartographic";
import { IModel } from "./IModel";
import { ContextRealityModel, ContextRealityModelProps, ContextRealityModels } from "./ContextRealityModel";
import { RealityModelDisplayProps, RealityModelDisplaySettings } from "./RealityModelDisplaySettings";
import { WhiteOnWhiteReversalProps, WhiteOnWhiteReversalSettings } from "./WhiteOnWhiteReversalSettings";
import { ContourDisplay, ContourDisplayProps } from "./ContourDisplay";
/** Describes the [[SubCategoryOverride]]s applied to a [[SubCategory]] by a [[DisplayStyle]].
 * @see [[DisplayStyleSettingsProps]]
 * @public
 * @extensions
 */
export interface DisplayStyleSubCategoryProps extends SubCategoryAppearance.Props {
    /** The Id of the [[SubCategory]] whose appearance is to be overridden. */
    subCategory?: Id64String;
}
/** A [[FeatureAppearanceProps]] applied to a specific model to override its appearance within the context of a [DisplayStyle]($backend).
 * @see [[DisplayStyleSettingsProps.modelOvr]].
 * @public
 * @extensions
 */
export interface DisplayStyleModelAppearanceProps extends FeatureAppearanceProps {
    /** The Id of the model whose appearance is to be overridden. */
    modelId: Id64String;
}
/** [[RealityModelDisplaySettings]] applied to a reality [Model]($backend) to change how it is rendered within the context of a [DisplayStyle]($backend).
 * @see [[DisplayStyleSettingsProps.realityModelDisplay]].
 * @beta
 */
export interface DisplayStyleRealityModelDisplayProps extends RealityModelDisplayProps {
    /** The Id of the reality [Model]($backend) to which the settings apply. */
    modelId?: Id64String;
}
/** A [[PlanarClipMaskProps]] associated with a specific reality model.
 * @see [[DisplayStyleSettingsProps.planarClipOvr]].
 * @public
 * @extensions
 */
export interface DisplayStylePlanarClipMaskProps extends PlanarClipMaskProps {
    /** The Id of the model to mask. */
    modelId?: Id64String;
}
/** Describes the style in which monochrome color is applied by a [[DisplayStyleSettings]].
 * @public
 * @extensions
 */
export declare enum MonochromeMode {
    /** The color of the geometry is replaced with the monochrome color. e.g., if monochrome color is white, the geometry will be white. */
    Flat = 0,
    /** The color of surfaces is computed as normal, then scaled to a shade of the monochrome color based on the surface color's intensity.
     * For example, if the monochrome color is white, this results in a greyscale effect.
     * Geometry other than surfaces is treated the same as [[MonochromeMode.Flat]].
     */
    Scaled = 1
}
/** JSON representation of the [[DisplayStyleSettings]] associated with a [[DisplayStyleProps]].
 * These settings are not stored directly as members of the [[DisplayStyleProps]]. Instead, they are stored
 * as members of [[DisplayStyleProps.jsonProperties.styles]].
 * @public
 * @extensions
 */
export interface DisplayStyleSettingsProps {
    /** See [[DisplayStyleSettings.viewFlags]].
     * @note Be careful with the case of this field - it is spelled in all lower-case letters, while [[DisplayStyleSettings.viewFlags]] is spelled `viewFlags`.
     */
    viewflags?: ViewFlagProps;
    /** See [[DisplayStyleSettings.backgroundColor]]. */
    backgroundColor?: ColorDefProps;
    /** See [[DisplayStyleSettings.monochromeColor]]. */
    monochromeColor?: ColorDefProps;
    /** See [[DisplayStyleSettings.monochromeMode]]. */
    monochromeMode?: MonochromeMode;
    /** See [[DisplayStyleSettings.analysisStyle]]. */
    analysisStyle?: AnalysisStyleProps;
    /** See [[DisplayStyleSettings.analysisFraction]]. */
    analysisFraction?: number;
    /** See [[DisplayStyleSettings.scheduleScriptProps]]. */
    scheduleScript?: RenderSchedule.ScriptProps;
    /** See [[DisplayStyleSettings.renderTimeline]]. */
    renderTimeline?: Id64String;
    /** See [[DisplayStyleSettings.timePoint]]. */
    timePoint?: number;
    /** Overrides applied to the appearances of subcategories in the view.
     * See [[DisplayStyleSettings.overrideSubCategory]].
     */
    subCategoryOvr?: DisplayStyleSubCategoryProps[];
    /** See [[DisplayStyleSettings.backgroundMap]]. */
    backgroundMap?: PersistentBackgroundMapProps;
    /** See [[DisplayStyleSettings.contextRealityModels]]. */
    contextRealityModels?: ContextRealityModelProps[];
    /** Ids of elements not to be displayed in the view. Prefer the compressed format, especially when sending between frontend and backend - the number of Ids may be quite large.
     * See [[DisplayStyleSettings.excludedElements]].
     */
    excludedElements?: Id64Array | CompressedId64Set;
    /** See [[DisplayStyleSettings.mapImagery]].
     * @beta
     */
    mapImagery?: MapImageryProps;
    /** Overrides applied to the appearance of models in the view.
     * See [[DisplayStyleSettings.overrideModelAppearance]].
     */
    modelOvr?: DisplayStyleModelAppearanceProps[];
    /** Display settings applied to specific reality models in the view.
     * @see [[DisplayStyleSettings.setRealityModelDisplaySettings]].
     * @beta
     */
    realityModelDisplay?: DisplayStyleRealityModelDisplayProps[];
    /** See [[DisplayStyleSettings.clipStyle]]. */
    clipStyle?: ClipStyleProps;
    /** See [[DisplayStyleSettings.planarClipMasks]]. */
    planarClipOvr?: DisplayStylePlanarClipMaskProps[];
    /** See [[DisplayStyleSettings.whiteOnWhiteReversal]]. */
    whiteOnWhiteReversal?: WhiteOnWhiteReversalProps;
}
/** JSON representation of [[DisplayStyle3dSettings]]  associated with a [[DisplayStyle3dProps]].
 * @public
 * @extensions
 */
export interface DisplayStyle3dSettingsProps extends DisplayStyleSettingsProps {
    /** See [[DisplayStyle3dSettings.environment]]. */
    environment?: EnvironmentProps;
    /** See [[DisplayStyle3dSettings.thematic]]. */
    thematic?: ThematicDisplayProps;
    /** See [[DisplayStyle3dSettings.contours]]. */
    contours?: ContourDisplayProps;
    /** See [[DisplayStyle3dSettings.hiddenLineSettings]]. */
    hline?: HiddenLine.SettingsProps;
    /** See [[DisplayStyle3dSettings.ambientOcclusionSettings]]. */
    ao?: AmbientOcclusion.Props;
    /** See [[DisplayStyle3dSettings.solarShadows]]. */
    solarShadows?: SolarShadowSettingsProps;
    /** See [[DisplayStyle3dSettings.lights]]. */
    lights?: LightSettingsProps;
    /** See [[DisplayStyle3dSettings.planProjections]]. */
    planProjections?: {
        [modelId: string]: PlanProjectionSettingsProps;
    };
    /** Old lighting settings - only `sunDir` was ever used; it is now part of [[lights]].
     * DisplayStyle3dSettings will construct a LightSettings from sceneLights.sunDir IFF [[lights]] is not present.
     * @internal
     */
    sceneLights?: {
        sunDir?: XYZProps;
    };
}
/** JSON representation of a [[DisplayStyle]] or [[DisplayStyleState]].
 * @public
 * @extensions
 */
export interface DisplayStyleProps extends DefinitionElementProps {
    /** Display styles store their settings in a `styles` property within [[ElementProps.jsonProperties]]. */
    jsonProperties?: {
        styles?: DisplayStyleSettingsProps;
    };
}
/** JSON representation of a [[DisplayStyle3d]] or [[DisplayStyle3dState]].
 * @public
 * @extensions
 */
export interface DisplayStyle3dProps extends DisplayStyleProps {
    /** Display styles store their settings in a `styles` property within [[ElementProps.jsonProperties]]. */
    jsonProperties?: {
        styles?: DisplayStyle3dSettingsProps;
    };
}
/** Controls which settings are serialized by [[DisplayStyleSettings.toOverrides]]. A display style includes some settings that are specific to a given iModel - for example,
 * the subcategory overrides are indexed by subcategory Ids and model appearance overrides are indexed by model ids. Other settings are specific to a given iTwin, like the set of displayed context reality models. Such settings can be useful
 * when creating display style overrides intended for use with a specific iModel or iTwin, but should be omitted when creating general-purpose display style overrides intended
 * for use with any iModel or iTwin. This is the default behavior if no more specific options are provided.
 * @public
 * @extensions
 */
export interface DisplayStyleOverridesOptions {
    /** Serialize all settings. Applying the resultant [[DisplayStyleSettingsProps]] will produce a [[DisplayStyleSettings]] identical to the original settings. */
    includeAll?: true;
    /** Serialize iModel-specific settings. These settings are only meaningful within the context of a specific iModel. Setting this to `true` implies all iTwin-specific settings will be serialized too.
     * The following are iModel-specific settings:
     *  * Subcategory overrides.
     *  * Model Appearance overrides.
     *  * Classifiers associated with context reality models.
     *  * Analysis style.
     *  * Schedule script.
     *  * Excluded elements.
     *  * Plan projection settings.
     *  * Thematic sensor settings and height range. If iModel-specific settings are *not* serialized, sensors will be omitted and, for thematic height mode, the range will be omitted.
     *    * If the display style settings are associated with a [DisplayStyleState]($frontend), then overriding thematic settings will compute a default height range based on the iModel's project extents.
     */
    includeIModelSpecific?: true;
    /** Serialize iTwin-specific settings. These settings are only meaningful within the context of a specific iTwin. These settings are always included if `includeIModelSpecific` is `true`.
     * The following are iTwin-specific settings:
     *  * Context reality models. If iModel-specific settings are *not* serialized, the classifiers will be omitted.
     *  * Time point.
     */
    includeITwinSpecific?: true;
    /** Serialize settings related to drawing aid decorations (the ACS triad and the grid). */
    includeDrawingAids?: true;
    /** Serialize the background map settings. */
    includeBackgroundMap?: true;
}
/** Options supplied when constructing a [[DisplayStyleSettings]].
 * @public
 * @extensions
 */
export interface DisplayStyleSettingsOptions {
    /** A function that instantiates a [[ContextRealityModel]] to be stored in [[DisplayStyleSettings.contextRealityModels]]. */
    createContextRealityModel?: (props: ContextRealityModelProps) => ContextRealityModel;
    /** If true, the caller will populate contextRealityModels after construction.
     * @internal used by DisplayStyleState constructor.
     */
    deferContextRealityModels?: boolean;
}
/** Provides access to the settings defined by a [[DisplayStyle]] or [[DisplayStyleState]], and ensures that
 * the style's JSON properties are kept in sync.
 * @see [[DisplayStyleSettingsProps]] for the JSON representation of these settings.
 * @public
 */
export declare class DisplayStyleSettings {
    protected readonly _json: DisplayStyleSettingsProps;
    private _viewFlags;
    private _background;
    private _monochrome;
    private _monochromeMode;
    private readonly _subCategoryOverrides;
    private readonly _modelAppearanceOverrides;
    private readonly _realityModelDisplaySettings;
    private readonly _planarClipMasks;
    private readonly _excludedElements;
    private _backgroundMap;
    private _mapImagery;
    private _analysisStyle?;
    private _clipStyle;
    private readonly _contextRealityModels;
    private _whiteOnWhiteReversal;
    /** Returns true if this is a [[DisplayStyle3dSettings]]. */
    is3d(): this is DisplayStyle3dSettings;
    /** Planar clip masks to be applied to persistent reality models (@see [SpatialModelState.isRealityModel]($frontend).
     * The key for each entry is the Id of the model to which the mask settings apply.
     */
    get planarClipMasks(): Map<Id64String, PlanarClipMaskSettings>;
    /** Reality models to be displayed in the view. */
    get contextRealityModels(): ContextRealityModels;
    /** Event raised by [[applyOverrides]] just before the overrides are applied. */
    readonly onApplyOverrides: BeEvent<(overrides: Readonly<DisplayStyleSettingsProps>) => void>;
    /** Event raised by [[applyOverrides]] after the overrides are applied. */
    readonly onOverridesApplied: BeEvent<(overrides: Readonly<DisplayStyleSettingsProps>) => void>;
    /** Event raised just prior to assignment to the [[viewFlags]] property. */
    readonly onViewFlagsChanged: BeEvent<(newFlags: Readonly<ViewFlags>) => void>;
    /** Event raised just prior to assignment to the [[backgroundColor]] property. */
    readonly onBackgroundColorChanged: BeEvent<(newColor: ColorDef) => void>;
    /** Event raised just prior to assignment to the [[monochromeColor]] property. */
    readonly onMonochromeColorChanged: BeEvent<(newColor: ColorDef) => void>;
    /** Event raised just prior to assignment to the [[monochromeMode]] property. */
    readonly onMonochromeModeChanged: BeEvent<(newMode: MonochromeMode) => void>;
    /** Event raised just prior to assignment to the [[backgroundMap]] property. */
    readonly onBackgroundMapChanged: BeEvent<(newMap: BackgroundMapSettings) => void>;
    /** Event raised just prior to assignment to the [[mapImagery]] property.
     * @beta
     */
    readonly onMapImageryChanged: BeEvent<(newImagery: Readonly<MapImagerySettings>) => void>;
    /** Event raised just prior to assignment to the `scheduleScriptProps` property.
     * @see [[onRenderTimelineChanged]] to be notified when the [[renderTimeline]] property from which a script can be obtained is changed.
     */
    readonly onScheduleScriptPropsChanged: BeEvent<(newProps: Readonly<RenderSchedule.ScriptProps> | undefined) => void>;
    /** Event raised just prior to assignment to the [[renderTimeline]] property. */
    readonly onRenderTimelineChanged: BeEvent<(newRenderTimeline: Id64String | undefined) => void>;
    /** Event raised just prior to assignment to the [[timePoint]] property. */
    readonly onTimePointChanged: BeEvent<(newTimePoint: number | undefined) => void>;
    /** Event raised just prior to assignment to the [[analysisStyle]] property. */
    readonly onAnalysisStyleChanged: BeEvent<(newStyle: Readonly<AnalysisStyle> | undefined) => void>;
    /** Event raised just prior to assignment to the [[analysisFraction]] property. */
    readonly onAnalysisFractionChanged: BeEvent<(newFraction: number) => void>;
    /** Event raised when the contents of [[excludedElementIds]] changes. */
    readonly onExcludedElementsChanged: BeEvent<() => void>;
    /** Event raised just prior to assignment to the [[clipStyle]] property. */
    readonly onClipStyleChanged: BeEvent<(newStyle: ClipStyle) => void>;
    /** Event raised when the [[SubCategoryOverride]]s change. */
    readonly onSubCategoryOverridesChanged: BeEvent<(subCategoryId: Id64String, newOverrides: SubCategoryOverride | undefined) => void>;
    /** Event raised just before changing the appearance override for a model. */
    readonly onModelAppearanceOverrideChanged: BeEvent<(modelId: Id64String, newAppearance: FeatureAppearance | undefined) => void>;
    /** Event raised just before [[setRealityModelDisplaySettings]] changes the display settings for a reality model.
     * @beta
     */
    readonly onRealityModelDisplaySettingsChanged: BeEvent<(modelId: Id64String, newSettings: RealityModelDisplaySettings | undefined) => void>;
    /** Event raised just prior to assignment to the [[DisplayStyle3dSettings.thematic]] property. */
    readonly onThematicChanged: BeEvent<(newThematic: ThematicDisplay) => void>;
    /** Event raised just prior to assignment to the [[DisplayStyle3dSettings.contours]] property. */
    readonly onContoursChanged: BeEvent<(newContours: ContourDisplay) => void>;
    /** Event raised just prior to assignment to the [[DisplayStyle3dSettings.hiddenLineSettings]] property. */
    readonly onHiddenLineSettingsChanged: BeEvent<(newSettings: HiddenLine.Settings) => void>;
    /** Event raised just prior to assignment to the [[DisplayStyle3dSettings.ambientOcclusionSettings]] property. */
    readonly onAmbientOcclusionSettingsChanged: BeEvent<(newSettings: AmbientOcclusion.Settings) => void>;
    /** Event raised just prior to assignment to the [[DisplayStyle3dSettings.solarShadows]] property. */
    readonly onSolarShadowsChanged: BeEvent<(newSettings: SolarShadowSettings) => void>;
    /** Event raised just prior to assignment to the [[DisplayStyle3dSettings.environment]] property. */
    readonly onEnvironmentChanged: BeEvent<(newEnv: Readonly<Environment>) => void>;
    /** Event raised just prior to assignment to the [[DisplayStyle3dSettings.lights]] property. */
    readonly onLightsChanged: BeEvent<(newLights: LightSettings) => void>;
    /** Event raised just before changing the plan projection settings for a model. */
    readonly onPlanProjectionSettingsChanged: BeEvent<(modelId: Id64String, newSettings: PlanProjectionSettings | undefined) => void>;
    /** Event raised just before adding or removing an entry from [[planarClipMasks]]. */
    readonly onPlanarClipMaskChanged: BeEvent<(modelId: Id64String, newSettings: PlanarClipMaskSettings | undefined) => void>;
    /** Event raised just prior to assignment to the [[whiteOnWhiteReversal]] property. */
    readonly onWhiteOnWhiteReversalChanged: BeEvent<(newSettings: WhiteOnWhiteReversalSettings) => void>;
    /** Construct a new DisplayStyleSettings from an [[ElementProps.jsonProperties]].
     * @param jsonProperties An object with an optional `styles` property containing a display style's settings.
     * @param options Options for customizing the display style settings.
     * @note When the `DisplayStyleSetting`'s properties are modified by public setters, the `jsonProperties`'s `styles` object will be updated to reflect the change.
     * @note If `jsonProperties` contains no `styles` member, one will be added as an empty object.
     * @note Generally there is no reason to create an object of this type directly; a [[DisplayStyle]] or [[DisplayStyleState]] constructs one as part of its own construction.
     */
    constructor(jsonProperties: {
        styles?: DisplayStyleSettingsProps;
    }, options?: DisplayStyleSettingsOptions);
    /** Flags controlling various aspects of the display style. */
    get viewFlags(): ViewFlags;
    set viewFlags(flags: ViewFlags);
    /** The color displayed in the view background - by default, [[ColorDef.black]]. */
    get backgroundColor(): ColorDef;
    set backgroundColor(color: ColorDef);
    /** The color used to draw geometry when [[ViewFlags.monochrome]] is enabled - by default, [[ColorDef.white]].
     * The monochrome color is applied to all surfaces and linear geometry, but only applied to the **edges** of surfaces in [[RenderMode.Wireframe]].
     * @see [[monochromeMode]] to control how the color is applied.
     */
    get monochromeColor(): ColorDef;
    set monochromeColor(color: ColorDef);
    /** The style in which [[monochromeColor]] is applied when [[ViewFlags.monochrome]] is enabled - by default, [[MonochromeMode.Scaled]]. */
    get monochromeMode(): MonochromeMode;
    set monochromeMode(mode: MonochromeMode);
    /** Settings controlling display of the background map within views of geolocated models. */
    get backgroundMap(): BackgroundMapSettings;
    set backgroundMap(map: BackgroundMapSettings);
    /** Settings defining the map imagery layers to be displayed within the view.
     * @beta
     */
    get mapImagery(): MapImagerySettings;
    set mapImagery(mapImagery: MapImagerySettings);
    /** @internal
     * Handles keeping the map imagery layers in synch after changes have been made (used internally only by front end)
     */
    synchMapImagery(): void;
    /** The Id of a [RenderTimeline]($backend) element containing a [[RenderSchedule.Script]] used to animate the view.
     * If [[scheduleScriptProps]] is defined, it takes precedence over the script supplied by the RenderTimeline.
     * @note If this [[DisplayStyleSettings]] is associated with a [DisplayStyleState]($frontend), assigning to [[renderTimeline]] will enqueue asynchronous loading of
     * the script from the [RenderTimeline]($backend) element; for more readable code, prefer instead to `await` [DisplayStyleState.changeRenderTimeline]($frontend).
     * @see [[onRenderTimelineChanged]] to be notified of changes to this property.
     */
    get renderTimeline(): Id64String | undefined;
    set renderTimeline(id: Id64String | undefined);
    /** JSON representation of a [[RenderSchedule.Script]] embedded in the display style describing how to animate the contents of the view over time.
     * This script, if present, takes precedence over a script supplied by [[renderTimeline]].
     * @see [[onScheduleScriptPropsChanged]] to be notified when this property changes.
     * @see [DisplayStyleState.scheduleScript]($frontend) to change the [[RenderSchedule.Script]] object directly rather than via JSON.
     */
    get scheduleScriptProps(): RenderSchedule.ScriptProps | undefined;
    set scheduleScriptProps(props: RenderSchedule.ScriptProps | undefined);
    /** The point in time currently reflected by the view, expressed in seconds in the [Unix epoch](https://en.wikipedia.org/wiki/Unix_time).
     * This identifies a point on the timeline of the style's [[RenderSchedule.Script]], if any; it may also affect display of four-dimensional reality models.
     * @see [[onTimePointChanged]] to be notified of changes to this property.
     */
    get timePoint(): number | undefined;
    set timePoint(timePoint: number | undefined);
    /** Settings controlling the display of analytical models.
     * @see [[analysisFraction]] to control playback of the animation.
     */
    get analysisStyle(): AnalysisStyle | undefined;
    set analysisStyle(style: AnalysisStyle | undefined);
    /** A floating point value in [0..1] indicating the current point in animation of the [[analysisStyle]], where 0 corresponds to the beginning of
     * the animation and 1 to the end. Default: 0.0.
     */
    get analysisFraction(): number;
    set analysisFraction(fraction: number);
    /** Settings controlling how white-on-white reversal is applied when [[ViewFlags.whiteOnWhiteReversal]] is enabled. */
    get whiteOnWhiteReversal(): WhiteOnWhiteReversalSettings;
    set whiteOnWhiteReversal(settings: WhiteOnWhiteReversalSettings);
    /** Customize the way geometry belonging to a [[SubCategory]] is drawn by this display style.
     * @param id The Id of the SubCategory whose appearance is to be overridden.
     * @param ovr The overrides to apply to the [[SubCategoryAppearance]].
     * @see [[dropSubCategoryOverride]]
     */
    overrideSubCategory(id: Id64String, ovr: SubCategoryOverride): void;
    /** Remove any [[SubCategoryOverride]] applied to a [[SubCategoryAppearance]] by this style.
     * @param id The Id of the [[SubCategory]].
     * @see [[overrideSubCategory]]
     */
    dropSubCategoryOverride(id: Id64String): void;
    /** The overrides applied by this style. */
    get subCategoryOverrides(): Map<Id64String, SubCategoryOverride>;
    /** Obtain the override applied to a [[SubCategoryAppearance]] by this style.
     * @param id The Id of the [[SubCategory]].
     * @returns The corresponding SubCategoryOverride, or undefined if the SubCategory's appearance is not overridden.
     * @see [[overrideSubCategory]]
     */
    getSubCategoryOverride(id: Id64String): SubCategoryOverride | undefined;
    /** Returns true if an [[SubCategoryOverride]]s are defined by this style. */
    get hasSubCategoryOverride(): boolean;
    /** Customize the way a [Model]($backend)   is drawn by this display style.
     * @param modelId The Id of the [Model]($backend)  whose appearance is to be overridden.
     * @param ovr The overrides to apply to the [Model]($backend) .
     * @see [[dropModelAppearanceOverride]]
     */
    overrideModelAppearance(modelId: Id64String, ovr: FeatureAppearance): void;
    /** Remove any appearance overrides applied to a [Model]($backend)  by this style.
     * @param modelId The Id of the [Model]($backend) .
     * @param ovr The overrides to apply to the [Model]($backend) .
     * @see [[overrideModelAppearance]]
     */
    dropModelAppearanceOverride(id: Id64String): void;
    /** The overrides applied by this style. */
    get modelAppearanceOverrides(): Map<Id64String, FeatureAppearance>;
    /** Obtain the override applied to a [Model]($backend)  by this style.
     * @param id The Id of the [Model]($backend).
     * @returns The corresponding FeatureAppearance, or undefined if the Model's appearance is not overridden.
     * @see [[overrideModelAppearance]]
     */
    getModelAppearanceOverride(id: Id64String): FeatureAppearance | undefined;
    /** Returns true if model appearance overrides are defined by this style. */
    get hasModelAppearanceOverride(): boolean;
    /** Get any settings that override how the reality model with the specified Id is displayed.
     * @param modelId The Id of the [Model]($backend).
     * @returns the display settings, or `undefined` if no settings have been associated with `modelId`.
     * @see [[setRealityModelDisplaySettings]] to change the settings.
     * @beta
     */
    getRealityModelDisplaySettings(modelId: Id64String): RealityModelDisplaySettings | undefined;
    /** Change the settings that control how the reality model with the specified Id is displayed.
     * @param modelId The Id of the [Model]($backend) to which the settings apply.
     * @param settings The settings to apply to the model, or `undefined` to clear any previous settings for that model.
     * @beta
     */
    setRealityModelDisplaySettings(modelId: Id64String, settings: RealityModelDisplaySettings | undefined): void;
    /** The set of elements that will not be drawn by this display style.
     * @returns An iterable over the elements' Ids.
     */
    get excludedElementIds(): OrderedId64Iterable;
    /** @internal */
    get compressedExcludedElementIds(): CompressedId64Set;
    /** Add one or more elements to the set of elements not to be displayed.
     * @param id The Ids of the element(s) to be excluded.
     */
    addExcludedElements(id: Id64String | Iterable<Id64String>): void;
    /** Remove an element from the set of elements not to be displayed. */
    dropExcludedElement(id: Id64String): void;
    /** Remove one or more elements from the set of elements not to be displayed.
     * @param id The Ids of the element(s) to be removed from the set of excluded elements.
     */
    dropExcludedElements(id: Id64String | Iterable<Id64String>): void;
    /** Remove all elements from the set of elements not to be displayed. */
    clearExcludedElements(): void;
    /** The style applied to the view's [ClipVector]($core-geometry). */
    get clipStyle(): ClipStyle;
    set clipStyle(style: ClipStyle);
    /** Convert these settings to their JSON representation. */
    toJSON(): DisplayStyleSettingsProps;
    /** Serialize a subset of these settings to JSON, such that they can be applied to another DisplayStyleSettings to selectively override those settings.
     * @param options Specifies which settings should be serialized. By default, settings that are specific to an iModel (e.g., subcategory overrides) or iTwin (e.g., context reality models)
     * are omitted, as are drawing aids (e.g., ACS triad and grid).
     * @returns a JSON representation of the selected settings suitable for passing to [[applyOverrides]].
     * @see [[applyOverrides]] to apply the overrides to another DisplayStyleSettings..
     */
    toOverrides(options?: DisplayStyleOverridesOptions): DisplayStyleSettingsProps;
    /** Selectively override some of these settings. Any field that is explicitly defined by the input will be overridden in these settings; any fields left undefined in the input
     * will retain their current values in these settings. The input's [[ViewFlags]] are applied individually - only those flags that are explicitly defined will be overridden.
     * For example, the following overrides will set the render mode to "smooth", change the background color to white, turn shadows off, and leave all other settings intact:
     * ```ts
     *  {
     *    viewflags: {
     *      renderMode: RenderMode.SmoothShade,
     *      shadows: false,
     *    },
     *    backgroundColor: ColorByName.white,
     *  }
     * ```
     * @see [[toOverrides]] to produce overrides from an existing DisplayStyleSettings.
     */
    applyOverrides(overrides: DisplayStyleSettingsProps): void;
    /** @internal */
    protected _applyOverrides(overrides: DisplayStyleSettingsProps): void;
}
/** Provides access to the settings defined by a [[DisplayStyle3d]] or [[DisplayStyle3dState]], and ensures that
 * the style's JSON properties are kept in sync.
 * @public
 */
export declare class DisplayStyle3dSettings extends DisplayStyleSettings {
    private _thematic;
    private _contours;
    private _hline;
    private _ao;
    private _solarShadows;
    private _lights;
    private _environment;
    private _planProjections?;
    private get _json3d();
    is3d(): this is DisplayStyle3dSettings;
    constructor(jsonProperties: {
        styles?: DisplayStyle3dSettingsProps;
    }, options?: DisplayStyleSettingsOptions);
    private populatePlanProjectionsFromJSON;
    /** Convert these settings to their JSON representation. */
    toJSON(): DisplayStyle3dSettingsProps;
    /** See [[DisplayStyleSettings.toOverrides]]. */
    toOverrides(options?: DisplayStyleOverridesOptions): DisplayStyle3dSettingsProps;
    /** See [[DisplayStyleSettings.applyOverrides]]. */
    applyOverrides(overrides: DisplayStyle3dSettingsProps): void;
    /** The settings that control thematic display. */
    get thematic(): ThematicDisplay;
    set thematic(thematic: ThematicDisplay);
    /** The settings that control contour display. */
    get contours(): ContourDisplay;
    set contours(contours: ContourDisplay);
    /** The settings that control how visible and hidden edges are displayed.  */
    get hiddenLineSettings(): HiddenLine.Settings;
    set hiddenLineSettings(hline: HiddenLine.Settings);
    /** The settings that control how ambient occlusion is displayed. */
    get ambientOcclusionSettings(): AmbientOcclusion.Settings;
    set ambientOcclusionSettings(ao: AmbientOcclusion.Settings);
    /** The settings that control how solar shadows are displayed. */
    get solarShadows(): SolarShadowSettings;
    set solarShadows(solarShadows: SolarShadowSettings);
    /** Controls the display of a [[SkyBox]], [[GroundPlane]], and [[Atmosphere]].
     * @public
     */
    get environment(): Environment;
    set environment(environment: Environment);
    /** Toggle display of the [[environment]]'s [[SkyBox]].
     * @param display Whether to display the skybox, or `undefined` to toggle the current display.
     */
    toggleSkyBox(display?: boolean): void;
    /** Toggle display of the [[environment]]'s [[GroundPlane]].
     * @param display Whether to display the ground plane, or `undefined` to toggle the current display.
     */
    toggleGroundPlane(display?: boolean): void;
    /** Toggle display of the [[environment]]'s [[Atmosphere]].
     * @beta
     * @param display Whether to display the atmosphere, or `undefined` to toggle the current display.
     */
    toggleAtmosphere(display?: boolean): void;
    get lights(): LightSettings;
    set lights(lights: LightSettings);
    /** Adjust the solar light direction based on a date and time at a geographic location.
     * This replaces `this.lights` with a copy that records the time point and the computed direction.
     * @param timePoint The time in UNIX milliseconds.
     * @param location The geographic location; or an iModel, in which case the iModel's [[EcefLocation]] is used.
     * @see [[sunTime]] to get the current sun time.
     * @see [[clearSunTime]] to clear the time point.
     * @note If `location` is an iModel lacking an EcefLocation, a location in Exton, Pennsylvania will be used to compute the light direction instead.
     */
    setSunTime(timePoint: number, location: IModel | Cartographic): void;
    /** Clear the solar time point stored in `this.lights.solarLight`.
     * @note This does not affect the solar light direction.
     * @see [[sunTime]] to get the current sun time.
     * @see [[setSunTime]] to set the time point and the solar light direction derived from it.
     */
    clearSunTime(): void;
    /** The time point from which the solar light direction was derived, in UNIX milliseconds.
     * @see [[setSunTime]] to change the time point and solar direction.
     * @see [[clearSunTime]] to reset the time point to `undefined`.
     */
    get sunTime(): number | undefined;
    /** Get the plan projection settings associated with the specified model, if defined. */
    getPlanProjectionSettings(modelId: Id64String): PlanProjectionSettings | undefined;
    /** Set or clear the plan projection settings associated with the specified model. */
    setPlanProjectionSettings(modelId: Id64String, settings: PlanProjectionSettings | undefined): void;
    /** An iterator over all of the defined plan projection settings. The iterator includes the Id of the model associated with each settings object. */
    get planProjectionSettings(): Iterable<[Id64String, PlanProjectionSettings]> | undefined;
}
//# sourceMappingURL=DisplayStyleSettings.d.ts.map