import { Mark } from './Mark';
import * as d3 from 'd3';
import { ScatterGLModel } from './ScatterGLModel';
import { Scale } from './Scale';
import * as THREE from 'three';
declare type TypedArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array | Uint8ClampedArray | Float32Array | Float64Array;
declare class AttributeParameters {
    constructor(array: TypedArray, item_size?: number, mesh_per_attribute?: number, normalized?: boolean);
    array: TypedArray;
    item_size: number;
    mesh_per_attribute: number;
    normalized: boolean;
}
declare class ColorAttributeParameters extends AttributeParameters {
    constructor(array: TypedArray, item_size?: number, mesh_per_attribute?: number, normalized?: boolean, use_colormap?: boolean);
    use_colormap: boolean;
}
declare class SelectionAttributeParameters extends AttributeParameters {
    constructor(array: TypedArray, item_size?: number, mesh_per_attribute?: number, normalized?: boolean, use_selection?: boolean);
    use_selection: boolean;
}
export declare class ScatterGL extends Mark {
    render(): Promise<void>;
    initialize_attribute(name: string, parameters: AttributeParameters): any;
    get_color_attribute_parameters(): ColorAttributeParameters;
    get_opacity_attribute_parameters(): AttributeParameters;
    get_size_attribute_parameters(): AttributeParameters;
    get_rotation_attribute_parameters(): AttributeParameters;
    get_selected_attribute_parameters(): SelectionAttributeParameters;
    update_scene(): void;
    render_gl(): void;
    create_listeners(): void;
    update_attribute(name: string, value: THREE.InstancedBufferAttribute, new_parameters: AttributeParameters): any;
    update_attributes(name: string, value: THREE.InstancedBufferAttribute, value_previous: THREE.InstancedBufferAttribute, new_parameters: AttributeParameters, animate?: boolean, after_animation?: Function): any[];
    animate_attribute(name: string, after_animation?: Function): void;
    update_x(rerender?: boolean, animate?: boolean): void;
    update_y(rerender?: boolean, animate?: boolean): void;
    update_markers_number(n: number): void;
    update_color(rerender?: boolean): void;
    update_opacity(rerender?: boolean, animate?: boolean): void;
    update_size(rerender?: boolean, animate?: boolean): void;
    update_rotation(rerender?: boolean, animate?: boolean): void;
    update_selected(rerender?: boolean): void;
    update_marker(): void;
    update_stroke(): void;
    update_stroke_width(): void;
    update_color_map(): void;
    update_position(animate?: any): void;
    invalidate_pixel_position(): void;
    ensure_pixel_position(): void;
    update_pixel_position(animate?: any): void;
    selector_changed(point_selector: any, rect_selector: any): void;
    _real_selector_changed(point_selector: any, rect_selector: any): any[];
    set_positional_scales(): void;
    initialize_additional_scales(): void;
    set_ranges(): void;
    transition(f: any, on_done: any, context: any): any;
    draw_legend(elem: any, x_disp: any, y_disp: any, inter_x_disp: any, inter_y_disp: any): number[];
    draw_legend_elements(elements_added: any, rect_dim: any): void;
    update_legend(): void;
    relayout(): void;
    compute_view_padding(): void;
    draw(animate?: any): void;
    clear_style(style_dict: any, indices?: any, elements?: any): void;
    set_default_style(indices: any, elements?: any): void;
    set_style_on_elements(style: any, indices: any, elements?: any): void;
    transitions: any[];
    x_scale: Scale;
    y_scale: Scale;
    pixel_x: Float64Array;
    pixel_y: Float64Array;
    trottled_selector_changed: any;
    invalidated_pixel_position: boolean;
    camera: THREE.OrthographicCamera;
    scene: THREE.Scene;
    instanced_geometry: THREE.InstancedBufferGeometry;
    scatter_material: THREE.RawShaderMaterial;
    mesh: THREE.Mesh;
    markers_number: number;
    x: THREE.InstancedBufferAttribute;
    x_previous: THREE.InstancedBufferAttribute;
    y: THREE.InstancedBufferAttribute;
    y_previous: THREE.InstancedBufferAttribute;
    color: THREE.InstancedBufferAttribute;
    size: THREE.InstancedBufferAttribute;
    size_previous: THREE.InstancedBufferAttribute;
    opacity: THREE.InstancedBufferAttribute;
    opacity_previous: THREE.InstancedBufferAttribute;
    rotation: THREE.InstancedBufferAttribute;
    rotation_previous: THREE.InstancedBufferAttribute;
    selected: THREE.InstancedBufferAttribute;
    legend_el: d3.Selection<any, any, any, any>;
    dot: any;
    model: ScatterGLModel;
}
export {};
