import { Color, Position } from '../Core';
import { POI } from './POI';

/**
 * Contain all updatable options for a Surface.
 */
export interface SurfaceCreateOptions {
    /**
     * POI owning current Line.
     */
    readonly poi: POI;
    /**
     * Position in WGS84 coordinates of all the points defining current line.
     * @see {@link Position}
     */
    readonly positions: Position[];
    /**
     * Color of the Surface.
     */
    readonly color: Color;
    /**
     * Change the behavior of current Surface.
     * If set to true, it'll be clickable, its color may change while clicked or overflown.
     */
    readonly isInteractive?: boolean;
    /**
     * Color of the Surface while overflown.
     * Note that if current Surface has no hover color and is interactive, a global hover color would be used @see {@link View~View.surfaceHoverColor | View.surfaceHoverColor}.
     * In order to set it back to global hover color, set hoverColor to 'default'.
     */
    readonly hoverColor?: Color | 'default';
    /**
     * Color of the Surface while clicked.
     * Note that if current Surface has no selection color and is interactive, a global hover color would be used @see {@link View~View.surfaceSelectionColor | View.surfaceSelectionColor}.
     * In order to set it back to global hover color, set selectionColor to 'default'.
     */
    readonly selectionColor?: Color | 'default';
    /**
     * Height of the displayed shape, relative to its floor ground.
     */
    readonly extrusionHeight: number;
    /**
     * URL pointing on the texture to display.
     * Related to display mode. If display mode isn't "textured" this field won't have any effect.
     * Note that URL will be based on baseURL provided while loading the Venue.
     */
    /**
     * The Surface opacity.
     * Default is 1.0 (i.e. fully opaque).
     */
    readonly opacity?: number;
}
