import type { ElementSymbol } from '../element'; import type { Vec3 } from '../math'; import type { CellType, SymmetryDataset, WyckoffPos } from '../symmetry'; import { SvelteMap, SvelteSet } from 'svelte/reactivity'; import type { AtomColorConfig, AtomPropertyColors } from './atom-properties'; import type { BondingStrategy } from './bonding'; import type { AnyStructure, BondEditMode, BondOrder, MeasureMode, StructureBond } from './index'; export interface StructureSessionInputs { structure: () => AnyStructure | undefined; set_structure: (value: AnyStructure | undefined) => void; bonds: () => StructureBond[] | undefined; set_bonds: (value: StructureBond[] | undefined) => void; series_key: () => unknown; selected_sites: () => number[]; set_selected_sites: (value: number[]) => void; measured_sites: () => number[]; set_measured_sites: (value: number[]) => void; highlighted_sites: () => number[]; set_highlighted_sites: (value: number[]) => void; hovered_site_idx: () => number | null; set_hovered_site_idx: (value: number | null) => void; measure_mode: () => MeasureMode; set_measure_mode: (value: MeasureMode) => void; bond_edit_mode: () => BondEditMode; set_bond_edit_mode: (value: BondEditMode) => void; bond_edit_order: () => BondOrder; set_bond_edit_order: (value: BondOrder) => void; supercell_scaling: () => string; apply_supercell_scaling: () => boolean; show_image_atoms: () => boolean; cell_type: () => CellType; set_cell_type: (value: CellType) => void; sym_data: () => SymmetryDataset | null; atom_color_config: () => AtomColorConfig; bonding_strategy: () => BondingStrategy; on_notice?: (message: string) => void; } export type EditSnapshot = { structure: AnyStructure; bonds: StructureBond[] | undefined; }; type BondEditSnapshot = { added_bonds: StructureBond[]; removed_bonds: StructureBond[]; bond_order_overrides: StructureBond[]; bond_edit_mode: BondEditMode; bond_edit_order: BondOrder; }; export declare const MAX_HISTORY = 20; declare class History { undo_stack: Entry[]; redo_stack: Entry[]; push(entry: Entry): void; step(direction: `undo` | `redo`, current: () => Entry): Entry | undefined; clear(): void; } export declare class StructureSession { readonly inputs: StructureSessionInputs; normalized_structure: AnyStructure | undefined; private readonly structure_with_bonds; base_structure: AnyStructure | undefined; private readonly supercell_factors; private readonly has_scaled_cell; has_supercell: boolean; private readonly supercell_job; private readonly supercell_is_large; private async_supercell; private readonly supercell; supercell_structure: AnyStructure | undefined; supercell_loading: boolean; scaled_cell_displayed: boolean; volume_scaling: Vec3; bond_edits_enabled: boolean; element_mapping: Partial> | undefined; dragging_atoms: boolean; displayed_structure: AnyStructure | undefined; private readonly displayed_site_count; shows_input_frame: boolean; wyckoff_rows: WyckoffPos[]; property_colors: AtomPropertyColors | null; private last_topology; private readonly topology_signature; selected_sites: number[]; measured_sites: number[]; highlighted_sites: number[]; hovered_site_idx: number | null; site_radius_overrides: SvelteMap; element_radius_overrides: Partial>; hidden_prop_vals: SvelteSet; add_atom_mode: boolean; add_element: "B" | "S" | "K" | "C" | "H" | "He" | "Li" | "Be" | "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"; change_element_mode: boolean; history: History; private is_internal_edit; added_bonds: StructureBond[]; removed_bonds: StructureBond[]; bond_order_overrides: StructureBond[]; bond_history: History; private bond_edit_base; private emitted_bonds; has_bond_edits: boolean; private readonly edited_bonds; reset_token: number; active_pane_idx: number; fly_to_request: Vec3 | undefined; private readonly moved_panes; any_camera_moved: boolean; constructor(inputs: StructureSessionInputs); private notice; private in_range; clear_selection: () => void; private emit_bonds; private snapshot_bond_edits; clear_bond_edits: () => void; private capture_bond_edit_base; push_bond_undo: () => void; private step_bond_history; undo_bond_edit: () => boolean; redo_bond_edit: () => boolean; private snapshot_edit_state; push_undo: () => void; private step_history; undo: () => boolean; redo: () => boolean; private write_structure; private readonly to_base_site_idx; scene_to_structure_indices(scene_indices: number[], skip_image_atoms?: boolean): SvelteSet; private singular_lattice_notified; private cart_to_frac; delete_selected: () => boolean; duplicate_selected: () => boolean; change_element: (symbol: string) => boolean; add_atom: (xyz: Vec3, symbol: ElementSymbol) => void; move_sites: (scene_indices: number[], delta: Vec3) => void; report_pane_moved: (pane_idx: number, moved: boolean) => void; reset_all_cameras: () => void; clear_moved_panes: () => void; collapse_to_primary_pane: () => void; } export {};