/** @packageDocumentation
 * @module Views
 */
import { ViewFlagOverrides } from "./ViewFlags";
import { RgbColor, RgbColorProps } from "./RgbColor";
import { HiddenLine } from "./HiddenLine";
import { FeatureAppearance, FeatureAppearanceProps } from "./FeatureSymbology";
/** Wire format describing a [[CutStyle]] applied to section-cut geometry produced at intersections with a view's [ClipVector]($core-geometry).
 * @see [[ClipStyleProps.cutStyle]].
 * @public
 * @extensions
 */
export interface CutStyleProps {
    /** If defined, overrides aspects of the view's [[ViewFlags]] when drawing the cut geometry. */
    viewflags?: ViewFlagOverrides;
    /** If defined, overrides the view's [[HiddenLine.Settings]] when drawing the cut geometry. */
    hiddenLine?: HiddenLine.SettingsProps;
    /** If defined, overrides aspects of the cut geometry's symbology. */
    appearance?: FeatureAppearanceProps;
}
/** As part of a [[ClipStyle]], describes how section-cut graphics should be displayed.
 * @note Section-cut graphics are only produced if [[ClipStyle.produceCutGeometry]] is `true`.
 * @public
 */
export declare class CutStyle {
    /** Selectively overrides some of the view's [[ViewFlags]] when drawing the section-cut graphics. */
    readonly viewflags: Readonly<ViewFlagOverrides>;
    /** If defined, overrides the settings the view uses to draw the edges of the section-cut graphics. */
    readonly hiddenLine?: HiddenLine.Settings;
    /** If defined, overrides aspects of the symbology of the section-cut graphics. */
    readonly appearance?: FeatureAppearance;
    /** The default CutStyle, configured to draw the section-cut graphics using the view's settings, with no overrides. */
    static readonly defaults: CutStyle;
    private constructor();
    /** Create a CutStyle from its components. */
    static create(viewflags?: Readonly<ViewFlagOverrides>, hiddenLine?: HiddenLine.Settings, appearance?: FeatureAppearance): CutStyle;
    static fromJSON(props?: CutStyleProps): CutStyle;
    /** Return JSON representation. The representation is `undefined` if this style matches the default style. */
    toJSON(): CutStyleProps | undefined;
    /** Returns true if this style matches the default style - that is, it overrides none of the view's settings. */
    get matchesDefaults(): boolean;
}
/** Wire format describing a [[ClipIntersectionStyle]].
 * @see [[ClipStyleProps.ClipIntersectionStyle]].
 * @public
 * @extensions
 */
export interface ClipIntersectionStyleProps {
    /** Color to apply to intersection of geometry and clip planes, default white */
    color?: RgbColorProps;
    /** Number of pixels to be considered intersecting the clip plane, default 1 */
    width?: number;
}
/** As part of a [[ClipStyle]], describes how to colorize geometry intersecting the clip planes.
 * @note Edges are highlighted only if [[ClipStyle.ClipIntersectionStyle]] is `true`.
 * @public
 * @extensions
 */
export declare class ClipIntersectionStyle {
    /** Color to apply to intersection of geometry and clip planes, default white */
    readonly color: RgbColor;
    /** Number of pixels to be considered intersecting the clip plane, default 1 */
    readonly width: number;
    private constructor();
    /** Create a highlight  from its components. */
    static create(color?: RgbColor, width?: number): ClipIntersectionStyle;
    static readonly defaults: ClipIntersectionStyle;
    static fromJSON(props?: ClipIntersectionStyleProps): ClipIntersectionStyle;
    /** The JSON representation of this style. It is `undefined` if this style matches the defaults. */
    toJSON(): ClipIntersectionStyleProps | undefined;
    get matchesDefaults(): boolean;
}
/** Arguments supplied to [[ClipStyle.create]].
 * @public
 * @extensions
 */
export interface ClipStyleCreateArgs {
    /** If `true`, geometry will be produced at the clip planes in a 3d view.
     * - Solids (closed volumes) will produce facets on the clip planes.
     * - Other surfaces will produce line strings representing the edges of the surface at the clip planes.
     * @note Cut geometry will only be produced for element geometry - not for, e.g., terrain or reality models.
     */
    produceCutGeometry?: boolean;
    /** If `true`, intersection of geometry and clip planes will be colorized */
    colorizeIntersection?: boolean;
    /** Controls aspects of how the cut geometry is displayed, if [[produceCutGeometry]] is `true`. */
    cutStyle?: CutStyle;
    /** If defined, geometry inside the clip planes will be drawn in this color. */
    insideColor?: RgbColor;
    /** If defined, geometry outside of the clip planes will be drawn in this color instead of being clipped. */
    outsideColor?: RgbColor;
    /** Controls the style of the intersection of geometry and clip planes */
    intersectionStyle?: ClipIntersectionStyle;
}
/** Wire format describing a [[ClipStyle]].
 * @see [[DisplayStyleSettingsProps.clipStyle]].
 * @public
 * @extensions
 */
export interface ClipStyleProps {
    /** If `true`, geometry will be produced at the clip planes in a 3d view.
     * - Solids (closed volumes) will produce facets on the clip planes.
     * - Other surfaces will produce line strings representing the edges of the surface at the clip planes.
     * @note Cut geometry will only be produced for element geometry - not for, e.g., terrain or reality models.
     */
    produceCutGeometry?: boolean;
    /** If 'true', intersection of geometry and clip planes will be colorized */
    colorizeIntersection?: boolean;
    /** Controls aspects of how the cut geometry is displayed, if [[produceCutGeometry]] is `true`. */
    cutStyle?: CutStyleProps;
    /** If defined, geometry inside the clip planes will be drawn in this color. */
    insideColor?: RgbColorProps;
    /** If defined, geometry outside of the clip planes will be drawn in this color instead of being clipped. */
    outsideColor?: RgbColorProps;
    /** Controls the style of the intersection of geometry and clip planes */
    intersectionStyle?: ClipIntersectionStyleProps;
}
/** Describes symbology and behavior applied to a [ClipVector]($core-geometry) when applied to a [ViewState]($frontend) or [[ModelClipGroup]].
 * @see [[DisplayStyleSettings.clipStyle]].
 * @public
 */
export declare class ClipStyle {
    /** If `true`, geometry will be produced at the clip planes.
     * - Solids (closed volumes) will produce facets on the clip planes.
     * - Other surfaces will produce line strings representing the edges of the surface at the clip planes.
     * @note Cut geometry will only be produced for element geometry - not for, e.g., terrain or reality models.
     */
    readonly produceCutGeometry: boolean;
    /** If 'true', intersection of geometry and clip planes will be colorized */
    readonly colorizeIntersection: boolean;
    /** Controls aspects of how the cut geometry is displayed, if [[produceCutGeometry]] is `true`. */
    readonly cutStyle: CutStyle;
    /** If defined, geometry inside the clip planes will be drawn in this color. */
    readonly insideColor?: RgbColor;
    /** If defined, geometry outside of the clip planes will be drawn in this color instead of being clipped. */
    readonly outsideColor?: RgbColor;
    /** Controls the style of the intersection of geometry and clip planes */
    readonly intersectionStyle?: ClipIntersectionStyle;
    /** The default style, which overrides none of the view's settings. */
    static readonly defaults: ClipStyle;
    private constructor();
    /** @deprecated in 4.x. Use [[create(style: ClipStyleCreateArgs]] */
    static create(produceCutGeometry: boolean, cutStyle: CutStyle, insideColor?: RgbColor, outsideColor?: RgbColor): ClipStyle;
    /** Create a style from its components. */
    static create(style: ClipStyleCreateArgs): ClipStyle;
    static fromJSON(props?: ClipStyleProps): ClipStyle;
    /** The JSON representation of this style. It is `undefined` if this style matches the defaults. */
    toJSON(): ClipStyleProps | undefined;
    /** Returns true if this style matches the [[ClipStyle.defaults]] - that is, it overrides no settings from the view. */
    get matchesDefaults(): boolean;
}
//# sourceMappingURL=ClipStyle.d.ts.map