import { EventHandlers, Nodes, Edges, InputPaths, Layouts, UserLayouts, Layers, Point, Sizes } from '../common/types';
import { UserConfigs, FitContentMargin } from '../common/configs';
import { Box } from '../modules/svg-pan-zoom-ex';
import { ExportOptions } from '../utils/svg';
import { LayerSlotProps } from '../composables/layer';
import { NodeSlotProps } from './node/VNode.vue';
import { NodeLabelSlotProps } from './node/VNodeLabel.vue';
import { EdgeOverlaySlotProps } from './edge/VEdgeOverlay.vue';
import { EdgeLabelSlotProps } from './edge/VEdgeLabelPlace.vue';
import { EdgeLabelsSlotProps } from './edge/VEdgeLabelsPlace.vue';
import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
import { BoxSelectionOption } from '../composables/mouse/boxSelection';
interface Props {
    nodes?: Nodes;
    edges?: Edges;
    paths?: InputPaths;
    layouts?: UserLayouts;
    zoomLevel?: number;
    selectedNodes?: string[];
    selectedEdges?: string[];
    selectedPaths?: string[];
    configs?: UserConfigs;
    layers?: Layers;
    eventHandlers?: EventHandlers;
}
/**
 * Zoom in
 */
declare function zoomIn(): void;
/**
 * Zoom out
 */
declare function zoomOut(): void;
/**
 * Pan to a rendered position
 * @return {Point} point to pan
 */
declare function panTo(point: Point): void;
/**
 * Relatively pan the graph by a specified rendered position vector
 * @return {Point} relative point to pan
 */
declare function panBy(point: Point): void;
/**
 * Get pan vector
 * @return {Point} pan vector
 */
declare function getPan(): Point;
/**
 * Get all calculate svg dimensions
 */
declare function getSizes(): Sizes;
/**
 * Translate from DOM to SVG coordinates
 * @return {Point} coordinates in the SVG
 */
declare function translateFromDomToSvgCoordinates(coordinates: Point): Point;
/**
 * Translate from SVG to DOM coordinates
 * @return {Point} coordinates in the DOM
 */
declare function translateFromSvgToDomCoordinates(coordinates: Point): Point;
/**
 * Get graph as SVG text.
 * @return {string} SVG text
 * @deprecated
 */
declare function getAsSvg(): string;
/**
 * Export graph as SVG text.
 * @return {string} SVG text
 */
declare function exportAsSvgText(options?: Partial<ExportOptions>): Promise<string>;
/**
 * Export graph as SVG element.
 * @return {SVGElement} SVG element
 */
declare function exportAsSvgElement(options?: Partial<ExportOptions>): Promise<SVGElement>;
declare function __VLS_template(): {
    attrs: Partial<{}>;
    slots: Readonly<{
        default: (props: LayerSlotProps) => any;
        "override-node": (props: NodeSlotProps) => any;
        "override-node-label": (props: NodeLabelSlotProps) => any;
        "edge-overlay": (props: EdgeOverlaySlotProps) => any;
        "edge-label": (props: EdgeLabelSlotProps) => any;
        "edges-label": (props: EdgeLabelsSlotProps) => any;
    } & {
        [key: string]: (props: LayerSlotProps) => any;
    }> & {
        default: (props: LayerSlotProps) => any;
        "override-node": (props: NodeSlotProps) => any;
        "override-node-label": (props: NodeLabelSlotProps) => any;
        "edge-overlay": (props: EdgeOverlaySlotProps) => any;
        "edge-label": (props: EdgeLabelSlotProps) => any;
        "edges-label": (props: EdgeLabelsSlotProps) => any;
    } & {
        [key: string]: (props: LayerSlotProps) => any;
    };
    refs: {
        container: HTMLDivElement;
        svg: SVGSVGElement;
        viewport: SVGGElement;
    };
    rootEl: HTMLDivElement;
};
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
declare const __VLS_component: DefineComponent<Props, {
    fitToContents: (options?: {
        margin?: FitContentMargin;
    }) => Promise<void>;
    panToCenter: () => Promise<void>;
    getViewBox: () => Box;
    setViewBox: (box: Box) => void | undefined;
    transitionWhile: (func: () => void | Promise<void>, duration?: number, timingFunction?: string) => void;
    startBoxSelection: (options?: Partial< BoxSelectionOption>) => void;
    stopBoxSelection: () => void;
    zoomIn: typeof zoomIn;
    zoomOut: typeof zoomOut;
    panTo: typeof panTo;
    panBy: typeof panBy;
    getPan: typeof getPan;
    getSizes: typeof getSizes;
    translateFromDomToSvgCoordinates: typeof translateFromDomToSvgCoordinates;
    translateFromSvgToDomCoordinates: typeof translateFromSvgToDomCoordinates;
    getAsSvg: typeof getAsSvg;
    exportAsSvgText: typeof exportAsSvgText;
    exportAsSvgElement: typeof exportAsSvgElement;
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
    "update:zoomLevel": (v: number) => any;
    "update:selectedNodes": (v: string[]) => any;
    "update:selectedEdges": (v: string[]) => any;
    "update:selectedPaths": (v: string[]) => any;
    "update:layouts": (v: Layouts) => any;
}, string, PublicProps, Readonly<Props> & Readonly<{
    "onUpdate:zoomLevel"?: ((v: number) => any) | undefined;
    "onUpdate:selectedNodes"?: ((v: string[]) => any) | undefined;
    "onUpdate:selectedEdges"?: ((v: string[]) => any) | undefined;
    "onUpdate:selectedPaths"?: ((v: string[]) => any) | undefined;
    "onUpdate:layouts"?: ((v: Layouts) => any) | undefined;
}>, {
    edges: Edges;
    nodes: Nodes;
    paths: InputPaths;
    configs: UserConfigs;
    layouts: UserLayouts;
    zoomLevel: number;
    selectedNodes: string[];
    eventHandlers: EventHandlers;
    selectedEdges: string[];
    selectedPaths: string[];
    layers: Layers;
}, {}, {}, {}, string, ComponentProvideOptions, false, {
    container: HTMLDivElement;
    svg: SVGSVGElement;
    viewport: SVGGElement;
}, HTMLDivElement>;
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
