import type { LatticeParams, Pbc } from './structure/index'; export type Vec2 = [number, number]; export type Vec3 = [number, number, number]; export type Vec4 = [number, number, number, number]; export type Vec5 = [number, number, number, number, number]; export type Vec9 = [number, number, number, number, number, number, number, number, number]; export type Point2D = { x: number; y: number; }; export type Point3D = Point2D & { z: number; }; export type Matrix3x3 = [Vec3, Vec3, Vec3]; export type Matrix4x4 = [Vec4, Vec4, Vec4, Vec4]; export type NdVector = number[]; export declare const is_finite_vec3_like: (values: ArrayLike | undefined) => values is ArrayLike; export declare const finite_vec3_from_values: (values: ArrayLike | undefined) => Vec3 | undefined; export type Matrix4Tuple = [ number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number ]; export declare function combinations(arr: T[], k: number): T[][]; export declare const LOG_EPS = 1e-9; export declare const EPS = 1e-10; export declare const RAD_TO_DEG: number; export declare const DEG_TO_RAD: number; export declare const to_degrees: (radians: number) => number; export declare const to_radians: (degrees: number) => number; export declare function calc_lattice_params(matrix: Matrix3x3): LatticeParams & { volume: number; }; export declare const scale: (vec: T, factor: number) => T; export declare const euclidean_dist: (vec1: NdVector, vec2: NdVector) => number; export declare function min_image_displacement(from: Vec3, to: Vec3, lattice_matrix: Matrix3x3, converters?: LatticeConverters, pbc?: Pbc): Vec3; export declare const pbc_dist: (pos1: Vec3, pos2: Vec3, lattice_matrix: Matrix3x3, converters?: LatticeConverters, pbc?: Pbc) => number; export declare function matrix_inverse_3x3(matrix: Matrix3x3): Matrix3x3; export declare function mat3x3_vec3_multiply(matrix: Matrix3x3, vector: Vec3): Vec3; export declare function add(...vecs: T[]): T; export declare function subtract(vec1: T, vec2: T): T; export declare function dot(vec1: Matrix3x3, vec2: Matrix3x3): Matrix3x3; export declare function dot(vec1: Matrix3x3, vec2: Vec3): Vec3; export declare function dot(vec1: NdVector, vec2: NdVector): number; export declare function dot(vec1: NdVector[], vec2: NdVector): number[]; export declare function dot(vec1: NdVector[], vec2: NdVector[]): number[][]; export declare function to_voigt(tensor: number[][]): number[]; export declare function from_voigt(voigt: number[]): Matrix3x3; export declare function vec9_to_mat3x3(flat_array: number[]): Matrix3x3; export declare function tensor_to_flat_array(tensor: number[][]): number[]; export declare const transpose_3x3_matrix: (matrix: Matrix3x3) => Matrix3x3; export declare function scale_lattice_matrix(orig_matrix: Matrix3x3, scaling_factors: Vec3): Matrix3x3; export declare const create_frac_to_cart: (lattice: Matrix3x3) => (frac: Vec3) => Vec3; export declare const create_cart_to_frac: (lattice: Matrix3x3) => (cart: Vec3) => Vec3; export type LatticeConverters = { cart_to_frac: (v: Vec3) => Vec3; frac_to_cart: (v: Vec3) => Vec3; reciprocal_axis_norms: Vec3; }; export declare const create_lattice_converters: (lattice: Matrix3x3) => LatticeConverters; export declare function cell_to_lattice_matrix(a: number, b: number, c: number, alpha: number, beta: number, gamma: number): Matrix3x3; export declare function det_3x3(matrix: Matrix3x3): number; export declare function get_coefficient_of_variation(values: number[]): number; export declare function det_4x4(matrix: Matrix4x4): number; export declare function det_nxn(matrix: number[][]): number; export declare const cross_3d: (vec1: Vec3, vec2: Vec3) => Vec3; export declare const lerp: (start: number, end: number, t: number) => number; export declare const lerp_vec3: (start: Vec3, end: Vec3, t: number) => Vec3; export declare const centered_frac: (val: number) => number; export declare const vecs_equal: (vec_a?: Vec3, vec_b?: Vec3) => boolean; type Normalized = { -readonly [K in keyof T]: number; }; export declare function normalize_vec(vec: T, fallback?: NoInfer): Normalized; export declare function compute_in_plane_basis(normal: Vec3): [Vec3, Vec3]; export declare function are_coplanar(points: number[][], tolerance?: number): boolean; export declare function merge_coplanar_triangles(positions: Float32Array, tolerance?: number): Float32Array; export declare function compute_bounding_box(vertices: Vec3[]): { min: Vec3; max: Vec3; }; export declare function is_square_matrix(matrix: unknown, dim: number): matrix is number[][]; export declare function point_in_polygon(point_x: number, point_y: number, vertices: Vec2[]): boolean; export declare function compute_bounding_box_2d(vertices: Vec2[]): { min: Vec2; max: Vec2; width: number; height: number; }; export declare function polygon_centroid(vertices: Vec2[]): Vec2; export declare function solve_linear_system(A: number[][], // NxN coefficient matrix b: number[]): number[] | null; export declare const cross_2d: (origin: Vec2, point_a: Vec2, point_b: Vec2) => number; export declare const monotone_chain: (sorted: Vec2[]) => Vec2[]; export declare function convex_hull_2d(points: Vec2[]): Vec2[]; export {};