/**
 * Copyright (c) 2019-2025 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 * @author Gianluca Tomasello <giagitom@gmail.com>
 */
import { WebGLContext } from '../../mol-gl/webgl/context.js';
import { RenderTarget } from '../../mol-gl/webgl/render-target.js';
import { Renderer } from '../../mol-gl/renderer.js';
import { Scene } from '../../mol-gl/scene.js';
import { ParamDefinition as PD } from '../../mol-util/param-definition.js';
import { Camera } from '../camera.js';
import { Viewport } from '../camera/util.js';
import { Helper } from '../helper/helper.js';
import { AssetManager } from '../../mol-util/assets.js';
import { RuntimeContext } from '../../mol-task/index.js';
export declare const ImageParams: {
    transparentBackground: PD.BooleanParam;
    dpoitIterations: PD.Numeric;
    multiSample: PD.Group<PD.Normalize<{
        mode: string;
        sampleLevel: number;
        reduceFlicker: boolean;
        reuseOcclusion: boolean;
    }>>;
    postprocessing: PD.Group<PD.Normalize<{
        enabled: boolean;
        occlusion: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
            samples: /*elided*/ any;
            multiScale: /*elided*/ any;
            radius: /*elided*/ any;
            bias: /*elided*/ any;
            blurKernelSize: /*elided*/ any;
            blurDepthBias: /*elided*/ any;
            resolutionScale: /*elided*/ any;
            color: /*elided*/ any;
            transparentThreshold: /*elided*/ any;
        }>, "on">;
        shadow: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
            steps: /*elided*/ any;
            maxDistance: /*elided*/ any;
            tolerance: /*elided*/ any;
        }>, "on">;
        outline: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
            scale: /*elided*/ any;
            threshold: /*elided*/ any;
            color: /*elided*/ any;
            includeTransparent: /*elided*/ any;
        }>, "on">;
        dof: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
            blurSize: /*elided*/ any;
            blurSpread: /*elided*/ any;
            inFocus: /*elided*/ any;
            PPM: /*elided*/ any;
            center: /*elided*/ any;
            mode: /*elided*/ any;
        }>, "on">;
        antialiasing: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
            edgeThreshold: /*elided*/ any;
            maxSearchSteps: /*elided*/ any;
        }>, "smaa"> | PD.NamedParams<PD.Normalize<{
            edgeThresholdMin: /*elided*/ any;
            edgeThresholdMax: /*elided*/ any;
            iterations: /*elided*/ any;
            subpixelQuality: /*elided*/ any;
        }>, "fxaa">;
        sharpening: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
            sharpness: /*elided*/ any;
            denoise: /*elided*/ any;
        }>, "on">;
        background: PD.Normalize<{
            variant: /*elided*/ any;
        }>;
        bloom: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
            strength: /*elided*/ any;
            radius: /*elided*/ any;
            threshold: /*elided*/ any;
            mode: /*elided*/ any;
        }>, "on">;
    }>>;
    marking: PD.Group<PD.Normalize<{
        enabled: boolean;
        highlightEdgeColor: import("../../mol-util/color/index.js").Color;
        selectEdgeColor: import("../../mol-util/color/index.js").Color;
        edgeScale: number;
        highlightEdgeStrength: number;
        selectEdgeStrength: number;
        ghostEdgeStrength: number;
        innerEdgeFactor: number;
    }>>;
    illumination: PD.Group<PD.Normalize<{
        rendersPerFrame: [number, number];
        targetFps: number;
        steps: number;
        firstStepSize: number;
        refineSteps: number;
        rayDistance: number;
        thicknessMode: "auto" | "fixed";
        minThickness: number;
        thicknessFactor: number;
        thickness: number;
        bounces: number;
        glow: boolean;
        shadowEnable: boolean;
        shadowSoftness: number;
        shadowThickness: number;
        enabled: boolean;
        maxIterations: number;
        denoise: boolean;
        denoiseThreshold: [number, number];
        ignoreOutline: boolean;
    }>>;
    cameraHelper: PD.Group<PD.Normalize<{
        axes: PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
            alpha: /*elided*/ any;
            colorX: /*elided*/ any;
            colorY: /*elided*/ any;
            colorZ: /*elided*/ any;
            scale: /*elided*/ any;
            location: /*elided*/ any;
            locationOffsetX: /*elided*/ any;
            locationOffsetY: /*elided*/ any;
            originColor: /*elided*/ any;
            radiusScale: /*elided*/ any;
            showPlanes: /*elided*/ any;
            planeColorXY: /*elided*/ any;
            planeColorXZ: /*elided*/ any;
            planeColorYZ: /*elided*/ any;
            showLabels: /*elided*/ any;
            labelX: /*elided*/ any;
            labelY: /*elided*/ any;
            labelZ: /*elided*/ any;
            labelColorX: /*elided*/ any;
            labelColorY: /*elided*/ any;
            labelColorZ: /*elided*/ any;
            labelOpacity: /*elided*/ any;
            labelScale: /*elided*/ any;
        }>, "on">;
    }>>;
    renderer: PD.Group<PD.Normalize<{
        backgroundColor: import("../../mol-util/color/index.js").Color;
        pickingAlphaThreshold: number;
        colorMarker: boolean;
        highlightColor: import("../../mol-util/color/index.js").Color;
        selectColor: import("../../mol-util/color/index.js").Color;
        dimColor: import("../../mol-util/color/index.js").Color;
        highlightStrength: number;
        selectStrength: number;
        dimStrength: number;
        markerPriority: number;
        xrayEdgeFalloff: number;
        celSteps: number;
        exposure: number;
        light: PD.Normalize<{
            inclination: number;
            azimuth: number;
            color: import("../../mol-util/color/index.js").Color;
            intensity: number;
        }>[];
        ambientColor: import("../../mol-util/color/index.js").Color;
        ambientIntensity: number;
    }>>;
};
export type ImageProps = PD.Values<typeof ImageParams>;
export declare class ImagePass {
    private webgl;
    private renderer;
    private scene;
    private camera;
    private _width;
    private _height;
    private _camera;
    readonly props: ImageProps;
    private _colorTarget;
    get colorTarget(): RenderTarget;
    private readonly drawPass;
    private readonly illuminationPass;
    private readonly multiSamplePass;
    private readonly multiSampleHelper;
    private readonly helper;
    get width(): number;
    get height(): number;
    constructor(webgl: WebGLContext, assetManager: AssetManager, renderer: Renderer, scene: Scene, camera: Camera, helper: Helper, props: Partial<ImageProps>);
    getByteCount(): number;
    updateBackground(): Promise<void>;
    setSize(width: number, height: number): void;
    setProps(props?: Partial<ImageProps>): void;
    render(runtime: RuntimeContext): Promise<void>;
    getImageData(runtime: RuntimeContext, width: number, height: number, viewport?: Viewport): Promise<ImageData>;
}
