import { TwinfinityCameraBehavior } from '../camera/TwinfinityCameraBehavior';
import { Camera, PostProcess } from '../loader/babylonjs-import';
/**
 * TwinfinityPostProcess is the base class that can be used to extend classes for post-process effects.
 */
export declare abstract class TwinfinityPostProcess implements TwinfinityCameraBehavior {
    protected _postProcess: PostProcess | undefined;
    private _affectedCameras;
    /**
     * Returns a set of all the cameras this post-process effect is attached to.
     */
    get affectedCameras(): Set<Camera>;
    /**
     * Method for initializing this post-process effect before it gets attached to a camera.
     * This gets called automatically from attach.
     * @param camera BabylonJS camera variable.
     */
    protected abstract initialize(camera: Camera): PostProcess;
    /**
     * Runs the initialize method if the post-process has not yet been initialized.
     * Then attaches the post-process effect to the specified camera.
     * @param camera The camera to attach the post-process effect to.
     * @returns true if the post-process effect was successfully attached to the camera, otherwise false.
     */
    attach(camera: Camera): boolean;
    /**
     * Disables the post-process effect for the specified camera.
     * @param camera The camera to detach the post-process effect from.
     * @returns true if the post-process effect was successfully detached from the camera, otherwise false.
     */
    detach(camera: Camera): boolean;
}
//# sourceMappingURL=TwinfinityPostProcess.d.ts.map