/**
 * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
 *
 * @author Michal Malý <michal.maly@ibt.cas.cz>
 * @author Jiří Černý <jiri.cerny@ibt.cas.cz>
 */
import { ConfalPyramidsTypes as CPT } from './types';
import { Vec3 } from '../../../mol-math/linear-algebra';
import { ElementIndex, Structure, StructureElement, Unit } from '../../../mol-model/structure';
export declare namespace ConfalPyramidsUtil {
    export type AtomInfo = {
        pos: Vec3;
        index: ElementIndex;
        fakeAltId: string;
    };
    export type FirstResidueAtoms = {
        O3: AtomInfo;
    };
    export type SecondResidueAtoms = {
        OP1: AtomInfo;
        OP2: AtomInfo;
        O5: AtomInfo;
        P: AtomInfo;
    };
    export type Handler = (pyramid: CPT.Pyramid, first: FirstResidueAtoms, second: SecondResidueAtoms, firstLocIndex: number, secondLocIndex: number) => void;
    export function hasMultipleModels(unit: Unit.Atomic): boolean;
    class Utility {
        protected getPyramidByName(name: string): {
            pyramid: CPT.Pyramid | undefined;
            index: number;
        };
        protected stepToName(entry_id: string, modelNum: number, locFirst: StructureElement.Location, locSecond: StructureElement.Location, fakeAltId_1: string, fakeAltId_2: string): string;
        constructor(unit: Unit.Atomic);
        protected readonly data: CPT.PyramidsData;
        protected readonly hasMultipleModels: boolean;
        protected readonly entryId: string;
        protected readonly modelNum: number;
    }
    export class UnitWalker extends Utility {
        private structure;
        private unit;
        private handler;
        private getAtomIndices;
        private getAtomPositions;
        private handleStep;
        private processFirstResidue;
        private processSecondResidue;
        private step;
        walk(): void;
        constructor(structure: Structure, unit: Unit.Atomic, handler: Handler);
        private chainIt;
        private residueIt;
    }
    export {};
}
