import { GradientParams } from "../../../Core/GradientParams";
import { NumberRange } from "../../../Core/NumberRange";
import { EColumnMode, EColumnYMode } from "../../../types/ColumnMode";
import { EDataPointWidthMode } from "../../../types/DataPointWidthMode";
import { ESeriesType } from "../../../types/SeriesType";
import { TSciChart } from "../../../types/TSciChart";
import { CoordinateCalculatorBase } from "../../Numerics/CoordinateCalculators/CoordinateCalculatorBase";
import { IThemeProvider } from "../../Themes/IThemeProvider";
import { BaseRenderableSeries } from "./BaseRenderableSeries";
import { IHitTestProvider } from "./HitTest/IHitTestProvider";
import { IBaseRenderableSeriesOptions } from "./IBaseRenderableSeriesOptions";
import { IRenderableSeries } from "./IRenderableSeries";
import { IRectangleSeriesDataLabelProviderOptions } from "./DataLabels/RectangleSeriesDataLabelProvider";
import { ICustomTextureOptions } from "../../Drawing/BrushCache";
/**
 * Options to pass to the {@link FastRectangleRenderableSeries} constructor
 */
export interface IFastRectangleRenderableSeriesOptions extends IBaseRenderableSeriesOptions {
    /**
     * The column fill as an HTML color code
     */
    fill?: string;
    /**
     * Sets a value used to calculate the width of rectangles in X direction.
     * By default the value is treated as data range, since rectangle series do not tend to be evenly spaced.
     * To specify if the value should be treated as relative, absolute, or based on range use {@link dataPointWidthMode}
     * Note that Absolute mode does not work well with autoRange due to circularity between the range calculation and the axis layout.
     */
    dataPointWidth?: number;
    /**
     * Sets the mode which determines how dataPointWidth in X direction is interpreted. Available values are {@link EDataPointWidthMode}.  Default Relative.
     */
    dataPointWidthMode?: EDataPointWidthMode;
    /**
     * Sets the fill as a gradient brush
     */
    fillLinearGradient?: GradientParams;
    /**
     * Sets the top corner radius, to give the rectangles top rounded corners. Default is 0
     */
    topCornerRadius?: number;
    /**
     * Sets the bottom corner radius, to give the rectangles bottom rounded corners. Default is 0
     */
    bottomCornerRadius?: number;
    /**
     * Options to pass to the DataLabelProvider. Set a style with font and size to enable per-point text for this series.
     */
    dataLabels?: IRectangleSeriesDataLabelProviderOptions;
    /**
     * Sets a common y1 value for all rectangles if y1Values are not provided. Default 0
     */
    defaultY1?: number;
    /**
     * This determines how the x values and optional x1 values are interpreted
     */
    columnXMode?: EColumnMode;
    /**
     * This determines how the y values and optional y1 values are interpreted
     */
    columnYMode?: EColumnYMode;
    /** Options that creates a custom texture brush */
    customTextureOptions?: ICustomTextureOptions;
}
export interface IRectangleRenderableSeries extends IRenderableSeries {
    fill?: string;
    fillLinearGradient?: GradientParams;
    columnXMode: EColumnMode;
    columnYMode: EColumnYMode;
    defaultY1: number;
    dataPointWidth: number;
    getDataPointWidth: (xCoordCalc: CoordinateCalculatorBase, widthFraction: number, widthMode?: EDataPointWidthMode) => number;
    dataPointWidthMode: EDataPointWidthMode;
    customTextureOptions: ICustomTextureOptions;
}
/**
 * Defines a rectangle-series or JavaScript rectangle chart type in the SciChart's High Performance Real-time
 * {@link https://www.scichart.com/javascript-chart-features | JavaScript Charts}
 * @remarks
 * To add a rectangle series to a {@link SciChartSurface} you need to declare both the {@link FastRectangleRenderableSeries | RenderableSeries}
 * and a {@link XyNDataSeries | DataSeries}.
 *
 * ---
 * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/chart-types/fast-rectangle-renderable-series/}
 */
export declare class FastRectangleRenderableSeries extends BaseRenderableSeries implements IRectangleRenderableSeries {
    /** @inheritDoc */
    readonly type: ESeriesType;
    protected defaultY1Property: number;
    private fillProperty;
    private dataPointWidthProperty;
    private dataPointWidthModeProperty;
    private columnXModeProperty;
    private columnYModeProperty;
    private topCornerRadiusProperty;
    private bottomCornerRadiusProperty;
    private fillLinearGradientProperty;
    private customTextureOptionsProperty;
    /**
     * Creates an instance of the {@link FastRectangleRenderableSeries}
     * @param webAssemblyContext The {@link TSciChart | SciChart WebAssembly Context} containing
     * native methods and access to our WebGL2 WebAssembly Drawing Engine
     * @param options optional parameters of type {@link IFastRectangleRenderableSeriesOptions} applied when constructing the series type
     *
     * ---
     * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/chart-types/fast-rectangle-renderable-series/}
     */
    constructor(webAssemblyContext: TSciChart, options?: IFastRectangleRenderableSeriesOptions);
    protected addDrawingProviders(webAssemblyContext: TSciChart, options?: IBaseRenderableSeriesOptions): void;
    applyTheme(themeProvider: IThemeProvider): void;
    /**
     * Gets or Sets a common y1 value for all rectangles if y1Values are not provided.  Default 0
     */
    get defaultY1(): number;
    set defaultY1(value: number);
    /**
     * Gets or Sets fill property
     */
    get fill(): string;
    set fill(htmlColorCode: string);
    /**
     * Gets or sets the fill as a gradient brush
     */
    get fillLinearGradient(): GradientParams;
    set fillLinearGradient(gradientBrushParams: GradientParams);
    /**
     * Gets or Sets how the x values and optional x1 values are interpreted
     */
    get columnXMode(): EColumnMode;
    set columnXMode(value: EColumnMode);
    /**
     * Gets or Sets how the y values and optional y1 values are interpreted
     */
    get columnYMode(): EColumnYMode;
    set columnYMode(value: EColumnYMode);
    /**
     * Gets or Sets a value used to calculate the width of rectangles in X direction.
     * By default the value is treated as data range, since rectangle series do not tend to be evenly spaced.
     * To specify if the value should be treated as relative, absolute, or based on range use {@link dataPointWidthMode}
     * Note that Absolute mode does not work well with autoRange due to circularity between the range calculation and the axis layout.
     */
    get dataPointWidth(): number;
    set dataPointWidth(dataPointWidth: number);
    /**
     * Gets or sets the mode which determines how dataPointWidth in X direction is interpreted. Available values are {@link EDataPointWidthMode}.  Default Range.
     */
    get dataPointWidthMode(): EDataPointWidthMode;
    set dataPointWidthMode(value: EDataPointWidthMode);
    /**
     * Gets or sets the top corner radius, to give the rectangles top rounded corners. Default is 0
     */
    get topCornerRadius(): number;
    set topCornerRadius(cornerRadius: number);
    /**
     * Gets or sets the bottom corner radius, to give the rectangles bottom rounded corners. Default is 0
     */
    get bottomCornerRadius(): number;
    set bottomCornerRadius(cornerRadius: number);
    /**
     * Gets or sets options to use a custom texture brush
     */
    get customTextureOptions(): ICustomTextureOptions;
    /**
     * Gets or sets options to use a custom texture brush
     */
    set customTextureOptions(customTextureOptions: ICustomTextureOptions);
    /** @inheritDoc */
    getXRange(): NumberRange;
    /** @inheritDoc */
    getYRange(xVisibleRange: NumberRange, isXCategoryAxis?: boolean): NumberRange;
    /** @inheritDoc */
    getIndicesRange(xRange: NumberRange, isCategoryData?: boolean): NumberRange;
    /** @inheritDoc */
    resolveAutoColors(index: number, maxSeries: number, theme: IThemeProvider): void;
    /** @inheritDoc */
    toJSON(excludeData?: boolean): import("../../..").TSeriesDefinition;
    /** @inheritDoc */
    protected newHitTestProvider(): IHitTestProvider;
}
