import { Object3D } from "three";
import { Behaviour } from "./Component.js";
/**
 * Makes the object fade out when it is obscuring the reference point from the camera. This component can be put on any object in the scene. It will affect all Renderer components on the same object and child objects.
 *
 * Useful for e.g. making walls transparent when the camera is outside or hiding object's that would otherwise block the view.
 *
 * Requires a Renderer component on the same object or a child object.
 *
 * - Example https://see-through-walls-z23hmxbz1kjfjn.needle.run/
 */
export declare class SeeThrough extends Behaviour {
    /**
     * Assign a reference point - if this point will be obscured from the camera by this object then this object will fade out.
     * If no reference point is assigned the scene's root object will be used as reference point.
     */
    referencePoint: Object3D | null;
    /**
     * Fade Duration in seconds
     * @default 0.05
    */
    fadeDuration: number;
    /**
     * Minimum alpha value when fading out (0-1)
     * @default 0
     */
    minAlpha: number;
    /**
     * When useAlphaHash is enabled the object will fade out using alpha hashing, this means the object can stay opaque. If disabled the object will set to be transparent when fading out.
     * @default true
     */
    useAlphaHash: boolean;
    /**
     * Set this to force updating the reference point position and direction
     */
    set needsUpdate(val: boolean);
    get needsUpdate(): boolean;
    /**
     * Override the alpha value, -1 means no override
     * @default -1
     */
    overrideAlpha: number;
    /**
     *
     */
    autoUpdate: boolean;
    private readonly _referencePointVector;
    private readonly _referencePointDir;
    private _distance;
    private _renderer;
    private _needsUpdate;
    private _id;
    /** * @internal */
    onEnable(): void;
    /**  @internal */
    onDisable(): void;
    /**
     * @internal
     */
    update(): void;
    private readonly rendererMaterials;
    private readonly rendererMaterialsOriginal;
    private updateDirection;
    /**
     * Update the alpha of the object's materials towards the target alpha over the given duration.
     * @param targetAlpha Target alpha value (0-1)
     * @param duration Duration in seconds to reach the target alpha. 0 means immediate. Default is the component's fadeDuration.
     */
    updateAlpha(targetAlpha: number, duration?: number): void;
}
