import { Selection } from 'd3-selection';
import Track from './track';
import { TrackOptions, OnMountEvent, OnUpdateEvent, OnRescaleEvent } from './interfaces';
/** Base track for WebGL2 rendering. */
export default abstract class WebGL2Track<TOptions extends TrackOptions> extends Track<TOptions> {
    canvas: Selection<HTMLCanvasElement, unknown, null, undefined>;
    gl: WebGL2RenderingContext;
    program: WebGLProgram | null;
    domainLocation: WebGLUniformLocation | null;
    protected abstract vertexShaderSource: string;
    protected abstract fragmentShaderSource: string;
    /** Override to add canvas element for WebGL2 rendering. */
    onMount(trackEvent: OnMountEvent): void;
    /** Override to scale canvas element on resize. */
    onUpdate(trackEvent: OnUpdateEvent): void;
    onRescale(trackEvent: OnRescaleEvent): void;
    /** Override of onDataLoaded from base class. */
    onDataLoaded(data?: any): void;
    protected abstract processData(data?: any): void;
    private redrawContext;
}
