/**
 * Copyright (c) 2024-2025 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author David Sehnal <david.sehnal@gmail.com>
 * @author Adam Midlik <midlik@gmail.com>
 */
import { Mesh } from '../../../mol-geo/geometry/mesh/mesh';
import { Text } from '../../../mol-geo/geometry/text/text';
import { Box3D, Sphere3D } from '../../../mol-math/geometry';
import { Mat4 } from '../../../mol-math/linear-algebra';
import { Shape } from '../../../mol-model/shape';
import { Structure } from '../../../mol-model/structure';
import { PluginStateObject as SO } from '../../../mol-plugin-state/objects';
import { StateObject } from '../../../mol-state';
import { Asset } from '../../../mol-util/assets';
import { ParamDefinition as PD } from '../../../mol-util/param-definition';
import { MolstarNode, MolstarSubtree } from '../tree/molstar/molstar-tree';
type PrimitivesParams = MolstarNode<'primitives'>['params'];
export declare function getPrimitiveStructureRefs(primitives: MolstarSubtree<'primitives'>): Set<string>;
declare const MVSPrimitivesData_base: {
    new (data: PrimitiveBuilderContext, props?: {
        label: string;
        description?: string;
    } | undefined): {
        id: import("../../../mol-util").UUID;
        type: SO.TypeInfo;
        label: string;
        description?: string;
        data: PrimitiveBuilderContext;
    };
    type: SO.TypeInfo;
    is(obj?: StateObject): obj is StateObject<PrimitiveBuilderContext, SO.TypeInfo>;
};
export declare class MVSPrimitivesData extends MVSPrimitivesData_base {
}
declare const MVSPrimitiveShapes_base: {
    new (data: {
        mesh?: Shape<Mesh>;
        labels?: Shape<Text>;
    }, props?: {
        label: string;
        description?: string;
    } | undefined): {
        id: import("../../../mol-util").UUID;
        type: SO.TypeInfo;
        label: string;
        description?: string;
        data: {
            mesh?: Shape<Mesh>;
            labels?: Shape<Text>;
        };
    };
    type: SO.TypeInfo;
    is(obj?: StateObject): obj is StateObject<{
        mesh?: Shape<Mesh>;
        labels?: Shape<Text>;
    }, SO.TypeInfo>;
};
export declare class MVSPrimitiveShapes extends MVSPrimitiveShapes_base {
}
export type MVSDownloadPrimitiveData = typeof MVSDownloadPrimitiveData;
export declare const MVSDownloadPrimitiveData: import("../../../mol-state").StateTransformer<SO.Root, MVSPrimitivesData, PD.Normalize<{
    uri: string | Asset.Url;
    format: "mvs-node-json";
}>>;
export type MVSInlinePrimitiveData = typeof MVSInlinePrimitiveData;
export declare const MVSInlinePrimitiveData: import("../../../mol-state").StateTransformer<SO.Root, MVSPrimitivesData, PD.Normalize<{
    node: {
        kind: "primitives";
        params: {
            color: "aliceblue" | "antiquewhite" | "aqua" | "aquamarine" | "azure" | "beige" | "bisque" | "black" | "blanchedalmond" | "blue" | "blueviolet" | "brown" | "burlywood" | "cadetblue" | "chartreuse" | "chocolate" | "coral" | "cornflowerblue" | "cornsilk" | "crimson" | "cyan" | "darkblue" | "darkcyan" | "darkgoldenrod" | "darkgray" | "darkgreen" | "darkgrey" | "darkkhaki" | "darkmagenta" | "darkolivegreen" | "darkorange" | "darkorchid" | "darkred" | "darksalmon" | "darkseagreen" | "darkslateblue" | "darkslategray" | "darkslategrey" | "darkturquoise" | "darkviolet" | "deeppink" | "deepskyblue" | "dimgray" | "dimgrey" | "dodgerblue" | "firebrick" | "floralwhite" | "forestgreen" | "fuchsia" | "gainsboro" | "ghostwhite" | "gold" | "goldenrod" | "gray" | "green" | "greenyellow" | "grey" | "honeydew" | "hotpink" | "indianred" | "indigo" | "ivory" | "khaki" | "lavender" | "lavenderblush" | "lawngreen" | "lemonchiffon" | "lightblue" | "lightcoral" | "lightcyan" | "lightgoldenrodyellow" | "lightgray" | "lightgreen" | "lightgrey" | "lightpink" | "lightsalmon" | "lightseagreen" | "lightskyblue" | "lightslategray" | "lightslategrey" | "lightsteelblue" | "lightyellow" | "lime" | "limegreen" | "linen" | "magenta" | "maroon" | "mediumaquamarine" | "mediumblue" | "mediumorchid" | "mediumpurple" | "mediumseagreen" | "mediumslateblue" | "mediumspringgreen" | "mediumturquoise" | "mediumvioletred" | "midnightblue" | "mintcream" | "mistyrose" | "moccasin" | "navajowhite" | "navy" | "oldlace" | "olive" | "olivedrab" | "orange" | "orangered" | "orchid" | "palegoldenrod" | "palegreen" | "paleturquoise" | "palevioletred" | "papayawhip" | "peachpuff" | "peru" | "pink" | "plum" | "powderblue" | "purple" | "rebeccapurple" | "red" | "rosybrown" | "royalblue" | "saddlebrown" | "salmon" | "sandybrown" | "seagreen" | "seashell" | "sienna" | "silver" | "skyblue" | "slateblue" | "slategray" | "slategrey" | "snow" | "springgreen" | "steelblue" | "tan" | "teal" | "thistle" | "tomato" | "turquoise" | "violet" | "wheat" | "white" | "whitesmoke" | "yellow" | "yellowgreen" | "cornflower" | "laserlemon" | "lightgoldenrod" | "maroon2" | "maroon3" | "purple2" | "purple3" | `#${string}`;
            label_color: "aliceblue" | "antiquewhite" | "aqua" | "aquamarine" | "azure" | "beige" | "bisque" | "black" | "blanchedalmond" | "blue" | "blueviolet" | "brown" | "burlywood" | "cadetblue" | "chartreuse" | "chocolate" | "coral" | "cornflowerblue" | "cornsilk" | "crimson" | "cyan" | "darkblue" | "darkcyan" | "darkgoldenrod" | "darkgray" | "darkgreen" | "darkgrey" | "darkkhaki" | "darkmagenta" | "darkolivegreen" | "darkorange" | "darkorchid" | "darkred" | "darksalmon" | "darkseagreen" | "darkslateblue" | "darkslategray" | "darkslategrey" | "darkturquoise" | "darkviolet" | "deeppink" | "deepskyblue" | "dimgray" | "dimgrey" | "dodgerblue" | "firebrick" | "floralwhite" | "forestgreen" | "fuchsia" | "gainsboro" | "ghostwhite" | "gold" | "goldenrod" | "gray" | "green" | "greenyellow" | "grey" | "honeydew" | "hotpink" | "indianred" | "indigo" | "ivory" | "khaki" | "lavender" | "lavenderblush" | "lawngreen" | "lemonchiffon" | "lightblue" | "lightcoral" | "lightcyan" | "lightgoldenrodyellow" | "lightgray" | "lightgreen" | "lightgrey" | "lightpink" | "lightsalmon" | "lightseagreen" | "lightskyblue" | "lightslategray" | "lightslategrey" | "lightsteelblue" | "lightyellow" | "lime" | "limegreen" | "linen" | "magenta" | "maroon" | "mediumaquamarine" | "mediumblue" | "mediumorchid" | "mediumpurple" | "mediumseagreen" | "mediumslateblue" | "mediumspringgreen" | "mediumturquoise" | "mediumvioletred" | "midnightblue" | "mintcream" | "mistyrose" | "moccasin" | "navajowhite" | "navy" | "oldlace" | "olive" | "olivedrab" | "orange" | "orangered" | "orchid" | "palegoldenrod" | "palegreen" | "paleturquoise" | "palevioletred" | "papayawhip" | "peachpuff" | "peru" | "pink" | "plum" | "powderblue" | "purple" | "rebeccapurple" | "red" | "rosybrown" | "royalblue" | "saddlebrown" | "salmon" | "sandybrown" | "seagreen" | "seashell" | "sienna" | "silver" | "skyblue" | "slateblue" | "slategray" | "slategrey" | "snow" | "springgreen" | "steelblue" | "tan" | "teal" | "thistle" | "tomato" | "turquoise" | "violet" | "wheat" | "white" | "whitesmoke" | "yellow" | "yellowgreen" | "cornflower" | "laserlemon" | "lightgoldenrod" | "maroon2" | "maroon3" | "purple2" | "purple3" | `#${string}`;
            tooltip: string | null;
            opacity: number;
            label_opacity: number;
            instances: number[][] | null;
        } & {};
        custom?: import("../tree/generic/tree-schema").CustomProps;
        ref?: string;
    } & {
        children?: import("../tree/generic/tree-schema").Tree<import("../tree/generic/tree-schema").NodeFor<import("../tree/generic/tree-schema").TreeSchema<{
            download: /*elided*/ any;
            parse: /*elided*/ any;
            trajectory: /*elided*/ any;
            model: /*elided*/ any;
            structure: /*elided*/ any;
            root: /*elided*/ any;
            transform: /*elided*/ any;
            component: /*elided*/ any;
            component_from_uri: /*elided*/ any;
            component_from_source: /*elided*/ any;
            representation: /*elided*/ any;
            volume: /*elided*/ any;
            volume_representation: /*elided*/ any;
            color: /*elided*/ any;
            color_from_uri: /*elided*/ any;
            color_from_source: /*elided*/ any;
            opacity: /*elided*/ any;
            label: /*elided*/ any;
            label_from_uri: /*elided*/ any;
            label_from_source: /*elided*/ any;
            tooltip: /*elided*/ any;
            tooltip_from_uri: /*elided*/ any;
            tooltip_from_source: /*elided*/ any;
            focus: /*elided*/ any;
            camera: /*elided*/ any;
            canvas: /*elided*/ any;
            primitives: /*elided*/ any;
            primitives_from_uri: /*elided*/ any;
            primitive: /*elided*/ any;
        }, "root">, "color" | "opacity" | "transform" | "tooltip" | "canvas" | "label" | "download" | "focus" | "volume" | "representation" | "model" | "structure" | "root" | "trajectory" | "camera" | "component" | "parse" | "component_from_uri" | "component_from_source" | "volume_representation" | "color_from_uri" | "color_from_source" | "label_from_uri" | "label_from_source" | "tooltip_from_uri" | "tooltip_from_source" | "primitives" | "primitives_from_uri" | "primitive">, import("../tree/generic/tree-schema").NodeFor<import("../tree/generic/tree-schema").TreeSchema<{
            download: /*elided*/ any;
            parse: /*elided*/ any;
            trajectory: /*elided*/ any;
            model: /*elided*/ any;
            structure: /*elided*/ any;
            root: /*elided*/ any;
            transform: /*elided*/ any;
            component: /*elided*/ any;
            component_from_uri: /*elided*/ any;
            component_from_source: /*elided*/ any;
            representation: /*elided*/ any;
            volume: /*elided*/ any;
            volume_representation: /*elided*/ any;
            color: /*elided*/ any;
            color_from_uri: /*elided*/ any;
            color_from_source: /*elided*/ any;
            opacity: /*elided*/ any;
            label: /*elided*/ any;
            label_from_uri: /*elided*/ any;
            label_from_source: /*elided*/ any;
            tooltip: /*elided*/ any;
            tooltip_from_uri: /*elided*/ any;
            tooltip_from_source: /*elided*/ any;
            focus: /*elided*/ any;
            camera: /*elided*/ any;
            canvas: /*elided*/ any;
            primitives: /*elided*/ any;
            primitives_from_uri: /*elided*/ any;
            primitive: /*elided*/ any;
        }, "root">, "color" | "opacity" | "transform" | "tooltip" | "canvas" | "label" | "download" | "focus" | "volume" | "representation" | "model" | "structure" | "root" | "trajectory" | "camera" | "component" | "parse" | "component_from_uri" | "component_from_source" | "volume_representation" | "color_from_uri" | "color_from_source" | "label_from_uri" | "label_from_source" | "tooltip_from_uri" | "tooltip_from_source" | "primitives" | "primitives_from_uri" | "primitive">>[] | undefined;
    };
}>>;
export type MVSBuildPrimitiveShape = typeof MVSBuildPrimitiveShape;
export declare const MVSBuildPrimitiveShape: import("../../../mol-state").StateTransformer<MVSPrimitivesData, SO.Shape.Provider, PD.Normalize<{
    kind: "lines" | "mesh" | "labels";
}>>;
interface PrimitiveBuilderContext {
    node: MolstarNode<'primitives'>;
    defaultStructure?: Structure;
    structureRefs: Record<string, Structure | undefined>;
    primitives: MolstarNode<'primitive'>[];
    options: PrimitivesParams;
    positionCache: Map<string, [Sphere3D, Box3D]>;
    instances: Mat4[] | undefined;
}
export {};
