export const VIEW_ROOT_NAME: "viewRoot";
/**
 * @typedef {object} ViewFactoryOptions
 * @property {boolean} [allowImport] allows imports from urls
 * @property {boolean} [wrapRoot]
 *
 * @typedef {object} CreateViewOptions
 * @property {"own" | "inherit"} [layoutSizeParams]
 */
/**
 *
 */
export class ViewFactory {
    /**
     * @param {ViewFactoryOptions} [options]
     */
    constructor(options?: ViewFactoryOptions);
    /** @type {Required<ViewFactoryOptions>} */
    options: Required<ViewFactoryOptions>;
    /**
     * @param {SpecGuard} specGuard
     * @param {Factory} factory
     */
    addViewType(specGuard: (spec: import("../spec/view.js").ViewSpec) => boolean, factory: (spec: import("../spec/view.js").ViewSpec, context: import("../types/viewContext.js").default, layoutParent?: import("./containerView.js").default, dataParent?: import("./view.js").default, defaultName?: string, options?: CreateViewOptions) => View): void;
    /**
     * @param {ViewSpec} spec
     * @param {ViewContext} context
     * @param {import("./containerView.js").default} [layoutParent]
     * @param {import("./view.js").default} [dataParent]
     * @param {string} [defaultName]
     * @param {CreateViewOptions} [options]
     */
    createView(spec: import("../spec/view.js").ViewSpec, context: import("../types/viewContext.js").default, layoutParent?: import("./containerView.js").default, dataParent?: import("./view.js").default, defaultName?: string, options?: CreateViewOptions): View<import("../spec/view.js").ViewSpec>;
    /**
     *
     * @param {ViewSpec} spec
     * @returns {spec is ViewSpec}
     */
    isViewSpec(spec: import("../spec/view.js").ViewSpec): spec is import("../spec/view.js").ViewSpec;
    /**
     * Creates a view from a spec, or imports it from an external source.
     * Also initializes child views.
     *
     * @param {ViewSpec | import("../spec/view.js").ImportSpec} spec
     * @param {ViewContext} context
     * @param {import("./containerView.js").default} [layoutParent]
     * @param {import("./view.js").default} [dataParent]
     * @param {string} [defaultName]
     * @param {(spec: ViewSpec) => void} [validator]
     * @param {CreateViewOptions} [options]
     */
    createOrImportView(spec: import("../spec/view.js").ViewSpec | import("../spec/view.js").ImportSpec, context: import("../types/viewContext.js").default, layoutParent?: import("./containerView.js").default, dataParent?: import("./view.js").default, defaultName?: string, validator?: (spec: import("../spec/view.js").ViewSpec) => void, options?: CreateViewOptions): Promise<View<import("../spec/view.js").ViewSpec>>;
    #private;
}
export type ViewFactoryOptions = {
    /**
     * allows imports from urls
     */
    allowImport?: boolean;
    wrapRoot?: boolean;
};
export type CreateViewOptions = {
    layoutSizeParams?: "own" | "inherit";
};
import View from "./view.js";
export { isConcatSpec, isFacetSpec, isHConcatSpec, isImportSpec, isLayerSpec, isUnitSpec, isVConcatSpec } from "./viewSpecGuards.js";
//# sourceMappingURL=viewFactory.d.ts.map