from collections.abc import Generator, Iterable
from typing import Any, ClassVar

from scm.plams import Atom, Molecule, Settings

class Bond:
    AR: ClassVar[float]
    atom1: Atom
    atom2: Atom
    order: float
    mol: Molecule
    properties: Settings[Any, Any]
    def __init__(
        self, atom1: None | Atom = ..., atom2: None | Atom = ..., order: float = ..., mol: None | Molecule = ..., **other: Any
    ) -> None: ...
    def __iter__(self) -> Generator[Atom, None, None]: ...
    def is_aromatic(self) -> bool: ...
    def length(self, unit: str = ...) -> float: ...
    def as_vector(self, start: None | Atom = ..., unit: str = ...) -> tuple[float, float, float]: ...
    def other_end(self, atom: Atom) -> Atom: ...
    def resize(self, moving_atom: Atom, length: float, unit: str = ...) -> None: ...
    def rotate(self, moving_atom: Atom, angle: float, unit: str = ...) -> None: ...
