import type { SCRTDoubleVector, TSciChart, SCRTTriangleDrawingParams } from "../../../../types/TSciChart";
import type { ICustomTextureOptions } from "../../../Drawing/BrushCache";
import { BrushCache } from "../../../Drawing/BrushCache";
import type { WebGlRenderContext2D } from "../../../Drawing/WebGlRenderContext2D";
import type { IPointSeries } from "../../../Model/PointSeries/IPointSeries";
import type { RenderPassData } from "../../../Services/RenderPassData";
import type { TDpiChangedEventArgs } from "../../TextureManager/DpiHelper";
import type { FastTriangleRenderableSeries } from "../FastTriangleRenderableSeries";
import { BaseSeriesDrawingProvider } from "./BaseSeriesDrawingProvider";
import { ETriangleSeriesDrawMode } from "../../../../types/TriangleSeriesDrawMode";
import type { GradientParams } from "../../../../Core/GradientParams";
export interface ITriangleSeriesDrawingProviderProperties {
    fill: string;
    opacity: number;
    drawMode: ETriangleSeriesDrawMode;
    polygonVertices: number;
    fillLinearGradient: GradientParams;
    customTextureOptions: ICustomTextureOptions;
}
/**
 * Used internally - a drawing provider performs drawing for a {@link FastTriangleRenderableSeries} using
 * our WebAssembly WebGL rendering engine
 */
export declare class TriangleSeriesDrawingProvider extends BaseSeriesDrawingProvider<FastTriangleRenderableSeries> {
    private brushCache;
    private nativeDrawingProvider;
    protected args: SCRTTriangleDrawingParams;
    private neutralColorSCRTBrush;
    /**
     * Creates an instance of the {@link TriangleSeriesDrawingProvider}
     * @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 FastTriangleRenderableSeries} which this drawing provider is attached to
     */
    constructor(webAssemblyContext: TSciChart, parentSeries: FastTriangleRenderableSeries, 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: FastTriangleRenderableSeries): ITriangleSeriesDrawingProviderProperties;
    /**
     * @inheritDoc
     */
    onAttachSeries(): void;
    /**
     * @inheritDoc
     */
    onDetachSeries(): void;
    getBrushForDrawing(): BrushCache;
    /**
     * @inheritDoc
     */
    draw(renderContext: WebGlRenderContext2D, renderPassData: RenderPassData): void;
    /**
     * @inheritDoc
     */
    delete(): void;
    private drawTriangles;
}
