"""This is an automatically generated stub for `soil_params.capnp`."""

from __future__ import annotations

from collections.abc import Iterator, Sequence
from contextlib import contextmanager
from io import BufferedWriter
from typing import Any, BinaryIO, Literal

from capnp import _DynamicListBuilder

class SoilCharacteristicData:
    class Data:
        @property
        def soilType(self) -> str: ...
        @property
        def soilRawDensity(self) -> int: ...
        @property
        def airCapacity(self) -> int: ...
        @property
        def fieldCapacity(self) -> int: ...
        @property
        def nFieldCapacity(self) -> int: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[SoilCharacteristicData.DataReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> SoilCharacteristicData.DataReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            soilType: str | None = None,
            soilRawDensity: int | None = None,
            airCapacity: int | None = None,
            fieldCapacity: int | None = None,
            nFieldCapacity: int | None = None,
        ) -> SoilCharacteristicData.DataBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> SoilCharacteristicData.DataReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> SoilCharacteristicData.DataReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class DataReader(SoilCharacteristicData.Data):
        def as_builder(self) -> SoilCharacteristicData.DataBuilder: ...

    class DataBuilder(SoilCharacteristicData.Data):
        @property
        def soilType(self) -> str: ...
        @soilType.setter
        def soilType(self, value: str) -> None: ...
        @property
        def soilRawDensity(self) -> int: ...
        @soilRawDensity.setter
        def soilRawDensity(self, value: int) -> None: ...
        @property
        def airCapacity(self) -> int: ...
        @airCapacity.setter
        def airCapacity(self, value: int) -> None: ...
        @property
        def fieldCapacity(self) -> int: ...
        @fieldCapacity.setter
        def fieldCapacity(self, value: int) -> None: ...
        @property
        def nFieldCapacity(self) -> int: ...
        @nFieldCapacity.setter
        def nFieldCapacity(self, value: int) -> None: ...
        @staticmethod
        def from_dict(
            dictionary: dict[str, Any],
        ) -> SoilCharacteristicData.DataBuilder: ...
        def copy(self) -> SoilCharacteristicData.DataBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> SoilCharacteristicData.DataReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    @property
    def list(self) -> Sequence[SoilCharacteristicData.Data]: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SoilCharacteristicDataReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilCharacteristicDataReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        list: Sequence[SoilCharacteristicData.DataBuilder]
        | Sequence[dict[str, Any]]
        | None = None,
    ) -> SoilCharacteristicDataBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilCharacteristicDataReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilCharacteristicDataReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SoilCharacteristicDataReader(SoilCharacteristicData):
    @property
    def list(self) -> Sequence[SoilCharacteristicData.DataReader]: ...
    def as_builder(self) -> SoilCharacteristicDataBuilder: ...

class SoilCharacteristicDataBuilder(SoilCharacteristicData):
    @property
    def list(self) -> Sequence[SoilCharacteristicData.DataBuilder]: ...
    @list.setter
    def list(
        self,
        value: Sequence[
            SoilCharacteristicData.Data
            | SoilCharacteristicData.DataBuilder
            | SoilCharacteristicData.DataReader
        ]
        | Sequence[dict[str, Any]],
    ) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> SoilCharacteristicDataBuilder: ...
    def init(
        self, name: Literal["list"], size: int = ...
    ) -> _DynamicListBuilder[SoilCharacteristicData.DataBuilder]: ...
    def copy(self) -> SoilCharacteristicDataBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SoilCharacteristicDataReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class SoilCharacteristicModifier:
    class Data:
        @property
        def soilType(self) -> str: ...
        @property
        def organicMatter(self) -> float: ...
        @property
        def airCapacity(self) -> int: ...
        @property
        def fieldCapacity(self) -> int: ...
        @property
        def nFieldCapacity(self) -> int: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[SoilCharacteristicModifier.DataReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> SoilCharacteristicModifier.DataReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            soilType: str | None = None,
            organicMatter: float | None = None,
            airCapacity: int | None = None,
            fieldCapacity: int | None = None,
            nFieldCapacity: int | None = None,
        ) -> SoilCharacteristicModifier.DataBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> SoilCharacteristicModifier.DataReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> SoilCharacteristicModifier.DataReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class DataReader(SoilCharacteristicModifier.Data):
        def as_builder(self) -> SoilCharacteristicModifier.DataBuilder: ...

    class DataBuilder(SoilCharacteristicModifier.Data):
        @property
        def soilType(self) -> str: ...
        @soilType.setter
        def soilType(self, value: str) -> None: ...
        @property
        def organicMatter(self) -> float: ...
        @organicMatter.setter
        def organicMatter(self, value: float) -> None: ...
        @property
        def airCapacity(self) -> int: ...
        @airCapacity.setter
        def airCapacity(self, value: int) -> None: ...
        @property
        def fieldCapacity(self) -> int: ...
        @fieldCapacity.setter
        def fieldCapacity(self, value: int) -> None: ...
        @property
        def nFieldCapacity(self) -> int: ...
        @nFieldCapacity.setter
        def nFieldCapacity(self, value: int) -> None: ...
        @staticmethod
        def from_dict(
            dictionary: dict[str, Any],
        ) -> SoilCharacteristicModifier.DataBuilder: ...
        def copy(self) -> SoilCharacteristicModifier.DataBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> SoilCharacteristicModifier.DataReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    @property
    def list(self) -> Sequence[SoilCharacteristicModifier.Data]: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SoilCharacteristicModifierReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilCharacteristicModifierReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        list: Sequence[SoilCharacteristicModifier.DataBuilder]
        | Sequence[dict[str, Any]]
        | None = None,
    ) -> SoilCharacteristicModifierBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilCharacteristicModifierReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilCharacteristicModifierReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SoilCharacteristicModifierReader(SoilCharacteristicModifier):
    @property
    def list(self) -> Sequence[SoilCharacteristicModifier.DataReader]: ...
    def as_builder(self) -> SoilCharacteristicModifierBuilder: ...

class SoilCharacteristicModifierBuilder(SoilCharacteristicModifier):
    @property
    def list(self) -> Sequence[SoilCharacteristicModifier.DataBuilder]: ...
    @list.setter
    def list(
        self,
        value: Sequence[
            SoilCharacteristicModifier.Data
            | SoilCharacteristicModifier.DataBuilder
            | SoilCharacteristicModifier.DataReader
        ]
        | Sequence[dict[str, Any]],
    ) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> SoilCharacteristicModifierBuilder: ...
    def init(
        self, name: Literal["list"], size: int = ...
    ) -> _DynamicListBuilder[SoilCharacteristicModifier.DataBuilder]: ...
    def copy(self) -> SoilCharacteristicModifierBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SoilCharacteristicModifierReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class CapillaryRiseRate:
    class Data:
        @property
        def soilType(self) -> str: ...
        @property
        def distance(self) -> int: ...
        @property
        def rate(self) -> float: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[CapillaryRiseRate.DataReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> CapillaryRiseRate.DataReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            soilType: str | None = None,
            distance: int | None = None,
            rate: float | None = None,
        ) -> CapillaryRiseRate.DataBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> CapillaryRiseRate.DataReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> CapillaryRiseRate.DataReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class DataReader(CapillaryRiseRate.Data):
        def as_builder(self) -> CapillaryRiseRate.DataBuilder: ...

    class DataBuilder(CapillaryRiseRate.Data):
        @property
        def soilType(self) -> str: ...
        @soilType.setter
        def soilType(self, value: str) -> None: ...
        @property
        def distance(self) -> int: ...
        @distance.setter
        def distance(self, value: int) -> None: ...
        @property
        def rate(self) -> float: ...
        @rate.setter
        def rate(self, value: float) -> None: ...
        @staticmethod
        def from_dict(dictionary: dict[str, Any]) -> CapillaryRiseRate.DataBuilder: ...
        def copy(self) -> CapillaryRiseRate.DataBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> CapillaryRiseRate.DataReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    @property
    def list(self) -> Sequence[CapillaryRiseRate.Data]: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[CapillaryRiseRateReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CapillaryRiseRateReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        list: Sequence[CapillaryRiseRate.DataBuilder]
        | Sequence[dict[str, Any]]
        | None = None,
    ) -> CapillaryRiseRateBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CapillaryRiseRateReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CapillaryRiseRateReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class CapillaryRiseRateReader(CapillaryRiseRate):
    @property
    def list(self) -> Sequence[CapillaryRiseRate.DataReader]: ...
    def as_builder(self) -> CapillaryRiseRateBuilder: ...

class CapillaryRiseRateBuilder(CapillaryRiseRate):
    @property
    def list(self) -> Sequence[CapillaryRiseRate.DataBuilder]: ...
    @list.setter
    def list(
        self,
        value: Sequence[
            CapillaryRiseRate.Data
            | CapillaryRiseRate.DataBuilder
            | CapillaryRiseRate.DataReader
        ]
        | Sequence[dict[str, Any]],
    ) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> CapillaryRiseRateBuilder: ...
    def init(
        self, name: Literal["list"], size: int = ...
    ) -> _DynamicListBuilder[CapillaryRiseRate.DataBuilder]: ...
    def copy(self) -> CapillaryRiseRateBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> CapillaryRiseRateReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...
