/**
 * Copyright (c) 2018-2025 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { RenderableState } from '../../mol-gl/renderable.js';
import { ValueCell } from '../../mol-util/index.js';
import { BaseValues } from '../../mol-gl/renderable/schema.js';
import { LocationIterator } from '../util/location-iterator.js';
import { ParamDefinition as PD } from '../../mol-util/param-definition.js';
import { TransformData } from './transform-data.js';
import { Theme } from '../../mol-theme/theme.js';
import { Clip } from '../../mol-util/clip.js';
import { Vec4 } from '../../mol-math/linear-algebra/3d/vec4.js';
export declare const VisualQualityInfo: {
    custom: {};
    auto: {};
    highest: {};
    higher: {};
    high: {};
    medium: {};
    low: {};
    lower: {};
    lowest: {};
};
export type VisualQuality = keyof typeof VisualQualityInfo;
export declare const VisualQualityNames: VisualQuality[];
export declare const VisualQualityOptions: ["auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest", string][];
export declare const ColorSmoothingParams: {
    smoothColors: PD.Mapped<PD.NamedParams<PD.Normalize<unknown>, "auto"> | PD.NamedParams<PD.Normalize<unknown>, "off"> | PD.NamedParams<PD.Normalize<{
        resolutionFactor: number;
        sampleStride: number;
    }>, "on">>;
};
export type ColorSmoothingParams = typeof ColorSmoothingParams;
export declare function hasColorSmoothingProp(props: PD.Values<any>): props is PD.Values<ColorSmoothingParams>;
export declare function getColorSmoothingProps(smoothColors: PD.Values<ColorSmoothingParams>['smoothColors'], preferSmoothing?: boolean, resolution?: number): {
    resolution: number;
    stride: number;
} | undefined;
export declare namespace BaseGeometry {
    const MaterialCategory: PD.Info;
    const ShadingCategory: PD.Info;
    const CullingLodCategory: PD.Info;
    const CustomQualityParamInfo: PD.Info;
    const Params: {
        alpha: PD.Numeric;
        quality: PD.Select<"auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest">;
        material: PD.Group<PD.Normalize<{
            metalness: number;
            roughness: number;
            bumpiness: number;
        }>>;
        clip: PD.Group<PD.Normalize<{
            variant: Clip.Variant;
            objects: PD.Normalize<{
                type: /*elided*/ any;
                invert: /*elided*/ any;
                position: /*elided*/ any;
                rotation: /*elided*/ any;
                scale: /*elided*/ any;
                transform: /*elided*/ any;
            }>[];
        }>>;
        emissive: PD.Numeric;
        density: PD.Numeric;
        instanceGranularity: PD.BooleanParam;
        lod: PD.Vec3;
        cellSize: PD.Numeric;
        batchSize: PD.Numeric;
    };
    type Params = typeof Params;
    type Counts = {
        drawCount: number;
        vertexCount: number;
        groupCount: number;
        instanceCount: number;
    };
    function createSimple(colorValue?: import("../../mol-util/color/index.js").Color, sizeValue?: number, transform?: TransformData): {
        transform: TransformData;
        locationIterator: LocationIterator;
        theme: Theme;
    };
    function createValues(props: PD.Values<Params>, counts: Counts): {
        alpha: ValueCell<number, never>;
        uAlpha: ValueCell<number, never>;
        uVertexCount: ValueCell<number, never>;
        uGroupCount: ValueCell<number, never>;
        drawCount: ValueCell<number, never>;
        uMetalness: ValueCell<number, never>;
        uRoughness: ValueCell<number, never>;
        uBumpiness: ValueCell<number, never>;
        uEmissive: ValueCell<number, never>;
        uDensity: ValueCell<number, never>;
        dClipObjectCount: ValueCell<number, never>;
        dClipVariant: ValueCell<Clip.Variant, never>;
        uClipObjectType: ValueCell<number[], never>;
        uClipObjectInvert: ValueCell<boolean[], never>;
        uClipObjectPosition: ValueCell<number[], never>;
        uClipObjectRotation: ValueCell<number[], never>;
        uClipObjectScale: ValueCell<number[], never>;
        uClipObjectTransform: ValueCell<number[], never>;
        instanceGranularity: ValueCell<boolean, never>;
        uLod: ValueCell<Vec4, never>;
    };
    function updateValues(values: BaseValues, props: PD.Values<Params>): void;
    function createRenderableState(props?: Partial<PD.Values<Params>>): RenderableState;
    function updateRenderableState(state: RenderableState, props: PD.Values<Params>): void;
}
