import type { CIMSymbol } from "./CIMSymbol.js";
import type { LabelSymbol3D } from "./LabelSymbol3D.js";
import type { LineSymbol3D } from "./LineSymbol3D.js";
import type { MeshSymbol3D } from "./MeshSymbol3D.js";
import type { PointSymbol3D } from "./PointSymbol3D.js";
import type { PolygonSymbol3D } from "./PolygonSymbol3D.js";
import type { StyleSymbolReference } from "./StyleSymbolReference.js";
import type { Color, SymbolBase } from "./Symbol.js";
/**
 * Symbol3D is the base class for all 3D symbols. It is used to render 2D Point,
 * Polyline, and Polygon features in a FeatureLayer and 3D mesh features in a
 * SceneLayer. All 3D symbols must be used in a SceneView instance; there is no
 * support for 3D rendering in MapViews.
 *
 * See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/symbol3D/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type Symbol3D = CIMSymbol | StyleSymbolReference | MeshSymbol3D | PointSymbol3D | LineSymbol3D | PolygonSymbol3D | LabelSymbol3D;
/**
 * Base class for 3D symbols.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface Symbol3DBase extends SymbolBase {
    /**
     * A Collection of Symbol3DLayer objects used to visualize the graphic or
     * feature.
     */
    symbolLayers: Symbol3DLayer[];
}
/**
 * The material used to shade the geometry.
 *
 * See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/material/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface Material {
    /**
     * Color is represented as a three or four-element array.
     */
    color: Color;
    /**
     * Controls how symbolLayer or visualVariable color is applied onto the
     * underlying geometry color/texture. This property only applies to
     * FillSymbol3DLayer within MeshSymbol3D.
     *
     * - Tint: the feature's appearance (in terms of color) should be altered to
     *   match the symbol / visual variable color.
     * - Replace: the feature's color is replaced with the symbol / visual
     *   variable color.
     * - Multiply: the feature's color is multiplied with the symbol color.
     */
    colorMixMode?: "tint" | "replace" | "multiply";
    /**
     * Number value ranging between 0 (no transparency) to 100 (completely
     * transparent).
     */
    transparency?: number;
}
/**
 * The outline of the point, line or polygon.
 *
 * See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/outline/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface Outline {
    /**
     * Color is represented as a three or four-element array.
     */
    color: Color;
    /**
     * Outline size in points, positive only.
     */
    size: number;
    /**
     * Number value ranging between 0 (no transparency) to 100 (completely
     * transparent).
     */
    transparency?: number;
}
/**
 * The shape (primitive) or image URL (href) used to visualize the features.
 *
 * See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/iconSymbol3DLayer_resource/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface ResourceIconSymbol {
    /**
     * An image encoded as base64 string, starting with data:image.
     */
    dataURI?: string;
    /**
     * URL to the returned image. Must be an absolute URL or a relative path
     * starting with "./".
     */
    href?: string;
    /**
     * Specifies the type of symbol used. Must be one of the following values:
     * circle, square, cross, x, kite.
     */
    primitive?: string;
}
/**
 * The primitive shape (primitive) or external 3D model (href) used to visualize
 * the points.
 *
 * See
 * {@link https://developers.arcgis.com/web-scene-specification/objects/objectSymbol3DLayer_resource/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface ResourceObjectSymbol {
    /**
     * Must be an absolute URL or a relative path starting with "./".
     */
    href?: string;
    /**
     * Must be one of the following values: sphere, cylinder, cube, cone,
     * invertedCone, diamond, tetrahedron.
     */
    primitive?: string;
}
/**
 * The type of the Symbol3DLayer.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type Symbol3DLayerType = "Extrude" | "Fill" | "Icon" | "Line" | "Path" | "Text" | "Object";
/**
 * Base class for symbol 3D Layer.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface Symbol3DLayer {
    /**
     * The type of the Symbol3DLayer. See
     * {@link portal/Symbol3D!Symbol3DLayerType}.
     */
    type: Symbol3DLayerType;
}
