import { AnnotationAppearanceMode_$type } from "./AnnotationAppearanceMode";
import { IgrSeries } from "./igr-series";
import { ensureBool, fromPoint, toPoint, ensureEnum, toDoubleCollection, fromDoubleCollection } from "igniteui-react-core";
/**
 * Represents the base class for annotation layer types. Annotations will usually disable some of the default hover/touch behaviors of the chart when they are introduced to the series collection.
 * In return they provide some valuable information as the cursor is moved by hovering over the chart, or performing a press-hold-drag interaction in touch mode.
*/
export class IgrAnnotationLayer extends IgrSeries {
    /**
                                 * @hidden
                                 */
    get i() {
        return this._implementation;
    }
    constructor(props) {
        super(props);
    }
    /**
     * Gets or sets whether this series should take up an index for auto brush coloring.
    */
    get useIndex() {
        return this.i.up;
    }
    set useIndex(v) {
        this.i.up = ensureBool(v);
    }
    /**
     * Gets or sets whether this series interacts with the chart legend.
    */
    get useLegend() {
        return this.i.uq;
    }
    set useLegend(v) {
        this.i.uq = ensureBool(v);
    }
    /**
     * Gets or sets the world position to use instead of the pointer position for this annotation layer. If you set this value, rather than responding to the pointer, this layer will be fixed on the provided world position.
     * A world position has x and y values that range from 0 to 1 that represent the global position of the cursor relative to the entire ranges of the axes. The default of (NaN, NaN) means that the layer should react to pointer movement.
    */
    get cursorPosition() {
        return fromPoint(this.i.w0);
    }
    set cursorPosition(v) {
        this.i.w0 = toPoint(v);
    }
    /**
     * Gets or sets whether the series viewer's default crosshair should be disabled by the presence of this layer.
    */
    get isDefaultCrosshairDisabled() {
        return this.i.uk;
    }
    set isDefaultCrosshairDisabled(v) {
        this.i.uk = ensureBool(v);
    }
    /**
     * Gets whether or not the default crosshair behavior is disabled.
    */
    get isDefaultCrosshairBehaviorDisabled() {
        return this.i.eg;
    }
    /**
     * Gets or sets the mode used for shifting the annotation layer color based on the target series.
    */
    get appearanceMode() {
        return this.i.t6;
    }
    set appearanceMode(v) {
        this.i.t6 = ensureEnum(AnnotationAppearanceMode_$type, v);
    }
    /**
     * Gets or sets the mode used for shifting the annotation layer color based on the target series.
    */
    get actualAppearanceMode() {
        return this.i.t3;
    }
    set actualAppearanceMode(v) {
        this.i.t3 = ensureEnum(AnnotationAppearanceMode_$type, v);
    }
    /**
     * Gets or sets the percentage amount to shift the appearance mode by. Value must range between -1.0 to 1.0.
    */
    get shiftAmount() {
        return this.i.u3;
    }
    set shiftAmount(v) {
        this.i.u3 = +v;
    }
    /**
     * Gets or sets the percentage amount to shift the appearance mode by. Value must range between -1.0 to 1.0.
    */
    get actualShiftAmount() {
        return this.i.us;
    }
    set actualShiftAmount(v) {
        this.i.us = +v;
    }
    /**
     * Gets or sets the mode used for shifting the annotation layer color based on the target series.
    */
    get horizontalAppearanceMode() {
        return this.i.ud;
    }
    set horizontalAppearanceMode(v) {
        this.i.ud = ensureEnum(AnnotationAppearanceMode_$type, v);
    }
    /**
     * Gets or sets the mode used for shifting the annotation layer color based on the target series.
    */
    get actualHorizontalAppearanceMode() {
        return this.i.t4;
    }
    set actualHorizontalAppearanceMode(v) {
        this.i.t4 = ensureEnum(AnnotationAppearanceMode_$type, v);
    }
    /**
     * Gets or sets the mode used for shifting the annotation layer color based on the target series.
    */
    get verticalAppearanceMode() {
        return this.i.ue;
    }
    set verticalAppearanceMode(v) {
        this.i.ue = ensureEnum(AnnotationAppearanceMode_$type, v);
    }
    /**
     * Gets or sets the mode used for shifting the annotation layer color based on the target series.
    */
    get actualVerticalAppearanceMode() {
        return this.i.t5;
    }
    set actualVerticalAppearanceMode(v) {
        this.i.t5 = ensureEnum(AnnotationAppearanceMode_$type, v);
    }
    /**
     * Gets or sets the percentage amount to shift the appearance mode by. Value must range between -1.0 to 1.0.
    */
    get horizontalShiftAmount() {
        return this.i.u2;
    }
    set horizontalShiftAmount(v) {
        this.i.u2 = +v;
    }
    /**
     * Gets or sets the percentage amount to shift the appearance mode by. Value must range between -1.0 to 1.0.
    */
    get actualHorizontalShiftAmount() {
        return this.i.ur;
    }
    set actualHorizontalShiftAmount(v) {
        this.i.ur = +v;
    }
    /**
     * Gets or sets the percentage amount to shift the appearance mode by. Value must range between -1.0 to 1.0.
    */
    get verticalShiftAmount() {
        return this.i.u4;
    }
    set verticalShiftAmount(v) {
        this.i.u4 = +v;
    }
    /**
     * Gets or sets the percentage amount to shift the appearance mode by. Value must range between -1.0 to 1.0.
    */
    get actualVerticalShiftAmount() {
        return this.i.ut;
    }
    set actualVerticalShiftAmount(v) {
        this.i.ut = +v;
    }
    /**
     * Gets or sets the mode used for shifting the annotation layer color based on the target series.
    */
    get horizontalDashArray() {
        return fromDoubleCollection(this.i.wx);
    }
    set horizontalDashArray(v) {
        this.i.wx = toDoubleCollection(v);
    }
    /**
     * Gets or sets the mode used for shifting the annotation layer color based on the target series.
    */
    get actualHorizontalDashArray() {
        return fromDoubleCollection(this.i.wr);
    }
    set actualHorizontalDashArray(v) {
        this.i.wr = toDoubleCollection(v);
    }
    /**
     * Gets or sets the mode used for shifting the annotation layer color based on the target series.
    */
    get verticalDashArray() {
        return fromDoubleCollection(this.i.wy);
    }
    set verticalDashArray(v) {
        this.i.wy = toDoubleCollection(v);
    }
    /**
     * Gets or sets the mode used for shifting the annotation layer color based on the target series.
    */
    get actualVerticalDashArray() {
        return fromDoubleCollection(this.i.ws);
    }
    set actualVerticalDashArray(v) {
        this.i.ws = toDoubleCollection(v);
    }
    /**
     * Gets if the series uses an index, which can be used to auto-assign it a color.
    */
    get isIndexed() {
        return this.i.eu;
    }
    /**
     * Gets if the series should appear in any legends.
    */
    get isUsableInLegend() {
        return this.i.isUsableInLegend;
    }
    /**
     * Gets whether this series is an annotation layer.
    */
    get isAnnotationLayer() {
        return this.i.d7;
    }
    /**
     * Gets or sets whether this layer renders as an overlay or not.
    */
    get shouldRenderAsOverlay() {
        return this.i.uo;
    }
    set shouldRenderAsOverlay(v) {
        this.i.uo = ensureBool(v);
    }
}
