import * as widgets from '@jupyter-widgets/base';
import * as d3 from 'd3';
import popper from 'popper.js';
import * as THREE from 'three';
import { WidgetModel, WidgetView } from '@jupyter-widgets/base';
import { Scale } from './Scale';
import { ScaleModel } from './ScaleModel';
import { AxisModel } from './AxisModel';
import { Mark } from './Mark';
import { MarkModel } from './MarkModel';
import { Interaction } from './Interaction';
interface IFigureSize {
    width: number;
    height: number;
}
export declare class Figure extends widgets.DOMWidgetView {
    initialize(): void;
    protected getFigureSize(): IFigureSize;
    render(): void;
    protected renderImpl(): Promise<[void, widgets.DOMWidgetView[]]>;
    createWebGLRenderer(): void;
    replace_dummy_nodes(views: Mark[]): void;
    create_listeners(): void;
    title_style_updated(): void;
    background_style_updated(): void;
    legend_style_updated(): void;
    legend_text_updated(): void;
    create_figure_scales(): Promise<[void, void]>;
    padded_range(direction: 'x' | 'y', scale_model: ScaleModel): number[];
    range(direction: 'x' | 'y'): number[];
    get_mark_plotarea_height(scaleModel: ScaleModel): number;
    get_mark_plotarea_width(scaleModel: ScaleModel): number;
    add_axis(model: AxisModel): Promise<widgets.DOMWidgetView>;
    remove_from_padding_dict(dict: any, mark_view: Mark, scale_model: ScaleModel): void;
    update_padding_dict(dict: any, mark_view: Mark, scale_model: ScaleModel, value: any): void;
    mark_scales_updated(view: Mark): void;
    mark_padding_updated(view: Mark): void;
    update_marks(mark_views: any): void;
    remove_mark(view: Mark): void;
    add_mark(model: MarkModel): Promise<Mark>;
    update_paddings(): void;
    update_plotarea_dimensions(): void;
    processPhosphorMessage(msg: any): void;
    relayout(): void;
    layout_webgl_canvas(): void;
    update_legend(): void;
    get_legend_coords(legend_location: 'top' | 'top-right' | 'right' | 'bottom-right' | 'bottom' | 'bottom-left' | 'left', width: number, height: number, disp: number): number[];
    set_interaction(model: WidgetModel | null): Promise<WidgetView>;
    update_title(model: any, title: any): void;
    remove(): any;
    get_svg(): Promise<any>;
    get_rendered_canvas(scale: any): Promise<HTMLCanvasElement>;
    save_png(filename: any, scale: any): void;
    save_svg(filename: string): void;
    getPixel(x: any, y: any): Promise<Uint8ClampedArray>;
    update_gl(): void;
    _update_gl(): void;
    render_gl(): Promise<void>;
    change_theme(): void;
    axis_views: widgets.ViewList<widgets.DOMWidgetView>;
    bg: d3.Selection<SVGRectElement, any, any, any>;
    bg_events: d3.Selection<SVGRectElement, any, any, any>;
    change_layout: () => void;
    clip_id: string;
    clip_path: d3.Selection<SVGRectElement, any, any, any>;
    debouncedRelayout: () => void;
    fig_axes: d3.Selection<SVGGraphicsElement, any, any, any>;
    fig_marks: d3.Selection<SVGGraphicsElement, any, any, any>;
    fig_background: d3.Selection<SVGGraphicsElement, any, any, any>;
    fig: d3.Selection<SVGGraphicsElement, any, any, any>;
    figure_padding_x: number;
    figure_padding_y: number;
    height: number;
    interaction_view: Interaction;
    interaction: d3.Selection<SVGGElement, any, any, any>;
    margin: {
        top: number;
        bottom: number;
        left: number;
        right: number;
    };
    mark_views: widgets.ViewList<Mark>;
    plotarea_height: number;
    plotarea_width: number;
    popper_reference: popper.ReferenceObject;
    popper: popper;
    renderer: THREE.WebGLRenderer | null;
    scale_x: Scale;
    scale_y: Scale;
    svg: d3.Selection<SVGElement, any, any, any>;
    svg_background: d3.Selection<SVGElement, any, any, any>;
    title: d3.Selection<SVGTextElement, any, any, any>;
    tooltip_div: d3.Selection<HTMLDivElement, any, any, any>;
    width: number;
    x_pad_dict: {
        [id: string]: number;
    };
    xPaddingArr: {
        [id: string]: number;
    };
    y_pad_dict: {
        [id: string]: number;
    };
    yPaddingArr: {
        [id: string]: number;
    };
    private dummyNodes;
    private _update_requested;
    private relayoutRequested;
    _initial_marks_created: Promise<any>;
    private _initial_marks_created_resolve;
}
export {};
