/**
 * Events that are broadcasted to all views.
 * @typedef {"dataFlowBuilt" | "layout" | "layoutComputed" | "subtreeDataReady"} BroadcastEventType
 */
export default class GenomeSpy {
    /**
     * @typedef {import("./view/view.js").default} View
     * @typedef {import("./spec/view.js").ViewSpec} ViewSpec
     * @typedef {import("./spec/root.js").RootSpec} RootSpec
     * @typedef {import("./spec/root.js").RootConfig} RootConfig
     */
    /**
     *
     * @param {HTMLElement} container
     * @param {RootSpec} spec
     * @param {import("./types/embedApi.js").EmbedOptions} [options]
     */
    constructor(container: HTMLElement, spec: import("./spec/root.js").RootSpec, options?: import("./types/embedApi.js").EmbedOptions);
    container: HTMLElement;
    options: import("./types/embedApi.js").EmbedOptions;
    /** Root level configuration object */
    spec: import("./spec/root.js").RootSpec;
    viewFactory: ViewFactory;
    /** @type {(function(string):object[])[]} */
    namedDataProviders: ((arg0: string) => object[])[];
    animator: Animator;
    /** @type {GenomeStore} */
    genomeStore: GenomeStore;
    /**
     * View visibility is checked using a predicate that can be overridden
     * for more dynamic visibility management.
     *
     * @type {(view: View) => boolean}
     */
    viewVisibilityPredicate: (view: import("./view/view.js").default<import("./spec/view.js").ViewSpec>) => boolean;
    /** @type {Record<string, import("./tooltip/tooltipHandler.js").TooltipHandler>}> */
    tooltipHandlers: Record<string, import("./tooltip/tooltipHandler.js").TooltipHandler>;
    /** @type {View} */
    viewRoot: import("./view/view.js").default<import("./spec/view.js").ViewSpec>;
    dpr: number;
    /**
     *
     * @param {(name: string) => any[]} provider
     */
    registerNamedDataProvider(provider: (name: string) => any[]): void;
    /**
     * @param {string} name
     */
    getNamedDataFromProvider(name: string): object[];
    /**
     *
     * @param {string} name
     * @param {any[]} data
     */
    updateNamedData(name: string, data: any[]): void;
    /**
     * Returns a handle for a named parameter.
     *
     * @param {string} name
     */
    getParam(name: string): import("./types/embedApi.js").ParamApi<import("./types/embedApi.js").ParamValue>;
    /**
     * @param {string} type
     * @param {(event: any) => void} listener
     */
    addEventListener(type: string, listener: (event: any) => void): void;
    /**
     * @param {string} type
     * @param {(event: any) => void} listener
     */
    removeEventListener(type: string, listener: (event: any) => void): void;
    /**
     * Broadcast a message to all views
     
     * @param {BroadcastEventType} type
     * @param {any} [payload]
     */
    broadcast(type: BroadcastEventType, payload?: any): void;
    tooltip: import("./utils/ui/tooltip.js").default;
    /**
     * Unregisters all listeners, removes all created dom elements, removes all css classes from the container
     */
    destroy(): void;
    /**
     * TODO: Come up with a sensible name. And maybe this should be called at the end of the constructor.
     * @returns {Promise<boolean>} true if the launch was successful
     */
    launch(): Promise<boolean>;
    initializeVisibleViewData(): Promise<void>;
    /**
     * Waits until lazy sources under the root view have loaded data for the
     * current visible positional domain.
     *
     * @param {AbortSignal} [signal]
     */
    awaitVisibleLazyData(signal?: AbortSignal): Promise<void>;
    /**
     * This method should be called in a mouseMove handler. If not called, the
     * tooltip will be hidden.
     *
     * @param {T} datum
     * @param {function(T):Promise<string | HTMLElement | import("lit").TemplateResult>} [converter]
     * @template T
     */
    updateTooltip<T>(datum: T, converter?: (arg0: T) => Promise<string | HTMLElement | import("lit").TemplateResult>): void;
    /**
     * Returns a PNG data URL of the current canvas.
     *
     * @param {number} [logicalWidth] defaults to canvas width
     * @param {number} [logicalHeight] defaults to canvas height
     * @param {number} [devicePixelRatio] defaults to window.devicePixelRatio
     * @param {string} [clearColor] null for transparent
     * @returns A PNG data Url
     */
    exportCanvas(logicalWidth?: number, logicalHeight?: number, devicePixelRatio?: number, clearColor?: string): string;
    getLogicalCanvasSize(): {
        width: number;
        height: number;
    };
    getRenderedBounds(): {
        width: number | undefined;
        height: number | undefined;
    };
    computeLayout(): void;
    renderAll(): void;
    renderPickingFramebuffer(): void;
    getSearchableViews(): UnitView<import("./spec/view.js").UnitSpec>[];
    getNamedScaleResolutions(): Map<string, import("./scales/scaleResolution.js").default>;
    #private;
}
/**
 * Events that are broadcasted to all views.
 */
export type BroadcastEventType = "dataFlowBuilt" | "layout" | "layoutComputed" | "subtreeDataReady";
import { ViewFactory } from "./view/viewFactory.js";
import Animator from "./utils/animator.js";
import GenomeStore from "./genome/genomeStore.js";
import UnitView from "./view/unitView.js";
//# sourceMappingURL=genomeSpyBase.d.ts.map