/** @packageDocumentation
 * @module WebGL
 */
import { ScreenSpaceEffectBuilder, ScreenSpaceEffectBuilderParams, ScreenSpaceEffectContext } from "../../../render/ScreenSpaceEffectBuilder";
import { TechniqueId } from "./TechniqueId";
import { Target } from "./Target";
type ShouldApply = (context: ScreenSpaceEffectContext) => boolean;
declare class ScreenSpaceEffect {
    readonly techniqueId: TechniqueId;
    readonly name: string;
    private readonly _shouldApply?;
    private readonly _shiftsPixels;
    constructor(techniqueId: TechniqueId, name: string, shiftsPixels: boolean, shouldApply?: ShouldApply);
    shouldApply(target: Target): boolean;
}
/** @internal */
export declare class ScreenSpaceEffects {
    private readonly _effects;
    private readonly _effectGeometry;
    private readonly _copyGeometry;
    private readonly _workingArray;
    constructor();
    [Symbol.dispose](): void;
    add(effect: ScreenSpaceEffect): void;
    /** Return true if any effects should be applied to this Target. */
    shouldApply(target: Target): boolean;
    private getApplicableEffects;
    /** Apply screen-space effects to the Target's rendered image. */
    apply(target: Target): void;
    private applyForReadPixels;
}
export declare function createScreenSpaceEffectBuilder(params: ScreenSpaceEffectBuilderParams): ScreenSpaceEffectBuilder;
export {};
//# sourceMappingURL=ScreenSpaceEffect.d.ts.map