import type { SCRTDoubleVector, SCRTLineDrawingParams, TSciChart } from "../../../../types/TSciChart";
import type { WebGlRenderContext2D } from "../../../Drawing/WebGlRenderContext2D";
import { EDataSeriesType } from "../../../Model/IDataSeries";
import type { IPointSeries } from "../../../Model/PointSeries/IPointSeries";
import type { RenderPassData } from "../../../Services/RenderPassData";
import type { TDpiChangedEventArgs } from "../../TextureManager/DpiHelper";
import type { FastLineSegmentRenderableSeries } from "../FastLineSegmentRenderableSeries";
import { BaseSeriesDrawingProvider } from "./BaseSeriesDrawingProvider";
export interface ILineSegmentSeriesDrawingProviderProperties {
    stroke?: string;
    strokeThickness?: number;
    opacity?: number;
    strokeDashArray?: number[];
    dataSeriesType?: EDataSeriesType;
}
/**
 * Used internally - a drawing provider performs drawing for a {@link FastLineSegmentRenderableSeries} using
 * our WebAssembly WebGL rendering engine
 */
export declare class LineSegmentSeriesDrawingProvider extends BaseSeriesDrawingProvider<FastLineSegmentRenderableSeries> {
    private linesPenCache;
    private nativeDrawingProvider;
    protected args: SCRTLineDrawingParams;
    /**
     * Creates an instance of the {@link LineSegmentSeriesDrawingProvider}
     * @param webAssemblyContext The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and
     * access to our WebGL2 Engine and WebAssembly numerical methods
     * @param parentSeries the parent {@link FastLineSegmentRenderableSeries} which this drawing provider is attached to
     */
    constructor(webAssemblyContext: TSciChart, parentSeries: FastLineSegmentRenderableSeries, ySelector?: (ps: IPointSeries) => SCRTDoubleVector, xSelector?: (ps: IPointSeries) => SCRTDoubleVector);
    /** @inheritDoc */
    onDpiChanged(args: TDpiChangedEventArgs): void;
    /** @inheritDoc */
    onSeriesPropertyChange(propertyName: string): void;
    /** A mapping function to get the pen properties from the parent series */
    getProperties(parentSeries: FastLineSegmentRenderableSeries): ILineSegmentSeriesDrawingProviderProperties;
    /** @inheritDoc */
    onAttachSeries(): void;
    /** @inheritDoc */
    onDetachSeries(): void;
    /** @inheritDoc */
    getStartAndCount(renderPassData: RenderPassData, xValues: SCRTDoubleVector): {
        startIndex: number;
        count: number;
    };
    /** A hook so derived classes can change the args */
    updateArgs(renderPassData: RenderPassData): void;
    /**
     * Drawing two vectors xValues: [x1_1, x1_2, x2_1, x2_2,...], yValues: [y1_1, y1_2, y2_1, y2_2,...]
     */
    private drawXy;
    /**
     * Drawing two vectors xValues: [x1_1, x2_1,...], yValues: [y1_1, y2_1,...],  x1Values: [x1_2, x2_2,...], y1Values: [y1_2, y2_2,...]
     */
    private drawXyXy;
    /** @inheritDoc */
    draw(renderContext: WebGlRenderContext2D, renderPassData: RenderPassData): void;
    /**
     * @inheritDoc
     */
    delete(): void;
    private drawLines;
}
