/**
 * Copyright (c) 2024-2025 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { Texture } from '../../mol-gl/webgl/texture.js';
import { WebGLContext } from '../../mol-gl/webgl/context.js';
import { Renderer } 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 { Helper } from '../helper/helper.js';
import { DrawPass } from './draw.js';
type RenderContext = {
    renderer: Renderer;
    camera: Camera;
    scene: Scene;
    helper: Helper;
};
export declare const TracingParams: {
    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;
};
export type TracingProps = PD.Values<typeof TracingParams>;
export declare class TracingPass {
    private readonly webgl;
    private readonly drawPass;
    private readonly framebuffer;
    readonly colorTextureOpaque: Texture;
    readonly normalTextureOpaque: Texture;
    readonly shadedTextureOpaque: Texture;
    private readonly thicknessTarget;
    private readonly holdTarget;
    readonly accumulateTarget: RenderTarget;
    readonly composeTarget: RenderTarget;
    private readonly traceRenderable;
    private readonly accumulateRenderable;
    constructor(webgl: WebGLContext, drawPass: DrawPass);
    getByteCount(): number;
    private renderInput;
    setSize(width: number, height: number): void;
    reset(): void;
    private clearAdjustedProps;
    restart(clearAdjustedProps?: boolean): void;
    private prevTime;
    private currTime;
    private rendersPerFrame;
    private refineSteps;
    private steps;
    private increaseAdjustedProps;
    private decreaseAdjustedProps;
    private getAdjustedProps;
    render(ctx: RenderContext, transparentBackground: boolean, props: TracingProps, iteration: number, forceRenderInput: boolean): void;
}
export {};
