import { AViewerPlugin, AViewerPluginEventMap, AViewerPluginSync } from '../../viewer/AViewerPlugin';
import { ThreeViewer } from '../../viewer';
import { MaterialExtension, MaterialExtensionShader } from '../../materials';
import { Vector4, WebGLRenderer } from 'three';
import { IMaterial } from '../../core';
import { GBufferUpdater, GBufferUpdaterContext } from '../pipeline/GBufferMaterial';
/**
 * Base Screen Pass Extension Plugin
 *
 * Extend the class to add an extension to {@link ScreenPass} material.
 * See {@link TonemapPlugin} and {@link VignettePlugin} for examples.
 *
 *
 * @category Plugins
 */
export declare abstract class AScreenPassExtensionPlugin<TE extends AViewerPluginEventMap = AViewerPluginEventMap> extends AViewerPluginSync<TE> implements MaterialExtension, GBufferUpdater {
    ['constructor']: (typeof AScreenPassExtensionPlugin) & (typeof AViewerPluginSync) & (typeof AViewerPlugin);
    abstract enabled: boolean;
    set uniformsNeedUpdate(v: boolean);
    constructor(shaderPatch?: string);
    /**
     * The priority of the material extension when applied to the material in ScreenPass
     * set to very low priority, so applied at the end
     */
    priority: number;
    protected _shaderPatch: string;
    shaderExtender(shader: MaterialExtensionShader, _: IMaterial, _1: WebGLRenderer): void;
    getUiConfig(): any;
    computeCacheKey: (_: IMaterial) => "1" | "0";
    isCompatible(_: IMaterial): boolean;
    setDirty(): void;
    fromJSON(data: any, meta?: any): this | null | Promise<this | null>;
    onAdded(viewer: ThreeViewer): void;
    onRemove(viewer: ThreeViewer): void;
    __setDirty?: () => void;
    updateGBufferFlags(_: Vector4, _1: GBufferUpdaterContext): void;
}
//# sourceMappingURL=../../src/plugins/postprocessing/AScreenPassExtensionPlugin.d.ts.map