import { GraphQLNamedType, GraphQLInputObjectType, GraphQLEnumType, GraphQLScalarType, GraphQLUnionType } from "graphql/type/definition";
import { TypeMap } from "graphql/type/schema";
import { Theme } from "../defaultTheme";
export declare type FilteredGraphqlOutputType = Exclude<GraphQLNamedType, GraphQLInputObjectType | GraphQLEnumType | GraphQLScalarType | GraphQLUnionType>;
export declare type EventType = "loading:start" | "loading:stop";
export default class JointJS {
    /**
     * config
     */
    private theme;
    private activeType;
    private animation;
    private typeMap;
    private maxZoom;
    /**
     * internal
     */
    private eventMap;
    private graph;
    private paper;
    private panZoom;
    private cachedCells;
    private cachedLinks;
    private mounted;
    constructor(opts: {
        theme?: Theme;
    });
    init(el: any, bounds: any, typeMap: TypeMap): Promise<void>;
    destroy(): Promise<void>;
    private bindInteractionEvents;
    get(key: any): any;
    /**
     * Events
     */
    on(key: EventType, callback: () => any): void;
    startLoading(): Promise<any>;
    stopLoading(): Promise<any>;
    enableAnimation(): void;
    disableAnimation(): void;
    setTypeMap(newTypeMap: any): Promise<void>;
    setActiveType(activeType: any): Promise<void>;
    setSize(width: number, height: number): Promise<void>;
    /**
     *
     * Render
     */
    renderElements(opts?: {
        typeMap?: any;
        activeType?: string;
        animate?: boolean;
    }): Promise<void>;
    private getToRenderTypes;
    private removeUnusedElements;
    private addNewElements;
    private layoutGraph;
    /**
     * Helpers
     */
    private createNode;
    private createLink;
    private addTools;
    private getHoveredPort;
    private highlightLinks;
    /**
     * Zoom
     */
    private resizeToFit;
    focusBBox(bBox: any): void;
    animatePanAndZoom(x: any, y: any, zoomEnd: any): void;
}
