/**
 * Copyright (c) 2020-2025 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 */
import { TextureImage } from '../../../mol-gl/renderable/util.js';
import { Sphere3D } from '../../../mol-math/geometry.js';
import { Vec2, Vec3, Quat, Mat4 } from '../../../mol-math/linear-algebra.js';
import { ValueCell } from '../../../mol-util/index.js';
import { ParamDefinition as PD } from '../../../mol-util/param-definition.js';
import { GeometryUtils } from '../geometry.js';
export declare const InterpolationTypes: {
    nearest: string;
    catmulrom: string;
    mitchell: string;
    bspline: string;
};
export type InterpolationTypes = keyof typeof InterpolationTypes;
export declare const InterpolationTypeNames: InterpolationTypes[];
export { Image };
interface Image {
    readonly kind: 'image';
    readonly imageTexture: ValueCell<TextureImage<Uint8Array>>;
    readonly imageTextureDim: ValueCell<Vec2>;
    readonly cornerBuffer: ValueCell<Float32Array>;
    readonly groupTexture: ValueCell<TextureImage<Uint8Array>>;
    readonly valueTexture: ValueCell<TextureImage<Float32Array>>;
    readonly trimType: ValueCell<number>;
    readonly trimCenter: ValueCell<Vec3>;
    readonly trimRotation: ValueCell<Quat>;
    readonly trimScale: ValueCell<Vec3>;
    readonly trimTransform: ValueCell<Mat4>;
    readonly isoLevel: ValueCell<number>;
    /** Bounding sphere of the image */
    readonly boundingSphere: Sphere3D;
    setBoundingSphere(boundingSphere: Sphere3D): void;
}
declare namespace Image {
    type Trim = {
        type: 0 | 1 | 2 | 3 | 4 | 5;
        center: Vec3;
        rotation: Quat;
        scale: Vec3;
        transform: Mat4;
    };
    function createEmptyTrim(): Trim;
    function create(imageTexture: TextureImage<Uint8Array>, corners: Float32Array, groupTexture: TextureImage<Uint8Array>, valueTexture: TextureImage<Float32Array>, trim: Trim, isoLevel: number, image?: Image): Image;
    function createEmpty(image?: Image): Image;
    const Params: {
        interpolation: PD.Select<"nearest" | "catmulrom" | "mitchell" | "bspline">;
        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: import("../../../mol-util/clip.js").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;
    const Utils: GeometryUtils<Image, Params>;
}
