/** * Copyright (c) 2025 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal */ import { Table } from '../../mol-data/db.js'; import { mmCIF_Schema } from '../../mol-io/reader/cif/schema/mmcif.js'; import { Mat4, Vec3 } from '../../mol-math/linear-algebra.js'; import { MolstarBondSiteTypeId, MolstarBondSiteValueOrder } from '../../mol-model/structure/export/categories/molstar_bond_site.js'; import { JSONCifDataBlock } from './model.js'; type Atom = Partial>; export interface JSONCifLigandGraphBondProps { value_order: MolstarBondSiteValueOrder | undefined; type_id: MolstarBondSiteTypeId | undefined; } export interface JSONCifLigandGraphAtom { key: string; final_id: number | undefined; row: Atom; } export interface JSONCifLigandGraphBond { atom_1: JSONCifLigandGraphAtom; atom_2: JSONCifLigandGraphAtom; props: JSONCifLigandGraphBondProps; } export interface JSONCifLigandGraphData { block: JSONCifDataBlock; atomIdRemapping: Map; addedAtomIds: number[]; removedAtomIds: number[]; } export declare class JSONCifLigandGraph { private data; readonly atoms: JSONCifLigandGraphAtom[]; readonly atomsByKey: Map; readonly atomsById: Map; /** Bond with the provided key is always atom_1 */ readonly bondByKey: Map; readonly removedAtomIds: Set; getAtomAtIndex(index: number): JSONCifLigandGraphAtom; getAtom(atomOrId: number | JSONCifLigandGraphAtom): JSONCifLigandGraphAtom | undefined; getBonds(atomOrId: number | JSONCifLigandGraphAtom): JSONCifLigandGraphBond[]; getAtomCoords(atomOrId: number | JSONCifLigandGraphAtom, out?: Vec3): Vec3; getBondDirection(bond: JSONCifLigandGraphBond, out?: Vec3): Vec3; modifyAtom(atomOrId: number | JSONCifLigandGraphAtom, data: Omit): void; addAtom(data: Omit): JSONCifLigandGraphAtom; removeAtom(atomOrId: number | JSONCifLigandGraphAtom): void; addOrUpdateBond(atom1: number | JSONCifLigandGraphAtom, atom2: number | JSONCifLigandGraphAtom, props: JSONCifLigandGraphBondProps): void; removeBond(atom1: number | JSONCifLigandGraphAtom, atom2: number | JSONCifLigandGraphAtom): void; private transformAtomCoords; transformCoords(xform: Mat4, atoms?: (number | JSONCifLigandGraphAtom)[]): void; traverse(atomOrId: number | JSONCifLigandGraphAtom, how: 'dfs' | 'bfs', state: S, visitAtom: (atom: JSONCifLigandGraphAtom, state: S, pred: JSONCifLigandGraphBond | undefined, graph: JSONCifLigandGraph) => void): S; getData(): JSONCifLigandGraphData; constructor(data: JSONCifDataBlock); } export {};