/**
 * Copyright (c) 2024-2025 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { WebGLContext } from '../../mol-gl/webgl/context.js';
import { Renderer, RendererProps } from '../../mol-gl/renderer.js';
import { Camera } from '../camera.js';
import { Scene } from '../../mol-gl/scene.js';
import { RenderTarget } from '../../mol-gl/webgl/render-target.js';
import { ParamDefinition as PD } from '../../mol-util/param-definition.js';
import { PostprocessingProps } from './postprocessing.js';
import { DrawPass } from './draw.js';
import { MarkingProps } from './marking.js';
import { Helper } from '../helper/helper.js';
import { MultiSampleProps } from './multi-sample.js';
type Props = {
    transparentBackground: boolean;
    dpoitIterations: number;
    illumination: IlluminationProps;
    renderer: RendererProps;
    postprocessing: PostprocessingProps;
    marking: MarkingProps;
    multiSample: MultiSampleProps;
};
type RenderContext = {
    renderer: Renderer;
    camera: Camera;
    scene: Scene;
    helper: Helper;
};
export declare const IlluminationParams: {
    rendersPerFrame: PD.Interval;
    targetFps: PD.Numeric;
    steps: PD.Numeric;
    firstStepSize: PD.Numeric;
    refineSteps: PD.Numeric;
    rayDistance: PD.Numeric;
    thicknessMode: PD.Select<"auto" | "fixed">;
    minThickness: PD.Numeric;
    thicknessFactor: PD.Numeric;
    thickness: PD.Numeric;
    bounces: PD.Numeric;
    glow: PD.BooleanParam;
    shadowEnable: PD.BooleanParam;
    shadowSoftness: PD.Numeric;
    shadowThickness: PD.Numeric;
    enabled: PD.BooleanParam;
    maxIterations: PD.Numeric;
    denoise: PD.BooleanParam;
    denoiseThreshold: PD.Interval;
    ignoreOutline: PD.BooleanParam;
};
export type IlluminationProps = PD.Values<typeof IlluminationParams>;
export declare class IlluminationPass {
    private readonly webgl;
    private readonly drawPass;
    private readonly tracing;
    private readonly transparentTarget;
    private readonly outputTarget;
    readonly packedDepth: boolean;
    private readonly copyRenderable;
    private readonly composeRenderable;
    private multiSampleComposeTarget;
    private multiSampleHoldTarget;
    private multiSampleAccumulateTarget;
    private multiSampleCompose;
    private _iteration;
    get iteration(): number;
    private _colorTarget;
    get colorTarget(): RenderTarget;
    private _supported;
    get supported(): boolean;
    getByteCount(): number;
    getMaxIterations(props: IlluminationProps): number;
    static isSupported(webgl: WebGLContext): boolean;
    static isEnabled(webgl: WebGLContext, props: IlluminationProps): boolean;
    constructor(webgl: WebGLContext, drawPass: DrawPass);
    private renderInput;
    shouldRender(props: IlluminationProps): boolean;
    setSize(width: number, height: number): void;
    reset(): void;
    restart(clearAdjustedProps?: boolean): void;
    private renderInternal;
    private prevSampleIndex;
    private renderMultiSample;
    render(ctx: RenderContext, props: Props, toDrawingBuffer: boolean): void;
}
export {};
