import { AViewerPluginSync, IObject3D, IViewerEvent, ThreeViewer, Vector2 } from 'threepipe';
import { FillPass, SVGMesh, SVGRenderer } from './three-svg-renderer';
/**
* SVG Rendering from 3d scenes helper plugin using [three-svg-renderer](https://www.npmjs.com/package/three-svg-renderer) (GPLV3 Licenced)
*/
export declare class ThreeSVGRendererPlugin extends AViewerPluginSync {
    readonly autoAddToContainer: boolean;
    static readonly PluginType = "ThreeSVGRendererPlugin";
    enabled: boolean;
    /**
     * Automatically render when camera or any object changes.
     */
    autoRender: boolean;
    /**
     * Use the fill pass to draw polygons.(both fills and strokes)
     */
    drawPolygons: boolean;
    /**
     * Draw polygon fills. (fill color from material.color)
     */
    drawPolygonFills: boolean;
    /**
     * Draw polygon strokes. (stroke color from material.color)
     */
    drawPolygonStrokes: boolean;
    /**
     * Draw image fills. (fill image from rendered canvas image).
     * Make sure canvas is rendered(and render pipeline has a render pass) before calling this.
     */
    drawImageFills: boolean;
    /**
     * Draw visible contours of meshes.
     */
    drawVisibleContours: boolean;
    /**
     * Draw hidden contours of meshes.
     */
    drawHiddenContours: boolean;
    /**
     * Update meshes on every render. If this is false, meshes will only be updated when they change. (tracked using objectUpdate event)
     */
    alwaysUpdateMeshes: boolean;
    /**
     * Min and Max Crease angle for mesh edges.
     */
    creaseAngle: Vector2;
    /**
     * Automatically create SVG objects for all meshes in the scene.
     * If this is false, you will have to manually create SVG objects for meshes using `makeSVGObject` method.
     */
    autoMakeSvgObjects: boolean;
    readonly renderer: SVGRenderer;
    readonly svgNodeContainer: HTMLDivElement;
    protected readonly _fillPass: FillPass;
    setDirty(...args: any[]): any;
    /**
     * @param enabled
     * @param autoAddToContainer - automatically add the svg to the viewer container and style it same as the viewer is position is absolute
     */
    constructor(enabled?: boolean, autoAddToContainer?: boolean);
    protected _lastStyles?: string;
    onAdded(viewer: ThreeViewer): void;
    private _meshesNeedsUpdate;
    updateMeshes(): void;
    onRemove(viewer: ThreeViewer): void;
    protected _onMeshDispose(ev: any): void;
    protected _onMeshUpdate(ev: any): void;
    protected _meshes: Map<string, SVGMesh>;
    protected _refreshMeshes(root?: IObject3D): never[] | undefined;
    makeSVGObject(o: IObject3D): void;
    private _rendering;
    static SVG_RENDER_TIMEOUT: number;
    protected _toggleMaterialRendering(meshes: SVGMesh[], enable: boolean): void;
    render(): Promise<string | undefined>;
    download(): void;
    protected _viewerListeners: {
        postRender: (_: IViewerEvent) => void;
    };
    get svgNode(): Element | undefined;
    protected _refreshParams(): void;
    protected _onResize(): void;
}
/**
 * @license
 * three-svg-renderer
 *
 * GNU GENERAL PUBLIC LICENSE
 * Version 3, 29 June 2007
 *
 * Copyright (c) 2022 Axel Antoine
 */
/**
 * @license
 * three-mesh-halfedge
 *
 * MIT License
 *
 * Copyright (c) 2022 Axel Antoine
 */
//# sourceMappingURL=ThreeSVGRendererPlugin.d.ts.map