import { JsonExpr } from "./Expr" ; import { InterpolatedPropertyDefinition } from "./InterpolatedPropertyDefs" ; /**
 * The style type of the line caps.
 */ export type LineCaps = "Square" | "Round" | "None" | "TriangleOut" | "TriangleIn" ; /**
 * The style type of the line dashes.
 */ export type LineDashes = "Square" | "Round" | "Diamond" ; /**
 * Defines how to interpret the units.
 */ export type MetricUnit = "Meter" | "Pixel" ; deprecated See  BaseTechniqueParams . kind .
  export enum StandardGeometryKind { /**
     * Used in the enabledKinds/disabledKinds filter to match any kind.
     */ All = "_all_" , /**
     * Background geometry.
     */ Background = "background" , /**
     * Terrain geometry.
     */ Terrain = "terrain" , /**
     * Default value for the FillTechnique.
     */ Area = "area" , /**
     * Default value for all line techniques.
     */ Line = "line" , /**
     * Default value for the FillTechnique.
     */ Water = "water" , /**
     * Political borders.
     */ Border = "border" , /**
     * Basis for all roads.
     */ Road = "road" , /**
     * Default value for the ExtrudedPolygonTechnique.
     */ Building = "building" , /**
     * Default value for the TextTechnique, LineMarkerTechnique and the PoiTechnique.
     */ Label = "label" , /**
     * Anything that may show up last.
     */ Detail = "detail" } remarks deprecated See  BaseTechniqueParams . kind .
  export type GeometryKind = string | StandardGeometryKind ; export const GeometryKind = StandardGeometryKind ; /**
 * Decorate property type with possible dynamic variants.
 */ export type DynamicProperty < T > = T | JsonExpr | InterpolatedPropertyDefinition < T > ; remarks export type StyleLength = string | number ; remarks export type StyleColor = string | number ; /**
 * A set of  GeometryKind s.
  export class GeometryKindSet extends Set { /**
     * Return `true` if the Set is a superset of the set 'subset'.
     */ isSuperset ( subset ) { for ( const elem of subset ) { if ( ! this . has ( elem ) ) { return false ; } } return true ; } /**
     * Return `true` if the Set intersects Set 'set'.
     */ hasIntersection ( set ) { for ( const elem of set ) { if ( this . has ( elem ) ) { return true ; } } return false ; } /**
     * Return `true` if the Set either intersects Set 'set' (if set is a Set), of has element 'set'
     * if set is not a Set.
     */ hasOrIntersects ( set ) { if ( set instanceof Set ) { return this . hasIntersection ( set ) ; } return this . has ( set ) ; } /**
     * Return `true` if this set and the array of elements share at least a single element.
     */ hasOrIntersectsArray ( subset ) { for ( const elem of subset ) { if ( this . has ( elem ) ) { return true ; } } return false ; } } /**
 * Common attributes or all [[Technique]]s.
 */ export interface BaseTechniqueParams { /**
     * The name used to identify materials created from this technique.
     */ id ? : string ; remarks renderOrder ? : DynamicProperty < number > ; remarks The category is used in conjunction with  Theme . priorities * to assign render orders to the objects created by this  Style .
      category ? : DynamicProperty < string > ; defaultValue transient ? : boolean | Pickability ; /**
     * Distance to the camera `(0.0 = camera position, 1.0 = farPlane) at which the object start
     * fading out (opacity decreases).
     */ fadeNear ? : DynamicProperty < number > ; /**
     * Distance to the camera (0.0 = camera position, 1.0 = farPlane) at which the object has zero
     * opacity and stops fading out. An undefined value disables fading.
     */ fadeFar ? : DynamicProperty < number > ; remarks deprecated Use  enabled with expressions based on `['dynamic-properties']` operator.
     * See "object picking" example.
      kind ? : GeometryKind | GeometryKindSet ; see Picking enabled ? : DynamicProperty < boolean > ; remarks transparent ? : DynamicProperty < boolean > ; /**
     * Defines which side of faces will be rendered - front, back or both.
     * See https://threejs.org/docs/#api/en/materials/Material.side.
     */ side ? : DynamicProperty < number > ; /**
     * Minimal zoom level. If the current zoom level is smaller, the technique will not be used.
     */ minZoomLevel ? : DynamicProperty < number > ; /**
     * Maximum zoom level. If the current zoom level is equal to or greater, the technique will not be used.
     */ maxZoomLevel ? : DynamicProperty < number > ; defaultValue constantHeight ? : DynamicProperty < boolean > ; } export enum TextureCoordinateType { remarks TileSpace = "tile-space" , remarks EquirectangularSpace = "equirectangular-space" , remarks FeatureSpace = "feature-space" } /**
 * Standard technique parameters.
 */ export interface StandardTechniqueParams extends BaseTechniqueParams { format color ? : DynamicProperty < StyleColor > ; /**
     * A value of `true` creates a wireframe geometry. (May not be supported with all techniques).
     * See https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.wireframe.
     */ wireframe ? : boolean ; /**
     * If `vertexColors` is `true`, every vertex has color information, which is interpolated
     * between vertices.
     * See https://threejs.org/docs/#api/en/materials/Material.vertexColors.
     */ vertexColors ? : boolean ; /**
     * How rough the material appears. `0.0` means a smooth mirror reflection. `1.0` means fully
     * diffuse. Default is `1.0`.
     * See https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.roughness.
     */ roughness ? : DynamicProperty < number > ; /**
     * How much the material is like a metal. Nonmetallic materials such as wood or stone use `0.0`,
     * metallic ones use `1.0`, with nothing (usually) in between. Default is `0.0`. A value between
     * `0.0` and `1.0` can be used for a rusty metal look. If `metalnessMap` is also provided, both
     * values are multiplied.
     * See https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.metalness.
     */ metalness ? : DynamicProperty < number > ; /**
     * The material will not be rendered if the opacity is lower than this value.
     * See https://threejs.org/docs/#api/en/materials/Material.alphaTest.
     */ alphaTest ? : DynamicProperty < number > ; /**
     * Skip rendering clobbered pixels.
     * See https://threejs.org/docs/#api/en/materials/Material.depthTest.
     */ depthTest ? : DynamicProperty < boolean > ; /**
     * For transparent lines, set a value between 0.0 for totally transparent, to 1.0 for totally
     * opaque.
     * See https://threejs.org/docs/#api/en/materials/Material.opacity.
     */ opacity ? : DynamicProperty < number > ; format emissive ? : DynamicProperty < StyleColor > ; /**
     * Intensity of the emissive light. Modulates the emissive color. Default is `1`.
     * See https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.emissiveIntensity.
     */ emissiveIntensity ? : DynamicProperty < number > ; /**
     * The index of refraction (IOR) of air (approximately 1) divided by the index of refraction of
     * the material. It is used with environment mapping modes `THREE.CubeRefractionMapping` and
     * `THREE.EquirectangularRefractionMapping`. The refraction ratio should not exceed `1`. Default
     *  is `0.98`.
     * See https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.refractionRatio.
     */ refractionRatio ? : DynamicProperty < number > ; /**
     * Whether and how texture coordinates should be generated. No texture coordinates are
     * generated if `undefined`.
     * Should be set if any texture assigned (e.g. `map`, `normalMap`, ...).
     */ textureCoordinateType ? : TextureCoordinateType ; map ? : DynamicProperty < string | TextureBuffer > ; mapProperties ? : DynamicProperty < TextureProperties > ; /**
     * URL or texture buffer that should be used as normal map. See:
     * https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.normalMap
     */ normalMap ? : DynamicProperty < string | TextureBuffer > ; normalMapType ? : DynamicProperty < number > ; normalMapProperties ? : DynamicProperty < TextureProperties > ; /**
     * URL or texture buffer that should be used as displacement map. See:
     * https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.displacementMap
     */ displacementMap ? : DynamicProperty < string | TextureBuffer > ; displacementMapProperties ? : DynamicProperty < TextureProperties > ; /**
     * URL or texture buffer that should be used as roughness map. See:
     * https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.roughnessMap
     */ roughnessMap ? : DynamicProperty < string | TextureBuffer > ; roughnessMapProperties ? : DynamicProperty < TextureProperties > ; /**
     * URL or texture buffer that should be used as emissive map. See:
     * https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.emissiveMap
     */ emissiveMap ? : DynamicProperty < string | TextureBuffer > ; emissiveMapProperties ? : DynamicProperty < TextureProperties > ; /**
     * URL or texture buffer that should be used as bump map. See:
     * https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.bumpMap
     */ bumpMap ? : DynamicProperty < string | TextureBuffer > ; bumpMapProperties ? : DynamicProperty < TextureProperties > ; /**
     * URL or texture buffer that should be used as metalness map. See:
     * https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.metalnessMap
     */ metalnessMap ? : DynamicProperty < string | TextureBuffer > ; metalnessMapProperties ? : DynamicProperty < TextureProperties > ; /**
     * URL or texture buffer that should be used as alpha map. See:
     * https://threejs.org/docs/#api/en/materials/MeshStandardMaterial.alphaMap
     */ alphaMap ? : DynamicProperty < string | TextureBuffer > ; alphaMapProperties ? : DynamicProperty < TextureProperties > ; } /**
 * Possible parameters of [[PointTechnique]].
 */ export interface PointTechniqueParams extends BaseTechniqueParams { format color ? : DynamicProperty < StyleColor > ; /**
     * URL of a texture image to be loaded.
     */ texture ? : string ; /**
     * For transparent lines, set a value between 0.0 for totally transparent, to 1.0 for totally
     * opaque.
     */ opacity ? : DynamicProperty < number > ; /**
     * Size of point in pixels.
     */ size ? : DynamicProperty < number > ; /**
     * Whether to enable picking on these points.
     */ enablePicking ? : boolean ; } /**
 * Define the stacking option. Enum values for theme file are in "kebab-case".
 */ export enum PoiStackMode { /**
     * Show in a stack.
     */ Show = "show-in-stack" , /**
     * Do not show in a stack.
     */ Hide = "hide-in-stack" , /**
     * Show category parent in the stack.
     */ ShowParent = "show-parent" } /**
 * Define the pickability of an object.
 */ export enum Pickability { /**
     * Pickable if visible.
     */ onlyVisible = "only-visible" , /**
     * Not Pickable at all.
     */ transient = "transient" , /**
     * All objects of this type pickable.
     */ all = "all" } param transient export function transientToPickability ( transient ? ) { let pickability = Pickability . onlyVisible ; if ( transient !== undefined && transient !== null ) { pickability = typeof transient === "string" ? transient : transient === true ? Pickability . transient : Pickability . onlyVisible ; } return pickability ; } remarks export enum PlacementToken { TopLeft = "TL" , Top = "T" , TopRight = "TR" , Right = "R" , BottomRight = "BR" , Bottom = "B" , BottomLeft = "BL" , Left = "L" , Center = "C" , NorthWest = "NW" , North = "N" , NorthEast = "NE" , East = "E" , SouthEast = "SE" , South = "S" , SouthWest = "SW" , West = "W" } /**
 * Technique that describes icons with labels. Used in [[PoiTechnique]] and [[LineMarkerTechnique]]
 * (for road shields).
 */ export interface MarkerTechniqueParams extends BaseTechniqueParams { remarks text ? : DynamicProperty < string > ; deprecated label ? : string ; deprecated useAbbreviation ? : boolean ; deprecated useIsoCode ? : boolean ; /**
     * Priority of marker, defaults to `0`. Markers with highest priority get placed first.
     */ priority ? : DynamicProperty < number > ; /**
     * Minimum zoomLevel at which to display the label text. No default.
     */ textMinZoomLevel ? : DynamicProperty < number > ; /**
     * Maximum zoomLevel at which to display the label text. No default.
     */ textMaxZoomLevel ? : DynamicProperty < number > ; /**
     * Minimum zoomLevel at which to display the label icon. No default.
     */ iconMinZoomLevel ? : DynamicProperty < number > ; /**
     * Maximum zoomLevel at which to display the label icon. No default.
     */ iconMaxZoomLevel ? : DynamicProperty < number > ; remarks iconColor ? : StyleColor ; remarks defaultValue iconBrightness ? : number ; /**
     * Scaling factor of icon. Defaults to 0.5, reducing the size ot 50% in the distance.
     */ distanceScale ? : number ; defaultValue textMayOverlap ? : boolean ; remarks defaultValue iconMayOverlap ? : boolean ; defaultValue textReserveSpace ? : boolean ; remarks defaultValue iconReserveSpace ? : boolean ; /**
     * If `false`, text will not be rendered during animations. Defaults to `true`.
     */ renderTextDuringMovements ? : boolean ; remarks defaultValue alwaysOnTop ? : boolean ; remarks defaultValue textIsOptional ? : boolean ; /**
     * Should be displayed on map or not. Defaults to `true`.
     */ showOnMap ? : boolean ; /**
     * Specify stack mode. Defaults to `ShowInStack`.
     */ stackMode ? : PoiStackMode ; /**
     * Minimal distance between markers in screen pixels.
     */ minDistance ? : number ; defaultValue iconIsOptional ? : boolean ; /**
     * Fading time for labels in seconds.
     */ textFadeTime ? : number ; /**
     * Fading time for icons in seconds.
     */ iconFadeTime ? : number ; /**
     * Horizontal offset (to the right) in screen pixels.
     */ xOffset ? : DynamicProperty < number > ; /**
     * Vertical offset (up) in screen pixels.
     */ yOffset ? : DynamicProperty < number > ; /**
     * Horizontal offset (to the right) in screen pixels.
     */ iconXOffset ? : DynamicProperty < number > ; /**
     * Vertical offset (up) in screen pixels.
     */ iconYOffset ? : DynamicProperty < number > ; /**
     * Scaling factor of icon.
     */ iconScale ? : number ; /**
     * Vertical height in pixels, controls vertical scaling. Overrides `iconScale`.
     */ screenHeight ? : DynamicProperty < number > ; /**
     * Horizontal height in pixels, controls horizontal scaling. Overrides `iconScale`.
     */ screenWidth ? : DynamicProperty < number > ; /**
     * Name of the POI table which should be used for this POI.
     */ poiTable ? : string ; remarks poiName ? : string ; /**
     * Name of the field to evaluate to get the name of the POI options in the POI table.
     */ poiNameField ? : string ; /**
     * The name of either the  ImageTexture in  Theme . imageTextures or the user image
     * cached in  {@link @here/harp-mapview#userImageCache} to be rendered as marker.
      imageTexture ? : DynamicProperty < string > ; /**
     * Field name to extract imageTexture content from, if imageTexture refers to an
     * [[ImageTexture]] definition.
     */ imageTextureField ? : string ; /**
     * Prefix for `imageTexture` if `imageTextureField` is used.
     */ imageTexturePrefix ? : string ; /**
     * Postfix for `imageTexture` if `imageTextureField` is used.
     */ imageTexturePostfix ? : string ; /**
     * Name of the text style.
     */ style ? : string ; /**
     * Name of the preferred [[Font]] to be used when rendering.
     */ fontName ? : string ; /**
     * Size of the text (pixels).
     */ size ? : DynamicProperty < number > ; /**
     * Size of the text background (pixels).
     */ backgroundSize ? : DynamicProperty < number > ; /**
     * Glyph style to apply for the currently active [[Font]].
     */ fontStyle ? : "Regular" | "Bold" | "Italic" | "BoldItalic" ; /**
     * Glyph variant to apply for the currently active [[Font]].
     */ fontVariant ? : "Regular" | "AllCaps" | "SmallCaps" ; /**
     * Glyph local rotation (radians).
     */ rotation ? : number ; format color ? : DynamicProperty < StyleColor > ; format backgroundColor ? : DynamicProperty < StyleColor > ; /**
     * For transparent text, set a value between 0.0 for totally transparent, to 1.0 for totally
     * opaque.
     */ opacity ? : DynamicProperty < number > ; /**
     * Background text opacity value.
     */ backgroundOpacity ? : DynamicProperty < number > ; /**
     * Inter-glyph spacing (pixels). Scaled by `size`.
     */ tracking ? : DynamicProperty < number > ; /**
     * Inter-line spacing (pixels). Scaled by `size`.
     */ leading ? : DynamicProperty < number > ; /**
     * Maximum number of lines for this label.
     */ maxLines ? : DynamicProperty < number > ; /**
     * Maximum line width (pixels).
     */ lineWidth ? : DynamicProperty < number > ; /**
     * [[TextCanvas]] rotation (radians).
     */ canvasRotation ? : DynamicProperty < number > ; /**
     * Line typesetting rotation (radians).
     */ lineRotation ? : DynamicProperty < number > ; /**
     * Wrapping (line-breaking) mode.
     */ wrappingMode ? : DynamicProperty < "None" | "Character" | "Word" > ; note hAlignment ? : DynamicProperty < "Left" | "Center" | "Right" > ; note vAlignment ? : DynamicProperty < "Above" | "Center" | "Below" > ; remarks note placements ? : string ; remarks worldOffset ? : DynamicProperty < number > ; } export interface LineTechniqueParams extends BaseTechniqueParams { format color : DynamicProperty < StyleColor > ; /**
     * For transparent lines, set a value between 0.0 for totally transparent, to 1.0 for totally
     * opaque.
     */ opacity ? : DynamicProperty < number > ; /**
     * Width of line in pixels. WebGL implementations will normally render all lines with 1 pixel
     * width, and ignore this value.
     */ lineWidth : DynamicProperty < number > ; } /**
 * Declares a geometry as a segment.
 */ export interface SegmentsTechniqueParams extends BaseTechniqueParams { format color : DynamicProperty < StyleColor > ; /**
     * For transparent lines, set a value between `0.0` for fully transparent, to `1.0` for fully
     * opaque.
     */ opacity ? : DynamicProperty < number > ; /**
     * Width of a line in meters.
     */ lineWidth : DynamicProperty < number > ; } /**
 * Declares a a geometry as a polygon.
 */ export interface PolygonalTechniqueParams { remarks polygonOffset ? : boolean ; /**
     * Sets the polygon offset factor. Default is 0.
     */ polygonOffsetFactor ? : DynamicProperty < number > ; /**
     * Sets the polygon offset units. Default is 0.
     */ polygonOffsetUnits ? : DynamicProperty < number > ; defaultValue depthTest ? : DynamicProperty < boolean > ; format lineColor ? : DynamicProperty < StyleColor > ; /**
     * Distance to the camera (0.0 = nearPlane, 1.0 = farPlane) at which the object edges start
     * fading out.
     */ lineFadeNear ? : DynamicProperty < number > ; /**
     * Distance to the camera (0.0 = nearPlane, 1.0 = farPlane) at which the object edges become
     * transparent. A value of <= 0.0 disables fading.
     */ lineFadeFar ? : DynamicProperty < number > ; /**
     * Set to `true` if line should appear transparent. Rendering transparent lines may come with a
     * slight performance impact.
     */ transparent ? : DynamicProperty < boolean > ; /**
     * For transparent lines, set a value between `0.0` for fully transparent, to `1.0` for fully
     * opaque.
     */ opacity ? : DynamicProperty < number > ; format color ? : DynamicProperty < StyleColor > ; } /**
 * Declares a a geometry as a basic extruded line.
 */ export interface BasicExtrudedLineTechniqueParams extends BaseTechniqueParams , PolygonalTechniqueParams { remarks shading ? : "basic" ; /**
     * Width of line in meters for different zoom levels.
     */ lineWidth : DynamicProperty < number > ; /**
     * A value of `true` creates a wireframe geometry. (May not be supported with all techniques).
     */ wireframe ? : boolean ; /**
     * Style of both end caps. Possible values: `"None"`, `"Circle"`. A value of undefined maps to
     * `"Circle"`.
     */ caps ? : DynamicProperty < "None" | "Circle" > ; } /**
 * Declares a a geometry as a standard extruded line.
 */ export interface StandardExtrudedLineTechniqueParams extends StandardTechniqueParams , PolygonalTechniqueParams { remarks shading : "standard" ; /**
     * Width of a line in meters for different zoom levels.
     */ lineWidth : DynamicProperty < number > ; remarks caps ? : DynamicProperty < "None" | "Circle" > ; } /**
 * Declares a a geometry as a solid line.
 */ export interface SolidLineTechniqueParams extends BaseTechniqueParams , PolygonalTechniqueParams { format color : DynamicProperty < StyleColor > ; format outlineColor ? : DynamicProperty < StyleColor > ; deprecated metricUnit ? : MetricUnit ; /**
     * Width of a line in `metricUnit` for different zoom levels.
     */ lineWidth : DynamicProperty < StyleLength > ; /**
     * Outline width of a line in `metricUnit`s for different zoom levels.
     */ outlineWidth ? : DynamicProperty < StyleLength > ; defaultValue clipping ? : DynamicProperty < boolean > ; defaultValue caps ? : DynamicProperty < LineCaps > ; format secondaryColor ? : DynamicProperty < StyleColor > ; /**
     * Width of secondary line geometry in `metricUnit`s for different zoom levels.
     */ secondaryWidth ? : DynamicProperty < StyleLength > ; /**
     * The render order of the secondary line geometry object created using this technique.
     */ secondaryRenderOrder ? : DynamicProperty < number > ; defaultValue secondaryCaps ? : DynamicProperty < LineCaps > ; /**
     * Describes the category of the secondary geometry object created using this technique.
     */ secondaryCategory ? : DynamicProperty < string > ; /**
     * Describes the starting drawing position for the line (in the range [0...1]).
     * Default is `0.0`.
     */ drawRangeStart ? : number ; /**
     * Describes the ending drawing position for the line (in the range [0...1]).
     * Default is `1.0`.
     */ drawRangeEnd ? : number ; defaultValue dashes ? : DynamicProperty < LineDashes > ; format dashColor ? : DynamicProperty < StyleColor > ; /**
     * Length of a line in meters for different zoom levels.
     */ dashSize ? : DynamicProperty < StyleLength > ; /**
     * Size of a gap between lines in meters for different zoom levels.
     */ gapSize ? : DynamicProperty < StyleLength > ; /**
     * Size in world units how far to offset the line perpendicular to its direction.
     */ offset ? : DynamicProperty < number > ; } /**
 * Technique used to draw filled polygons.
 */ export interface FillTechniqueParams extends BaseTechniqueParams , PolygonalTechniqueParams { /**
     * A value of `true` creates a wireframe geometry. (May not be supported with all techniques).
     */ wireframe ? : boolean ; /**
     * Width of the lines. Currently limited to the [0, 1] range.
     */ lineWidth ? : DynamicProperty < number > ; map ? : DynamicProperty < string | TextureBuffer > ; mapProperties ? : DynamicProperty < TextureProperties > ; /**
     * Whether and how texture coordinates should be generated. No texture coordinates are
     * generated if `undefined`.
     * Should be set if a `map` is assigned.
     */ textureCoordinateType ? : TextureCoordinateType ; } /**
 * Technique used to draw a geometry as an extruded polygon, for example extruded buildings.
 */ export interface ExtrudedPolygonTechniqueParams extends StandardTechniqueParams { /**
     * Renders the footprint lines if set to 'true'.
     */ footprint ? : boolean ; /**
     * Set to a negative value to remove all the vertical lines, and to a value between 0.0 and 1.0
     * to modulate the amount of vertical lines rendered.
     */ maxSlope ? : number ; /**
     * Width of the lines. Currently limited to the [0, 1] range.
     */ lineWidth : DynamicProperty < number > ; format lineColor ? : DynamicProperty < StyleColor > ; /**
     * Mix value between the lineColor(0.0) and the geometry's vertex colors(1.0).
     */ lineColorMix ? : number ; /**
     * Distance to the camera (0.0 = nearPlane, 1.0 = farPlane) at which the object edges start
     * fading out.
     */ lineFadeNear ? : DynamicProperty < number > ; /**
     * Distance to the camera (0.0 = nearPlane, 1.0 = farPlane) at which the object edges become
     * transparent. A value of <= 0.0 disables fading.
     */ lineFadeFar ? : DynamicProperty < number > ; /**
     * Height above ground in world units of extruded polygon.
     *
     * Usually, unique per feature, so defaults to `["get", "height"]`.
     */ height ? : DynamicProperty < number > ; /**
     * Height of "floor" of extruded polygon in world units of extruded polygon.
     *
     * Usually, unique per feature, so defaults to `["number", ["get", "min_height"], 0]`.
     */ floorHeight ? : DynamicProperty < number > ; deprecated defaultHeight ? : number ; format defaultColor ? : DynamicProperty < StyleColor > ; remarks defaultValue boundaryWalls ? : boolean ; /**
     * Animate the extrusion of the buildings if set to `true`.
     */ animateExtrusion ? : DynamicProperty < boolean > ; /**
     * Duration of the building's extrusion in milliseconds
     */ animateExtrusionDuration ? : number ; remarks enableDepthPrePass ? : boolean ; } export interface ShaderTechniqueMaterialParameters { [ name ] : any ; } /**
 * Special technique for user-defined shaders. See
 * https://threejs.org/docs/#api/harp-materials/ShaderMaterial for details.
 */ export interface ShaderTechniqueParams extends BaseTechniqueParams { /**
     * Parameters for shader. See `THREE.ShaderMaterialParameters`.
     */ params : ShaderTechniqueMaterialParameters ; /**
     * Type of primitive for the shader technique.
     */ primitive : "point" | "line" | "segments" | "mesh" ; [ name ] : any ; } remarks export interface TerrainTechniqueParams extends StandardTechniqueParams { /**
     * Colors to be applied at different heights (as a results of a `displacementMap`).
     */ heightBasedColors ? : HeightBasedColors ; defaultValue heightGradientInterpolation ? : "Discrete" | "Linear" | "Cubic" ; defaultValue heightGradientWidth ? : number ; } /**
 * Render geometry as a text.
 */ export interface TextTechniqueParams extends BaseTechniqueParams { remarks text ? : DynamicProperty < string > ; deprecated label ? : string ; deprecated useAbbreviation ? : boolean ; remarks deprecated useIsoCode ? : boolean ; /**
     * Priority of text, defaults to `0`. Elements with highest priority get placed first.
     */ priority ? : DynamicProperty < number > ; /**
     * Scaling factor of the text. Defaults to 0.5, reducing the size ot 50% in the distance.
     */ distanceScale ? : number ; defaultValue mayOverlap ? : boolean ; defaultValue reserveSpace ? : boolean ; /**
     * Fading time for labels in seconds.
     */ textFadeTime ? : number ; /**
     * Horizontal offset (to the right) in screen pixels.
     */ xOffset ? : number ; /**
     * Vertical offset (up) in screen pixels.
     */ yOffset ? : number ; /**
     * Name of the text style.
     */ style ? : string ; /**
     * Name of the preferred [[Font]] to be used when rendering.
     */ fontName ? : string ; /**
     * Size of the text (pixels).
     */ size ? : DynamicProperty < number > ; /**
     * Size of the text background (pixels).
     */ backgroundSize ? : DynamicProperty < number > ; /**
     * Glyph style to apply for the currently active [[Font]].
     */ fontStyle ? : "Regular" | "Bold" | "Italic" | "BoldItalic" ; /**
     * Glyph variant to apply for the currently active [[Font]].
     */ fontVariant ? : "Regular" | "AllCaps" | "SmallCaps" ; /**
     * Glyph local rotation (radians).
     */ rotation ? : number ; format color ? : DynamicProperty < StyleColor > ; format backgroundColor ? : DynamicProperty < StyleColor > ; /**
     * For transparent text, set a value between 0.0 for totally transparent, to 1.0 for totally
     * opaque.
     */ opacity ? : DynamicProperty < number > ; /**
     * Background text opacity value.
     */ backgroundOpacity ? : DynamicProperty < number > ; /**
     * Inter-glyph spacing (pixels). Scaled by `size`.
     */ tracking ? : DynamicProperty < number > ; /**
     * Inter-line spacing (pixels). Scaled by `size`.
     */ leading ? : DynamicProperty < number > ; /**
     * Maximum number of lines for this label.
     */ maxLines ? : DynamicProperty < number > ; /**
     * Maximum line width (pixels).
     */ lineWidth ? : DynamicProperty < number > ; /**
     * [[TextCanvas]] rotation (radians).
     */ canvasRotation ? : DynamicProperty < number > ; /**
     * Line typesetting rotation (radians).
     */ lineRotation ? : DynamicProperty < number > ; /**
     * Wrapping (line-breaking) mode.
     */ wrappingMode ? : DynamicProperty < "None" | "Character" | "Word" > ; /**
     * Text position regarding the baseline.
     */ hAlignment ? : DynamicProperty < "Left" | "Center" | "Right" > ; /**
     * Text position inside a line.
     */ vAlignment ? : DynamicProperty < "Above" | "Center" | "Below" > ; } /**
 * Buffer holding a texture.
 */ export interface TextureBuffer { /**
     * Buffer containing the (compressed) image or the raw texture data.
     */ buffer : ArrayBuffer ; /**
     * Mime type of the image or 'image/raw' in case of raw texture data.
     */ type : string ; /**
     * Properties for creating a three.js DataTexture
     * (https://threejs.org/docs/#api/en/textures/DataTexture).
     */ dataTextureProperties ? : DataTextureProperties ; } /**
 * Type guard to check if an object is an instance of `TextureBuffer`.
 */ export function isTextureBuffer ( object ) { return object && object . buffer && typeof object . type === "string" ; } /**
 * Properties of a DataTexture (https://threejs.org/docs/#api/en/textures/DataTexture).
 */ export interface DataTextureProperties { width : number ; height : number ; format ? : PixelFormat ; type ? : TextureDataType ; } /**
 * Properties of a Texture (https://threejs.org/docs/#api/en/textures/Texture).
 */ export interface TextureProperties { /**
     * Texture horizontal wrapping mode.
     * See: https://threejs.org/docs/#api/en/textures/Texture.wrapS.
     */ wrapS ? : WrappingMode ; /**
     * Texture vertical wrapping mode.
     * See: https://threejs.org/docs/#api/en/textures/Texture.wrapT.
     */ wrapT ? : WrappingMode ; /**
     * Texture magnification filter.
     */ magFilter ? : MagFilter ; /**
     * Texture minification filter.
     */ minFilter ? : MinFilter ; /**
     * Flip texture vertically.
     * See: https://threejs.org/docs/#api/en/textures/Texture.flipY.
     */ flipY ? : boolean ; /**
     * Texture horizontal repetition rate.
     * See: https://threejs.org/docs/#api/en/textures/Texture.repeat.
     */ repeatU ? : number ; /**
     * Texture vertical repetition rate.
     * See: https://threejs.org/docs/#api/en/textures/Texture.repeat.
     */ repeatV ? : number ; } /**
 * Interface containing the definition of different colors to be used at different heights with the
 * [[TerrainTechnique]].
 */ export interface HeightBasedColors { heightArray : number [ ] ; colorArray : string [ ] ; } export type PixelFormat = "Alpha" | "RGB" | "RGBA" | "Luminance" | "LuminanceAlpha" | "RGBE" | "Depth" | "DepthStencil" | "Red" ; export type TextureDataType = "UnsignedByte" | "Byte" | "Short" | "UnsignedShort" | "Int" | "UnsignedInt" | "Float" | "HalfFloat" ; /**
 * Available texture wrapping modes.
 */ export type WrappingMode = "clamp" | "repeat" | "mirror" ; /**
 * Available texture magnification filters.
 */ export type MagFilter = "nearest" | "linear" ; /**
 * Available texture minification filters.
 */ export type MinFilter = "nearest" | "nearestMipMapNearest" | "nearestMipMapLinear" | "linear" | "linearMipMapNearest" | "linearMipMapLinear" ;