import { DepthPackingStrategies, MeshDepthMaterial, Texture, TextureDataType, WebGLRenderTarget } from 'three';
import { GBufferRenderPass } from '../../postprocessing';
import { ThreeViewer } from '../../viewer';
import { MaterialExtension } from '../../materials';
import { PipelinePassPlugin } from '../base/PipelinePassPlugin';
export type DepthBufferPluginEventTypes = '';
export type DepthBufferPluginTarget = WebGLRenderTarget;
export type DepthBufferPluginPass = GBufferRenderPass<'depth', DepthBufferPluginTarget | undefined>;
/**
 * Depth Buffer Plugin
 *
 * Adds a pre-render pass to render the depth buffer to a render target that can be used as gbuffer or for postprocessing.
 * @category Plugins
 */
export declare class DepthBufferPlugin extends PipelinePassPlugin<DepthBufferPluginPass, 'depth', DepthBufferPluginEventTypes> {
    readonly passId = "depth";
    static readonly PluginType = "DepthBufferPlugin";
    target?: DepthBufferPluginTarget;
    texture?: Texture;
    readonly material: MeshDepthMaterial;
    depthPacking: DepthPackingStrategies;
    readonly bufferType: TextureDataType;
    readonly isPrimaryGBuffer: boolean;
    protected _depthPackingChanged(): void;
    unpackExtension: MaterialExtension;
    private _isPrimaryGBufferSet;
    protected _createTarget(recreate?: boolean): void;
    protected _disposeTarget(): void;
    protected _createPass(): GBufferRenderPass<"depth", WebGLRenderTarget | undefined>;
    constructor(bufferType?: TextureDataType, isPrimaryGBuffer?: boolean, enabled?: boolean, depthPacking?: DepthPackingStrategies);
    onRemove(viewer: ThreeViewer): void;
}
//# sourceMappingURL=DepthBufferPlugin.d.ts.map