/** * Copyright (c) 2018-2025 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose * @author David Sehnal */ import { Unit, Structure, ElementIndex, StructureElement, ResidueIndex } from '../../../../mol-model/structure.js'; import { TransformData } from '../../../../mol-geo/geometry/transform-data.js'; import { OrderedSet, SortedArray } from '../../../../mol-data/int.js'; import { Loci } from '../../../../mol-model/loci.js'; import { ParamDefinition as PD } from '../../../../mol-util/param-definition.js'; import { AssignableArrayLike } from '../../../../mol-util/type-helpers.js'; import { Box3D, Sphere3D } from '../../../../mol-math/geometry.js'; import { SizeTheme } from '../../../../mol-theme/size.js'; import { WebGLContext } from '../../../../mol-gl/webgl/context.js'; export declare function checkSphereImpostorSupport(webgl?: WebGLContext): boolean; export declare function checkCylinderImpostorSupport(webgl?: WebGLContext): boolean; /** Return a Loci for the elements of a whole residue the elementIndex belongs to. */ export declare function getResidueLoci(structure: Structure, unit: Unit.Atomic, elementIndex: ElementIndex): Loci; /** * Return a Loci for the elements of a whole residue the elementIndex belongs to but * restrict to elements that have the same label_alt_id or none */ export declare function getAltResidueLoci(structure: Structure, unit: Unit.Atomic, elementIndex: ElementIndex): StructureElement.Loci; export declare function getAltResidueLociFromId(structure: Structure, unit: Unit.Atomic, residueIndex: ResidueIndex, elementAltId: string): StructureElement.Loci; export type StructureGroup = { structure: Structure; group: Unit.SymmetryGroup; }; export declare function createUnitsTransform(structureGroup: StructureGroup, includeParent: boolean, invariantBoundingSphere: Sphere3D, cellSize: number, batchSize: number, transformData?: TransformData): TransformData; export declare const UnitKindInfo: { atomic: {}; spheres: {}; gaussians: {}; }; export type UnitKind = keyof typeof UnitKindInfo; export declare const UnitKindOptions: ["spheres" | "gaussians" | "atomic", string][]; export declare function includesUnitKind(unitKinds: UnitKind[], unit: Unit): boolean; export declare function getVolumeSliceInfo(box: Box3D, resolution: number, maxCells?: number): { area: number; areaCells: number; maxAreaCells: number; }; /** * Guard against overly high resolution for the given box size. * Internally it uses the largest 2d slice of the box to determine the * maximum resolution to account for the 2d texture layout on the GPU. */ export declare function ensureReasonableResolution(box: Box3D, props: { resolution: number; } & T, maxCells?: number): { resolution: number; } & T & { resolution: number; }; export declare function getConformation(unit: Unit): import("../../../../mol-model/structure/model/properties/atomic.js").AtomicConformation | import("../../../../mol-model/structure/model/properties/coarse.js").CoarseSphereConformation | import("../../../../mol-model/structure/model/properties/coarse.js").CoarseGaussianConformation; export declare const CommonSurfaceParams: { ignoreHydrogens: PD.BooleanParam; ignoreHydrogensVariant: PD.Select<"all" | "non-polar">; traceOnly: PD.BooleanParam; includeParent: PD.BooleanParam; }; export declare const DefaultCommonSurfaceProps: PD.Values<{ ignoreHydrogens: PD.BooleanParam; ignoreHydrogensVariant: PD.Select<"all" | "non-polar">; traceOnly: PD.BooleanParam; includeParent: PD.BooleanParam; }>; export type CommonSurfaceProps = typeof DefaultCommonSurfaceProps; export declare function getUnitConformationAndRadius(structure: Structure, unit: Unit, sizeTheme: SizeTheme, props: CommonSurfaceProps): { position: { indices: SortedArray; x: ArrayLike; y: ArrayLike; z: ArrayLike; id: AssignableArrayLike; }; boundary: import("../../../../mol-math/geometry/boundary.js").Boundary; radius: (index: number) => number; }; export declare function getStructureConformationAndRadius(structure: Structure, sizeTheme: SizeTheme, props: CommonSurfaceProps): { position: { indices: OrderedSet; x: ArrayLike; y: ArrayLike; z: ArrayLike; id: AssignableArrayLike; }; boundary: import("../../../../mol-math/geometry/boundary.js").Boundary; radius: (index: number) => number; }; export declare function isHydrogen(structure: Structure, unit: Unit, element: ElementIndex, variant: 'all' | 'non-polar' | 'polar'): boolean; export declare function isH(atomicNumber: ArrayLike, element: ElementIndex): boolean; export declare function isTrace(unit: Unit, element: ElementIndex): boolean;