import type { ElementSymbol } from '../element'; import type { Vec3 } from '../math'; import type { AnyStructure, BondOrder, BondPair, Site, StructureBond } from './'; export declare const element_lookup: Map<"S" | "K" | "B" | "H" | "He" | "Li" | "Be" | "C" | "N" | "O" | "F" | "Ne" | "Na" | "Mg" | "Al" | "Si" | "P" | "Cl" | "Ar" | "Ca" | "Sc" | "Ti" | "V" | "Cr" | "Mn" | "Fe" | "Co" | "Ni" | "Cu" | "Zn" | "Ga" | "Ge" | "As" | "Se" | "Br" | "Kr" | "Rb" | "Sr" | "Y" | "Zr" | "Nb" | "Mo" | "Tc" | "Ru" | "Rh" | "Pd" | "Ag" | "Cd" | "In" | "Sn" | "Sb" | "Te" | "I" | "Xe" | "Cs" | "Ba" | "La" | "Ce" | "Pr" | "Nd" | "Pm" | "Sm" | "Eu" | "Gd" | "Tb" | "Dy" | "Ho" | "Er" | "Tm" | "Yb" | "Lu" | "Hf" | "Ta" | "W" | "Re" | "Os" | "Ir" | "Pt" | "Au" | "Hg" | "Tl" | "Pb" | "Bi" | "Po" | "At" | "Rn" | "Fr" | "Ra" | "Ac" | "Th" | "Pa" | "U" | "Np" | "Pu" | "Am" | "Cm" | "Bk" | "Cf" | "Es" | "Fm" | "Md" | "No" | "Lr" | "Rf" | "Db" | "Sg" | "Bh" | "Hs" | "Mt" | "Ds" | "Rg" | "Cn" | "Nh" | "Fl" | "Mc" | "Lv" | "Ts" | "Og", import("../element").ChemicalElement>; export declare const get_majority_element: (site: Site | undefined) => ElementSymbol | null; export declare const normalize_structure_bond: (site_idx_1: number, site_idx_2: number, order: BondOrder, cell_shift?: Vec3) => StructureBond; export declare const get_bond_key: (idx_1: number, idx_2: number, cell_shift?: Vec3) => string; export declare function remap_bonds_after_deletion(bonds: readonly StructureBond[], deleted_indices: ReadonlySet): StructureBond[]; export type BondEditState = { added_bonds: StructureBond[]; removed_bonds: StructureBond[]; bond_order_overrides: StructureBond[]; }; export type BondEditAction = `added` | `already-visible` | `deleted-added` | `deleted-calculated` | `not-visible` | `ordered-added` | `ordered-calculated` | `restored`; export type BondEditResult = { action: BondEditAction; changed: boolean; state: BondEditState; }; export type BondKeyTarget = Pick; type BondOrderTarget = BondKeyTarget & { bond_order?: BondOrder; order?: BondOrder; }; export declare const BOND_ORDER_OPTIONS: { order: BondOrder; label: string; }[]; export declare const canonicalize_bond_target: (bond: BondKeyTarget, sites: Site[] | undefined) => BondKeyTarget; export declare function has_visible_bond(edit_state: BondEditState, bond: BondKeyTarget, calculated_bonds: BondOrderTarget[]): boolean; export declare function add_or_restore_bond(edit_state: BondEditState, bond: BondKeyTarget, calculated_bonds: BondOrderTarget[], order: BondOrder): BondEditResult; export declare function delete_bond(edit_state: BondEditState, bond: BondKeyTarget, calculated_bonds: BondOrderTarget[]): BondEditResult; export declare function set_bond_order(edit_state: BondEditState, bond: BondKeyTarget, calculated_bonds: BondOrderTarget[], order: BondOrder): BondEditResult; export declare const merge_bond_edits: (base_bonds: StructureBond[], added: StructureBond[], removed: StructureBond[], overrides: StructureBond[]) => StructureBond[]; export declare function normalize_bond_order(order: unknown): BondOrder | null; export declare function structure_bond_to_bond_pair(structure: AnyStructure, bond: StructureBond): BondPair; export declare function get_explicit_bond_metadata(structure: AnyStructure): StructureBond[]; export declare function apply_explicit_bond_metadata(structure: AnyStructure, bonds: BondPair[]): BondPair[]; export declare function scale_and_offset_bond_matrix(transform_matrix: Float32Array, offset: number, radius_scale: number): Float32Array; export declare function get_bond_render_matrices(bond: BondPair, bond_thickness: number): Float32Array[]; export declare function compute_bond_transform(pos_1: Vec3, pos_2: Vec3): Float32Array; export declare const BONDING_STRATEGIES: { readonly electroneg_ratio: typeof electroneg_ratio; readonly solid_angle: typeof solid_angle; }; export type BondingStrategy = keyof typeof BONDING_STRATEGIES; export type BondingAlgo = (typeof BONDING_STRATEGIES)[BondingStrategy]; export declare function electroneg_ratio(structure: AnyStructure, { electronegativity_threshold, // Max electronegativity difference for bonding max_distance_ratio, // Max distance as multiple of sum of covalent radii min_bond_dist, // Minimum bond distance in Angstroms metal_metal_penalty, // Strength penalty for metal-metal bonds metal_nonmetal_bonus, // Strength bonus for metal-nonmetal bonds similar_electronegativity_bonus, // Bonus for similar electronegativity same_species_penalty, // Penalty for bonds between same element strength_threshold, }?: { electronegativity_threshold?: number | undefined; max_distance_ratio?: number | undefined; min_bond_dist?: number | undefined; metal_metal_penalty?: number | undefined; metal_nonmetal_bonus?: number | undefined; similar_electronegativity_bonus?: number | undefined; same_species_penalty?: number | undefined; strength_threshold?: number | undefined; }): BondPair[]; export declare function solid_angle(structure: AnyStructure, { min_solid_angle, min_face_area, max_distance, min_bond_dist, strength_threshold, }?: { min_solid_angle?: number | undefined; min_face_area?: number | undefined; max_distance?: number | undefined; min_bond_dist?: number | undefined; strength_threshold?: number | undefined; }): BondPair[]; export {};