import type { ChemicalElement, ElementSymbol } from '../element'; import type { Vec3 } from '../math'; import type { AnyStructure, BondOrder, BondPair, Pbc, Site, StructureBond } from './'; export declare const expected_bond_length: (elem_a: ChemicalElement | undefined, elem_b: ChemicalElement | undefined) => number | null; export declare const get_majority_element: (site: Site | undefined) => ElementSymbol | null; export declare const is_spectator_center: (element: string) => boolean; export declare function has_framework_potential(elements: Iterable): boolean; 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 const rendered_bond_key_for: (bond: BondKeyTarget) => string; 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 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 const explicit_only: (structure: AnyStructure) => BondPair[]; export type NeighborList = { n_centers: number; cutoff: number; offsets: Int32Array; neighbors: Int32Array; images: Int32Array; deltas: Float64Array; distances: Float64Array; }; export type NeighborQueryOptions = ({ cutoff: number; sorted?: boolean; } | { k: number; }) & { pbc?: Pbc; }; export declare function lattice_pbc_or_throw(structure: AnyStructure, override?: Pbc): Pbc; export declare function neighbor_query(structure: AnyStructure, options: NeighborQueryOptions): NeighborList; export declare const BONDING_STRATEGIES: { readonly electroneg_ratio: typeof electroneg_ratio; readonly explicit_only: (structure: AnyStructure) => BondPair[]; }; export type BondingStrategy = keyof typeof BONDING_STRATEGIES; export declare function compute_bonds(structure: AnyStructure, strategy: BondingStrategy, options?: Record): BondPair[]; export declare function electroneg_ratio(structure: AnyStructure, { electronegativity_threshold, // Max electronegativity difference for bonding max_distance_ratio, // Max distance as multiple of the expected bond length min_bond_dist, // Minimum bond distance in Angstroms metal_metal_penalty, // Strength penalty for metal-metal bonds cation_cation_penalty, metal_nonmetal_bonus, // Strength bonus for metal-nonmetal bonds similar_electronegativity_bonus, // Bonus for similar electronegativity strength_threshold, // Minimum bond strength to include in results pbc, }?: { electronegativity_threshold?: number | undefined; max_distance_ratio?: number | undefined; min_bond_dist?: number | undefined; metal_metal_penalty?: number | undefined; cation_cation_penalty?: number | undefined; metal_nonmetal_bonus?: number | undefined; similar_electronegativity_bonus?: number | undefined; strength_threshold?: number | undefined; pbc?: Pbc | undefined; }): BondPair[]; export {};