import { AViewerPluginSync, ThreeViewer } from '../../viewer';
import { IRenderTarget } from '../../rendering';
import { ValOrArr, ValOrFunc } from 'ts-browser-helpers';
import { ShaderMaterial } from 'three';
import { ITexture } from '../../core';
export interface RenderTargetBlock {
    target: ValOrFunc<IRenderTarget | {
        texture?: ValOrArr<ITexture>;
    } | undefined | null>;
    name: string;
    visible: boolean;
    transparent: boolean;
    originalColorSpace: boolean;
    div: HTMLDivElement;
    material?: ShaderMaterial;
}
export declare class RenderTargetPreviewPlugin<TEvent extends string> extends AViewerPluginSync<TEvent> {
    static readonly PluginType = "RenderTargetPreviewPlugin";
    enabled: boolean;
    toJSON: any;
    mainDiv: HTMLDivElement;
    stylesheet?: HTMLStyleElement;
    constructor(enabled?: boolean);
    targetBlocks: RenderTargetBlock[];
    onAdded(viewer: ThreeViewer): void;
    onRemove(viewer: ThreeViewer): void;
    private _postRender;
    /**
     *
     * @param target - render target or a function that returns a render target
     * @param name - name of the target
     * @param transparent - if true, the target will be rendered with transparency
     * @param originalColorSpace - if true, the target will be rendered in its original color space
     * @param visible - initial visibility
     * @param material - snippet for {@link ExtendedCopyPass} or a custom {@link ExtendedShaderMaterial} or three.js ShaderMaterial. Example to read just the red channel `(s)=>s + ' = vec4(' + s + '.r);'`
     */
    addTarget(target: RenderTargetBlock['target'], name: string, transparent?: boolean, originalColorSpace?: boolean, visible?: boolean, material?: ValOrFunc<string, [string]> | ShaderMaterial): this;
    removeTarget(target: RenderTargetBlock['target']): this;
    downloadTarget(target1: RenderTargetBlock['target']): this;
    refreshUi(): void;
    setDirty(): void;
    dispose(): void;
}
//# sourceMappingURL=RenderTargetPreviewPlugin.d.ts.map