import { SpacegroupCell } from '../../../../mol-math/geometry.js'; /** Information about a region sampled in fractional coordinates */ export interface GridInfo { /** Origin in fractional coords. */ origin: Fractional; /** Box dimensions in fractional coords. */ dimensions: Fractional; /** Grid delta in fractional coordinates along each axis (in axis order) */ delta: Fractional; /** Sample count of the grid box */ sampleCount: number[]; } /** * Grid domain with the supplied info and "kind". * The "kind" is used so that the TypeScript compiler * can distinguish between different types of grids, * e.g. GridDomain<'Data'>, GridDomain<'Query'>, GridDomain<'Block'>, etc. */ export interface GridDomain extends GridInfo { kind: K; sampleVolume: number; } export declare const enum Space { Cartesian = 0, Fractional = 1, Grid = 2 } export interface Coord { kind: S; '0': number; '1': number; '2': number; [index: number]: number; } export interface Cartesian extends Coord { } export interface Fractional extends Coord { } export interface Grid extends Coord { domain: GridDomain; } export declare function domain(kind: K, info: GridInfo): GridDomain; export declare function cartesian(x: number, y: number, z: number): Cartesian; export declare function fractional(x: number, y: number, z: number): Fractional; export declare function grid(domain: GridDomain, x: number, y: number, z: number): Grid; export declare function withCoord | Grid)>(a: C, x: number, y: number, z: number): C; export declare function clone | Grid)>(a: C): C; export declare function cartesianToFractional(a: Cartesian, spacegroup: SpacegroupCell): Fractional; export declare function fractionalToGrid(a: Fractional, domain: GridDomain, snap: 'bottom' | 'top'): Grid; export declare function gridToFractional(a: Grid): Fractional; export declare function clampGridToSamples(a: Grid): Grid; export declare function add(a: Coord, b: Coord): Coord; export declare function sub(a: Coord, b: Coord): Coord; export declare function invert(a: Coord): Coord; /** Maps each grid point to a unique integer */ export declare function linearGridIndex(a: Grid): number; export declare function gridMetrics(dimensions: { [i: number]: number; }): { sizeX: number; sizeXY: number; sizeXYZ: number; }; export declare function sampleCounts(dimensions: Fractional, delta: Fractional): number[]; export declare function round(v: number): number;