import { Point } from "../../../../../Core/Point";
import { EDataLabelProviderType } from "../../../../../types/DataLabelProviderType";
import { EDataLabelSkipMode } from "../../../../../types/DataLabelSkipMode";
import type { TDataLabelStyle } from "../../../../../types/TDataLabelStyle";
import { EHorizontalTextPosition, EVerticalTextPosition } from "../../../../../types/TextPosition";
import type { SCRTDoubleVector, TSRTextBounds } from "../../../../../types/TSciChart";
import type { WebGlRenderContext2D } from "../../../../Drawing/WebGlRenderContext2D";
import type { RenderPassData } from "../../../../Services/RenderPassData";
import { EPolarLabelMode } from "../../../Axis/Polar/types/PolarLabelMode";
import type { TDataLabel } from "../../DataLabels/BaseDataLabelProvider";
import { EColumnDataLabelPosition } from "../../DataLabels/ColumnSeriesDataLabelProvider";
import type { IDataLabelProviderOptions } from "../../DataLabels/DataLabelProvider";
import type { DataLabelState } from "../../DataLabels/DataLabelState";
import type { PolarColumnRenderableSeries } from "../PolarColumnRenderableSeries";
import { PolarColumnDataLabelState } from "./PolarColumnDataLabelState";
import { PolarDataLabelProvider } from "./PolarDataLabelProvider";
import type { PolarDataLabelState } from "./PolarDataLabelState";
export interface IPolarColumnSeriesDataLabelProviderOptions extends IDataLabelProviderOptions {
    /**
     * Always Center for {@link PolarColumnRenderableSeries}
     */
    horizontalTextPosition?: EHorizontalTextPosition.Center;
    /**
     * Always Center for {@link PolarColumnRenderableSeries}
     */
    verticalTextPosition?: EVerticalTextPosition.Center;
    /**
     * Always ShowAll for {@link PolarColumnRenderableSeries}
     */
    skipMode?: EDataLabelSkipMode.ShowAll;
    /**
     * Gets or sets polar label mode to use for calculating data label rotation. Default Horizontal
     * For a list of value, see {@link EPolarLabelMode}
     */
    polarLabelMode?: EPolarLabelMode;
    /**
     * Sets y text position, where 0 is bottom and 1 is top of the column. Default 0.5.
     * Use a value greater than 1 to place the label outside of the column
     */
    labelYPositionMultiplier?: number;
    /**
     * For for both normal (x is angular) and vertical polar charts (y is angular), sets whether text should be positioned outside or inside the end of the column using {@link EColumnDataLabelPosition}.
     * Position Mode will position the label according to labelYPositionMultiplier where 0 corresponds to bottom y value and 1 to top
     * Default Outside
     */
    labelYPositionMode?: EColumnDataLabelPosition;
}
export declare class PolarColumnSeriesDataLabelProvider extends PolarDataLabelProvider {
    readonly type: EDataLabelProviderType;
    protected state: PolarDataLabelState;
    private polarLabelModeProperty;
    private yPositionMultiplierProperty;
    labelYPositionModeProperty: EColumnDataLabelPosition;
    constructor(options?: IPolarColumnSeriesDataLabelProviderOptions);
    /** @inheritDoc */
    shouldSkipLabel(state: DataLabelState, label: TDataLabel): boolean;
    /**
     * Gets or sets polar label mode to use for calculating data label rotation. Default Horizontal
     * For a list of value, see {@link EPolarLabelMode}
     */
    get polarLabelMode(): EPolarLabelMode;
    set polarLabelMode(value: EPolarLabelMode);
    /**
     * Gets or sets y text position, where 0 is bottom and 1 is top of the column. Default 0.5
     * Use a value greater than 1 to place the label outside of the column
     */
    get yPositionMultiplier(): number;
    set yPositionMultiplier(value: number);
    /**
     * For for both normal (x is angular) and vertical polar charts (y is angular), sets whether text should be positioned outside or inside the end of the column using {@link EColumnDataLabelPosition}.
     * Position Mode will position the label according to labelYPositionMultiplier where 0 corresponds to bottom y value and 1 to top
     * Default Outside
     */
    get labelYPositionMode(): EColumnDataLabelPosition;
    set labelYPositionMode(value: EColumnDataLabelPosition);
    getDataLabelState(renderContext: WebGlRenderContext2D, renderPassData: RenderPassData, style: TDataLabelStyle, color: string, yValues: SCRTDoubleVector, parentSeries: PolarColumnRenderableSeries): PolarDataLabelState;
    getPosition(state: PolarColumnDataLabelState, textBounds: TSRTextBounds): {
        position: Point;
        rotationCenter: Point;
        rotationAngle: number;
    };
    toJSON(): {
        type: EDataLabelProviderType;
        options: {
            style: TDataLabelStyle;
            color: string;
        };
    };
    protected get useRotation(): boolean;
}
