import { BackgroundImageConfig, GradientElement, HearmapExData, HeatmapConfig, MappedGradient, Point, ShaderProgram, Translate } from "./types";
export declare class HeatmapRenderer {
    ctx: WebGL2RenderingContext | null;
    ratio: number;
    width: number;
    height: number;
    imageConfig: BackgroundImageConfig | null;
    configMin: number | null;
    configMax: number | null;
    min: number;
    max: number;
    size: number;
    zoom: number;
    angle: number;
    intensity: number;
    translate: [number, number];
    opacity: number;
    hearmapExData: HearmapExData | object;
    gradient: MappedGradient | null;
    _imageTexture: WebGLTexture | null;
    _pDataLength: number | undefined;
    _gradShadOP: ShaderProgram;
    _colorShadOP: ShaderProgram;
    _imageShaOP: ShaderProgram;
    _fbTexObj: WebGLTexture;
    _fbo: WebGLFramebuffer;
    private layer;
    private dom;
    private imgWidth;
    private imgHeight;
    private heatmapData;
    private type;
    constructor(container: string | HTMLElement, config: HeatmapConfig);
    /**
    * Invoke resize method on container resize.
    */
    resize(): void;
    clear(): void;
    /**
    * Set the maximum data value for relative gradient calculations
    * @param max - number
    * @returns instance
    */
    setMax(max: number): HeatmapRenderer;
    /**
   * Set the minimum data value for relative gradient calculations
   * @param min - number
   * @returns instance
   */
    setMin(min: number): HeatmapRenderer;
    /**
   * Accepts array of objects with color value and offset
   * @param gradient - Color Gradient
   * @returns instance
   */
    setGradient(gradient: GradientElement[]): HeatmapRenderer;
    /**
   * Set the translate on the Heatmap
   * @param translate - Accepts array [x, y]
   * @returns instance
   */
    setTranslate(translate: Translate): HeatmapRenderer;
    /**
   * Set the zoom transformation on the Heatmap
   * @param zoom - Accepts float value
   * @returns instance
   */
    setZoom(zoom: number): HeatmapRenderer;
    /**
   * Set the  rotation transformation on the Heatmap
   * @param angle - Accepts angle in radians
   * @returns instance
   */
    setRotationAngle(angle: number): HeatmapRenderer;
    /**
   * Set the point radius
   * @param size - Accepts float value
   * @returns instance
   */
    setSize(size: number): HeatmapRenderer;
    /**
   * Set the intensity factor
   * @param intensity - Accepts float value
   * @returns instance
   */
    setIntensity(intensity: number): HeatmapRenderer;
    /**
   * Set the opacity factor
   * @param opacity - The opacity factor.
   * @returns instance
   */
    setOpacity(opacity: number): HeatmapRenderer;
    /**
   * Set the background image
   * @param config - Accepts Object with { url, height, width, x, and y} properties
   * @returns instance
   */
    setBackgroundImage(config: BackgroundImageConfig): HeatmapRenderer | undefined;
    /**
   * Clear heatmap
   */
    clearData(): void;
    /**
   * Method to append data points. This method automatically adds new data points to the existing dataset and the heatmap updates in immediately. no need to call the ".render" method separately.
   * @param data - The data points with 'x', 'y' and 'value'
   * @param transIntactFlag - Flag indicating whether to apply existing heatmap transformations on the newly added data points
   * @returns instance
   */
    addData(data: Point[], transIntactFlag: boolean): HeatmapRenderer;
    /**
   * Method to load data. This will override any existing data.
   * @param data - Accepts an array of data points with 'x', 'y' and 'value'
   * @returns instance
   */
    renderData(data: Point[]): HeatmapRenderer;
    /**
   * Method to update the heatmap. This method to be invoked on every change in configuration.
   */
    render(): void;
    /**
   * Get projected co-ordinates relative to the heatmap
   * @param data - The data point to project.
   * @returns projected data point.
   */
    projection(data: Point): {
        x: number;
        y: number;
    };
}
