import { Point2D, PrimitiveGroup, Contour2D, Circle2D, Dataset, Graph2D, Scatter, Heatmap, Wire } from "./primitives";
import { Attribute, PointFamily, Axis, Tooltip } from "./utils";
import { EdgeStyle } from "./style";
/** PlotData is the key class for displaying data. It contains numerous parameters and methods
 * for that purpose. It is inherited by more specific data-visualization objects such as
 * PlotScatter, PlotContour, ParallelPlot and PrimitiveGroupContainer
 */
export declare abstract class PlotData {
    data: any;
    width: number;
    height: number;
    buttons_ON: boolean;
    X: number;
    Y: number;
    canvas_id: string;
    is_in_multiplot: boolean;
    type_: string;
    name: string;
    context_show: any;
    context_hidden: any;
    context: any;
    minX: number;
    maxX: number;
    minY: number;
    maxY: number;
    init_scale: number;
    init_scaleX: number;
    init_scaleY: number;
    scale: number;
    scaleX: number;
    scaleY: number;
    scroll_x: number;
    scroll_y: number;
    initial_originX: number;
    initial_originY: number;
    initial_width: number;
    initial_height: number;
    originX: number;
    originY: number;
    settings_on: boolean;
    color_to_plot_data: any;
    select_on_mouse: any;
    select_on_mouse_indices: number[];
    primitive_mouse_over_point: Point2D;
    select_on_click: any[];
    heatmap_selected_points: any[];
    heatmap_selected_points_indices: number[];
    clicked_points: any[];
    selected_point_index: any[];
    clicked_point_index: any[];
    color_surface_on_mouse: string;
    color_surface_selected: string;
    color_surface_on_click: string;
    color_heatmap_selection: string;
    pointLength: number;
    tooltip_ON: boolean;
    axis_ON: boolean;
    link_object_ON: boolean;
    index_first_in: number;
    index_last_in: number;
    nb_points_in: number;
    graph_ON: boolean;
    isParallelPlot: boolean;
    interaction_ON: boolean;
    x_nb_digits: number;
    y_nb_digits: number;
    multiplot_manipulation: boolean;
    fusion_coeff: number;
    log_scale_x: boolean;
    log_scale_y: boolean;
    plotObject: any;
    plot_datas: object;
    tooltip_list: any[];
    button_x: number;
    button_w: number;
    button_h: number;
    zoom_rect_y: number;
    zw_bool: boolean;
    zw_y: number;
    reset_rect_y: number;
    select_bool: boolean;
    select_y: number;
    csv_button_y: number;
    sort_list_points: any[];
    graph_to_display: boolean[];
    graph1_button_x: number;
    graph1_button_y: number;
    graph1_button_w: number;
    graph1_button_h: number;
    nb_graph: number;
    mergeON: boolean;
    merge_y: number;
    permanent_window: boolean;
    perm_button_y: number;
    perm_window_x: number;
    perm_window_y: number;
    perm_window_w: number;
    perm_window_h: number;
    initial_permW: number;
    initial_permH: number;
    graph_colorlist: string[];
    graph_name_list: string[];
    graph_text_spacing_list: number[];
    decalage_axis_x: number;
    decalage_axis_y: number;
    last_point_list: any[];
    scatter_points: Point2D[];
    scatter_init_points: Point2D[];
    refresh_point_list_bool: boolean;
    sc_interpolation_ON: boolean;
    isSelectingppAxis: boolean;
    zoom_box_x: number;
    zoom_box_y: number;
    zoom_box_w: number;
    zoom_box_h: number;
    clear_point_button_y: number;
    xlog_button_y: number;
    ylog_button_y: number;
    heatmap_button_y: number;
    all_attributes: Attribute[];
    attribute_booleans: boolean[];
    axis_list: Attribute[];
    to_display_list: any[];
    axis_y_start: number;
    axis_y_end: number;
    y_step: number;
    axis_x_start: number;
    axis_x_end: number;
    x_step: number;
    move_index: number;
    elements: any;
    vertical: boolean;
    disp_x: number;
    disp_y: number;
    disp_w: number;
    disp_h: number;
    selected_axis_name: string;
    inverted_axis_list: boolean[];
    rubber_bands: any[];
    rubber_last_min: number;
    rubber_last_max: number;
    edge_style: EdgeStyle;
    bandWidth: number;
    bandColor: string;
    bandOpacity: number;
    axisNameSize: number;
    gradSize: number;
    axisNbGrad: number;
    interpolation_colors: string[];
    rgbs: [number, number, number][];
    hexs: string[];
    pp_selected: any[];
    pp_selected_index: number[];
    click_on_button: boolean;
    vertical_axis_coords: number[][];
    horizontal_axis_coords: number[][];
    display_list_to_elements_dict: any;
    initial_rect_color_stroke: string;
    initial_rect_line_width: number;
    initial_rect_dashline: number[];
    manipulation_rect_color_fill: string;
    manipulation_rect_color_stroke: string;
    manipulation_rect_line_width: number;
    manipulation_rect_opacity: number;
    manipulation_rect_dashline: number[];
    isSelecting: boolean;
    selection_coords: [number, number][];
    is_drawing_rubber_band: boolean;
    rubberbands_dep: [string, [number, number]][];
    point_families: PointFamily[];
    latest_selected_points: Point2D[];
    latest_selected_points_index: number[];
    manipulation_bool: boolean;
    button_y: number;
    manip_button_x: number;
    reset_button_x: number;
    display_order: number[];
    shown_datas: any[];
    hidden_datas: any[];
    clickedPlotIndex: number;
    primitive_dict: any;
    elements_dict: any;
    dep_mouse_over: boolean;
    heatmap: Heatmap;
    heatmap_view: boolean;
    selected_areas: number[][];
    heatmap_table: any;
    constructor(data: any, width: number, height: number, buttons_ON: boolean, X: number, Y: number, canvas_id: string, is_in_multiplot?: boolean);
    abstract draw(): any;
    abstract draw_from_context(hidden: any): any;
    define_canvas(canvas_id: string): void;
    set_canvas_size(width: number, height: number): void;
    draw_initial(): void;
    refresh_MinMax(point_list: any, is_graph2D?: boolean): void;
    reset_scales(): void;
    draw_settings_rect(): void;
    draw_rect(): void;
    define_context(hidden: any): void;
    draw_empty_canvas(context: any): void;
    draw_manipulable_rect(): void;
    draw_mouse_over_rect(): void;
    draw_primitivegroup(hidden: any, mvx: any, mvy: any, scaleX: any, scaleY: any, d: PrimitiveGroup): void;
    draw_wire(hidden: boolean, wire: Wire): void;
    draw_contour(hidden: any, mvx: any, mvy: any, scaleX: any, scaleY: any, d: Contour2D): void;
    draw_circle(hidden: any, mvx: any, mvy: any, scaleX: any, scaleY: any, d: Circle2D): void;
    draw_point(hidden: any, d: Point2D): void;
    draw_axis(mvx: any, mvy: any, scaleX: any, scaleY: any, d: Axis, log_scale_x: any, log_scale_y: any): void;
    draw_scatterplot_axis(d: Axis, lists: any, to_display_attributes: any): void;
    draw_tooltip(d: Tooltip, mvx: any, mvy: any, point_list: any, initial_point_list: any, elements: any, mergeON: any, axes: any[]): void;
    find_min_dist(d: any, mvx: any, mvy: any, step: any): number;
    draw_dataset(d: Dataset, hidden: any, mvx: any, mvy: any): void;
    draw_graph2D(d: Graph2D, hidden: any, mvx: any, mvy: any): void;
    refresh_heatmap_table(scatter: any): void;
    draw_gradient_axis(max_density: any): void;
    get_heatmap_steps(): number[];
    draw_heatmap(hidden: any): void;
    draw_scatterplot(d: Scatter, hidden: any, mvx: any, mvy: any): void;
    get_point_order(): any[];
    get_extremas_wrappers(min: any, max: any): number[];
    draw_vertical_parallel_axis(nb_axis: number, mvx: number): void;
    draw_horizontal_parallel_axis(nb_axis: number, mvy: number): void;
    draw_parallel_axis(nb_axis: number, mv: number): void;
    point_list_equals(p_list1: Point2D[], p_list2: Point2D[]): boolean;
    real_to_axis_coord(real_coord: any, type_: any, list: any, inverted: any): number;
    get_coord_on_parallel_plot(attribute_type: any, current_list: any, elt: any, axis_coord_start: any, axis_coord_end: any, inverted: any): number;
    refresh_axis_coords(): void;
    get_axis_coords(vertical: boolean): any[];
    is_inside_band(real_x: any, real_y: any, axis_index: any): boolean;
    sort_to_display_list(): void;
    refresh_display_to_elements_dict(): void;
    pp_color_management(index: number, selected: boolean, clicked: boolean, over: boolean, heatmap_select: boolean): void;
    draw_parallel_coord_lines(): void;
    reset_pp_selected(): void;
    refresh_pp_selected(): void;
    reset_rubberbands(): void;
    from_to_display_list_to_elements(i: any): any;
    draw_rubber_bands(mvx: any): void;
    refresh_interpolation_colors(): void;
    add_to_hexs(hex: string): void;
    remove_from_hexs(index: number): void;
    dep_color_propagation(vertical: boolean, inverted: boolean, hexs: string[], attribute_name: string): void;
    refresh_to_display_list(elements: any): void;
    refresh_axis_bounds(nb_axis: any): void;
    refresh_buttons_coords(): void;
    refresh_attribute_booleans(): void;
    refresh_all_attributes(): void;
    add_to_axis_list(attribute_names: string[]): void;
    add_points_to_selection(index_list: number[]): void;
    add_axis_to_parallelplot(name: string): void;
    remove_axis_from_parallelplot(name: string): void;
    get_scatterplot_displayed_axis(): Attribute[];
    get_scatterplot_displayable_axis(): Attribute[];
    reset_scatter_point_families(): void;
    refresh_scatter_point_family(): void;
    set_scatterplot_x_axis(attribute_name: string): void;
    set_scatterplot_y_axis(attribute_name: string): void;
    add_to_tooltip(tooltip: Tooltip, str: string): Tooltip;
    remove_from_tooltip(tooltip: Tooltip, str: string): Tooltip;
    draw_selection_rectangle(): void;
    draw_zoom_rectangle(): void;
    reset_scroll(): void;
    invert_rubber_bands(index_list: any): void;
    scatter_to_real_length(sc_length: number, coord_type: string, start_coord?: number): number;
    real_to_scatter_length(real_length: number, coord_type: string, start_coord?: number): number;
    scatter_to_real_coords(sc_coord: number, coord_type: string): number;
    real_to_scatter_coords(real_coord: number, coord_type: string): number;
    axis_to_real_coords(x: number, type_: string, list: any, inverted: any): number;
    add_to_rubberbands_dep(selection: [string, [number, number]]): void;
    get_nb_intersections(attrNum1: any, attrNum2: any): number;
    delete_inverted_list(lists: any): any[];
    getOptimalAxisDisposition(): any;
    OptimizeAxisList(): void;
    refresh_selected_points_from_indices(): void;
    refresh_selected_point_index(): void;
    reset_selected_areas(): void;
    refresh_heatmap_selected_point_indices(): void;
    refresh_selected_by_heatmap(): void;
    refresh_clicked_point_index(): void;
    refresh_latest_selected_points_index(): void;
    selecting_point_action(mouse1X: any, mouse1Y: any): void;
    refresh_selected_areas(mouse1X: any, mouse1Y: any): void;
    reset_select_on_click(reset_clicked_points?: boolean): void;
    mouse_down_interaction(mouse1X: any, mouse1Y: any, mouse2X: any, mouse2Y: any, isDrawing: any, e: any): any[];
    mouse_move_interaction(isDrawing: any, mouse_moving: any, mouse1X: any, mouse1Y: any, mouse2X: any, mouse2Y: any, e: any, canvas: any, click_on_selectw_border: any, up: any, down: any, left: any, right: any): any[];
    mouse_up_interaction(mouse_moving: any, mouse1X: any, mouse1Y: any, mouse2X: any, mouse2Y: any): any[];
    wheel_interaction(mouse3X: any, mouse3Y: any, e: any): any[];
    mouse_up_interaction_pp(click_on_axis: any, selected_axis_index: any, click_on_name: any, click_on_band: any, click_on_border: any, is_resizing: any, selected_name_index: any, mouse_moving: any, isDrawing: any, mouse1X: any, mouse1Y: any, mouse3X: any, mouse3Y: any, e: any): any[];
    mouse_interaction(is_parallelplot: boolean): void;
    get_nb_points_inside_canvas(list_points: any, mvx: any, mvy: any): number[];
    is_inside_canvas(point: any, mvx: any, mvy: any): boolean;
    get_points_inside_canvas(list_points: any, mvx: any, mvy: any): any[];
    distance(p1: any, p2: any): number;
    hashing_point(point: any, nb_x: any, nb_y: any, mvx: any, mvy: any): any[];
    hashing_list(point_list: any, nb_x: any, nb_y: any, mvx: any, mvy: any): any[];
    dehashing_list(hashed_point_list: any): any[];
    refresh_point_list(point_list: Point2D[], mvx: number, mvy: number): Point2D[];
    delete_clicked_points(point_list: any): void;
    delete_tooltip(point_list: any): void;
    is_intersecting(seg1: [[number, number], [number, number]], seg2: [[number, number], [number, number]]): boolean;
    counting_intersections(segments: any): number;
}
export declare class Interactions {
    static initialize_select_win_bool(mouseX: any, mouseY: any, plot_data: any): [boolean, boolean, boolean, boolean, boolean];
    static initialize_permWH(plot_data: any): void;
    static selection_window_resize(mouse1X: any, mouse1Y: any, mouse2X: any, mouse2Y: any, up: any, down: any, left: any, right: any, plot_data: any): void;
    static mouse_move_select_win_action(mouse1X: any, mouse1Y: any, mouse2X: any, mouse2Y: any, plot_data: any): void;
    static selection_window_action(plot_data: any): void;
    static refresh_heatmap_selected_points(plot_data: any): void;
    static zoom_window_action(mouse1X: any, mouse1Y: any, mouse2X: any, mouse2Y: any, scale_ceil: any, plot_data: PlotData): void;
    static refresh_permanent_rect(plot_data: any): void;
    static click_on_zoom_window_action(plot_data: any): void;
    static click_on_selection_button_action(plot_data: any): void;
    static graph_button_action(mouse1X: any, mouse1Y: any, plot_data: any): void;
    static click_on_merge_action(plot_data: any): void;
    static reset_zoom_box(plot_data: any): void;
    static reset_permanent_window(plot_data: any): void;
    static click_on_perm_action(plot_data: any): void;
    static click_on_clear_action(plot_data: any): void;
    static zoom_in_button_action(plot_data: any): void;
    static zoom_out_button_action(plot_data: any): void;
    static click_on_xlog_action(plot_data: any): void;
    static click_on_ylog_action(plot_data: any): void;
    static click_on_heatmap_action(plot_data: any): void;
    static click_on_csv_action(plot_data: any): void;
    static mouse_move_axis_inversion(isDrawing: any, e: any, selected_name_index: any, plot_data: any): any[];
    static create_rubber_band(mouse1X: any, mouse1Y: any, selected_axis_index: any, e: any, plot_data: any): any[];
    static rubber_band_translation(mouse1X: any, mouse1Y: any, selected_band_index: any, e: any, plot_data: any): any[];
    static rubber_band_resize(mouse1X: any, mouse1Y: any, selected_border: any, e: any, plot_data: any): any[];
    static select_axis_action(selected_axis_index: any, click_on_band: any, click_on_border: any, plot_data: PlotData): void;
    static mouse_up_axis_interversion(mouse1X: any, mouse1Y: any, e: any, plot_data: any): any[];
    static select_title_action(selected_name_index: any, plot_data: any): void;
    static change_disposition_action(plot_data: any): void;
    static rubber_band_size_check(selected_band_index: any, plot_data: any): boolean;
    static move_axis(old_index: any, new_index: any, plot_data: any): void;
    static initialize_click_on_bands(mouse1X: any, mouse1Y: any, plot_data: any): any[];
    static initialize_click_on_axis(nb_axis: number, mouse1X: number, mouse1Y: number, click_on_axis: any, plot_data: any): any[];
    static initialize_click_on_name(nb_axis: number, mouse1X: number, mouse1Y: number, plot_data: any): any[];
    static click_on_reset_action(plot_data: PlotData): void;
}
export declare class Buttons {
    static zoom_button(x: any, y: any, w: any, h: any, plot_data: PlotData): void;
    static zoom_window_button(x: any, y: any, w: any, h: any, plot_data: PlotData): void;
    static reset_button(x: any, y: any, w: any, h: any, plot_data: PlotData): void;
    static selection_button(x: any, y: any, w: any, h: any, plot_data: PlotData): void;
    static graph_buttons(y: any, w: any, h: any, police: any, plot_data: PlotData): void;
    static disp_button(x: any, y: any, w: any, h: any, police: any, plot_data: PlotData): void;
    static merge_button(x: any, y: any, w: any, h: any, police: any, plot_data: PlotData): void;
    static perm_window_button(x: any, y: any, w: any, h: any, police: any, plot_data: PlotData): void;
    static clear_point_button(x: any, y: any, w: any, h: any, police: any, plot_data: PlotData): void;
    static log_scale_buttons(x: any, y1: any, y2: any, w: any, h: any, police: any, plot_data: PlotData): void;
    static heatmap_button(x: any, y: any, w: any, h: any, police: any, plot_data: PlotData): void;
    static csv_button(x: any, y: any, w: any, h: any, police: any, plot_data: PlotData): void;
}
