import * as d3 from 'd3'; export type Marker = { id: string; label: string; x: number; y: number; u: number; v: number; xm: number | null; ym: number | null; zm: number | null; colour: string; opacity: number; feature: string; group: string | null; show: boolean; update: boolean; }; export type Measurement = { id: string; label: string; x: number; y: number; u: number; v: number; from: string; to: string; distance: number; slope: number; text: string | null; }; export interface CursorMoveEvent extends CustomEvent { detail: { rangeCoords: [number, number]; domainCoords: [number, number]; }; } export interface ChangeDomainEvent extends CustomEvent { detail: { xDomain: [number, number]; yDomain: [number, number]; }; } export interface ChangeMarkersEvent extends CustomEvent { detail: { markers: Marker[]; }; } export interface ChangeMeasurementsEvent extends CustomEvent { detail: { measurements: Measurement[]; }; } export declare class Scatterplot { private readonly vertexShaderSource; private readonly fragmentShaderSource; boundingBox: { xMin: number; xMax: number; yMin: number; yMax: number; }; pointSize: number; groupID: string; measure: boolean; draw: boolean; gridVisible: boolean; backgroundColor: [number, number, number, number]; xGridColor: [number, number, number, number]; yGridColor: [number, number, number, number]; xDomain: [number, number]; yDomain: [number, number]; verticalExaggeration: number; markers: Marker[]; measurements: Measurement[]; canvasScalingFactor: number; cx0: number | null; cy0: number | null; x0: number; y0: number; annotationPadX: number; annotationPadY: number; annotationGapY: number; parent: HTMLDivElement; canvas: d3.Selection; containerSVG: d3.Selection; private readonly margins; private xy; private rgb; private drag; private measurementsSVG; private pointsSVG; private markerLabelBoxesSVG; private markerLabelsSVG; private measurementLabelBoxesSVG; private measurementLabelsSVG; private zoom; private xAxis; private yAxis; private xGrid; private yGrid; private draggedElement; private cursorMoveEvent; private domainEvent; private drawEvent; private measureEvent; private gl; private shaderProgram; private pointsize_uniform; private offset_uniform; private range_uniform; private matrix_uniform; private vertex_attrib; private color_attrib; private vertexBuffer; private colorBuffer; private indexBuffer; private currentIndex; constructor(parent: HTMLDivElement, margins: { left: number; right: number; top: number; bottom: number; }, xy: Float32Array, rgb: Uint8Array); private initializeD3; private initializeWebGL; private initializeEvents; get measurementPoints(): Marker[]; get height(): number; get width(): number; get innerWidth(): number; get innerHeight(): number; get xRange(): [number, number]; get yRange(): [number, number]; get domainWidth(): number; get domainHeight(): number; get domainAspectRatio(): number; get rangeAspectRatio(): number; get xDomainAdjusted(): [number, number]; get yDomainAdjusted(): [number, number]; get xScale(): d3.ScaleLinear; get yScale(): d3.ScaleLinear; get nPoints(): number; get zoomTransform(): d3.ZoomTransform; updateBody(): void; updateCanvas(): void; appendAxis(id: string): void; updateXAxis(): void; updateYAxis(): void; updateXGrid(): void; updateYGrid(): void; updateBoundingBox(): void; updatePoints(xy: Float32Array): void; updateColors(rgb: Uint8Array): void; updateColorsSlice(slice: Uint8Array, offset: number): void; updateIndex(index: Uint32Array): void; updatePaths(): void; updateMarkers(): void; appendMarker(id: string, coords: [number, number]): void; updateMeasurements(): void; printMeasurementLabel(distance: number, slope: number): string; updateLabels(): void; setGridVisibility(val: boolean): void; setBackgroundColor(val: string): void; handleZoom(_e: d3.D3ZoomEvent): void; setZoom(tf: { k: number; tx: number; ty: number; }): void; resetZoom(): void; getDraggedElement(event: Event): SVGCircleElement; updateDraggedElements(e: d3.D3DragEvent, _d: Marker): void; dragstarted(e: d3.D3DragEvent, _d: Marker): void; dragged(e: d3.D3DragEvent, _d: Marker): void; dragended(e: d3.D3DragEvent, _d: Marker): void; updatePointSize(val: number): void; updateVerticalExaggeration(val: number): void; toggleAnnotation(val: boolean): void; deleteAllMarkers(): void; deleteMarker(id: string): void; toggleMeasurement(val: boolean): void; addMeasurement(id: string): void; deleteAllMeasurements(): void; updatePlot(): void; resetPlot(): void; generateId(markers: Marker[]): string; clearGLPoints(): void; initializeGL(): void; multiplyMatrix(a: Float32Array, b: Float32Array): Float32Array; createOrthographic(left: number, right: number, bottom: number, top: number, near: number, far: number): Float32Array; createTranslation(tx: number, ty: number, tz: number): Float32Array; createScale(sx: number, sy: number, sz: number): Float32Array; updateTransform(): void; GLShader(gl: WebGL2RenderingContext, type: GLenum, code: string): WebGLShader; GLProgram(gl: WebGL2RenderingContext, vertex_source: string, fragment_source: string): WebGLProgram; }