from __future__ import annotations
from typing import Protocol, runtime_checkable, List

@runtime_checkable
class IVectorData(Protocol):
    """Protocol matching ZOSAPI.Common.IVectorData (1D array of doubles)."""

    def ReadData(self, Size: int, Data: List[float]) -> None: ...
    def WriteData(self, Size: int, Data: List[float]) -> None: ...
    def GetValueAt(self, position: int) -> float: ...
    def SetValueAt(self, position: int, Value: float) -> None: ...

    @property
    def IsReadOnly(self) -> bool: ...

    @property
    def Length(self) -> int: ...

    @property
    def Data(self) -> List[float]: ...
    @Data.setter
    def Data(self, values: List[float]) -> None: ...
