/** * Copyright (c) 2017-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal * @author Alexander Rose */ import { SecondaryStructureType } from '../types.js'; import { ResidueIndex } from '../indexing.js'; import { mmCIF_Schema } from '../../../../mol-io/reader/cif/schema/mmcif.js'; /** Secondary structure "indexed" by residues. */ interface SecondaryStructure { readonly type: ArrayLike; /** index into the elements array */ readonly key: ArrayLike; /** indexed by key */ readonly elements: ReadonlyArray; /** mapping from residue index */ readonly getIndex: (rI: ResidueIndex) => number; } declare function SecondaryStructure(type: SecondaryStructure['type'], key: SecondaryStructure['key'], elements: SecondaryStructure['elements'], getIndex: SecondaryStructure['getIndex']): { type: ArrayLike; key: ArrayLike; elements: readonly SecondaryStructure.Element[]; getIndex: (rI: ResidueIndex) => number; }; declare namespace SecondaryStructure { type Element = None | Turn | Helix | Sheet; interface None { kind: 'none'; } interface Turn { kind: 'turn'; flags: SecondaryStructureType; } interface Helix { kind: 'helix'; flags: SecondaryStructureType; type_id: mmCIF_Schema['struct_conf']['conf_type_id']['T']; helix_class: string; details?: string; } interface Sheet { kind: 'sheet'; flags: SecondaryStructureType; sheet_id: string; symmetry?: string; } } export { SecondaryStructure };