import { Matrix4, RawShaderMaterial, Uniform, Vector3, BufferGeometry, Camera, Data3DTexture, DataTexture, Group, Object3D, Scene, ShaderMaterialParameters, WebGLProgramParametersWithUniforms, WebGLRenderer } from 'three';
import { Ellipsoid } from '@takram/three-geospatial';
import { AtmosphereParameters } from './AtmosphereParameters';
export interface AtmosphereMaterialProps {
    irradianceTexture?: DataTexture | null;
    scatteringTexture?: Data3DTexture | null;
    transmittanceTexture?: DataTexture | null;
    ellipsoid?: Ellipsoid;
    correctAltitude?: boolean;
    photometric?: boolean;
    sunDirection?: Vector3;
    sunAngularRadius?: number;
    renderTargetCount?: number;
}
export interface AtmosphereMaterialBaseParameters extends Partial<ShaderMaterialParameters>, AtmosphereMaterialProps {
}
export declare const atmosphereMaterialParametersBaseDefaults: {
    ellipsoid: Ellipsoid;
    correctAltitude: true;
    photometric: true;
    renderTargetCount: number;
};
export interface AtmosphereMaterialBaseUniforms {
    [key: string]: Uniform<unknown>;
    cameraPosition: Uniform<Vector3>;
    ellipsoidCenter: Uniform<Vector3>;
    inverseEllipsoidMatrix: Uniform<Matrix4>;
    altitudeCorrection: Uniform<Vector3>;
    sunDirection: Uniform<Vector3>;
    u_solar_irradiance: Uniform<Vector3>;
    u_sun_angular_radius: Uniform<number>;
    u_bottom_radius: Uniform<number>;
    u_top_radius: Uniform<number>;
    u_rayleigh_scattering: Uniform<Vector3>;
    u_mie_scattering: Uniform<Vector3>;
    u_mie_phase_function_g: Uniform<number>;
    u_mu_s_min: Uniform<number>;
    u_irradiance_texture: Uniform<DataTexture | null>;
    u_scattering_texture: Uniform<Data3DTexture | null>;
    u_single_mie_scattering_texture: Uniform<Data3DTexture | null>;
    u_transmittance_texture: Uniform<DataTexture | null>;
}
export declare abstract class AtmosphereMaterialBase extends RawShaderMaterial {
    protected readonly atmosphere: AtmosphereParameters;
    uniforms: AtmosphereMaterialBaseUniforms;
    ellipsoid: Ellipsoid;
    readonly ellipsoidMatrix: Matrix4;
    correctAltitude: boolean;
    private _renderTargetCount;
    constructor(params?: AtmosphereMaterialBaseParameters, atmosphere?: AtmosphereParameters);
    copyCameraSettings(camera: Camera): void;
    onBeforeCompile(parameters: WebGLProgramParametersWithUniforms, renderer: WebGLRenderer): void;
    onBeforeRender(renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry, object: Object3D, group: Group): void;
    get irradianceTexture(): DataTexture | null;
    set irradianceTexture(value: DataTexture | null);
    get scatteringTexture(): Data3DTexture | null;
    set scatteringTexture(value: Data3DTexture | null);
    get transmittanceTexture(): DataTexture | null;
    set transmittanceTexture(value: DataTexture | null);
    get ellipsoidCenter(): Vector3;
    photometric: boolean;
    get sunDirection(): Vector3;
    get sunAngularRadius(): number;
    set sunAngularRadius(value: number);
    /** @package */
    get renderTargetCount(): number;
    /** @package */
    set renderTargetCount(value: number);
}
