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

from __future__ import annotations

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

from capnp import _DynamicListBuilder

from ...climate_capnp import RCP
from ...date_capnp import Date, DateBuilder, DateReader
from .monica_management_capnp import Params

class SpeciesParameters:
    @property
    def speciesId(self) -> str: ...
    @property
    def carboxylationPathway(self) -> int: ...
    @property
    def defaultRadiationUseEfficiency(self) -> float: ...
    @property
    def partBiologicalNFixation(self) -> float: ...
    @property
    def initialKcFactor(self) -> float: ...
    @property
    def luxuryNCoeff(self) -> float: ...
    @property
    def maxCropDiameter(self) -> float: ...
    @property
    def stageAtMaxHeight(self) -> float: ...
    @property
    def stageAtMaxDiameter(self) -> float: ...
    @property
    def minimumNConcentration(self) -> float: ...
    @property
    def minimumTemperatureForAssimilation(self) -> float: ...
    @property
    def optimumTemperatureForAssimilation(self) -> float: ...
    @property
    def maximumTemperatureForAssimilation(self) -> float: ...
    @property
    def nConcentrationAbovegroundBiomass(self) -> float: ...
    @property
    def nConcentrationB0(self) -> float: ...
    @property
    def nConcentrationPN(self) -> float: ...
    @property
    def nConcentrationRoot(self) -> float: ...
    @property
    def developmentAccelerationByNitrogenStress(self) -> int: ...
    @property
    def fieldConditionModifier(self) -> float: ...
    @property
    def assimilateReallocation(self) -> float: ...
    @property
    def baseTemperature(self) -> Sequence[float]: ...
    @property
    def organMaintenanceRespiration(self) -> Sequence[float]: ...
    @property
    def organGrowthRespiration(self) -> Sequence[float]: ...
    @property
    def stageMaxRootNConcentration(self) -> Sequence[float]: ...
    @property
    def initialOrganBiomass(self) -> Sequence[float]: ...
    @property
    def criticalOxygenContent(self) -> Sequence[float]: ...
    @property
    def stageMobilFromStorageCoeff(self) -> Sequence[float]: ...
    @property
    def abovegroundOrgan(self) -> Sequence[bool]: ...
    @property
    def storageOrgan(self) -> Sequence[bool]: ...
    @property
    def samplingDepth(self) -> float: ...
    @property
    def targetNSamplingDepth(self) -> float: ...
    @property
    def targetN30(self) -> float: ...
    @property
    def maxNUptakeParam(self) -> float: ...
    @property
    def rootDistributionParam(self) -> float: ...
    @property
    def plantDensity(self) -> int: ...
    @property
    def rootGrowthLag(self) -> float: ...
    @property
    def minimumTemperatureRootGrowth(self) -> float: ...
    @property
    def initialRootingDepth(self) -> float: ...
    @property
    def rootPenetrationRate(self) -> float: ...
    @property
    def rootFormFactor(self) -> float: ...
    @property
    def specificRootLength(self) -> float: ...
    @property
    def stageAfterCut(self) -> int: ...
    @property
    def limitingTemperatureHeatStress(self) -> float: ...
    @property
    def cuttingDelayDays(self) -> int: ...
    @property
    def droughtImpactOnFertilityFactor(self) -> float: ...
    @property
    def efMono(self) -> float: ...
    @property
    def efMonos(self) -> float: ...
    @property
    def efIso(self) -> float: ...
    @property
    def vcMax25(self) -> float: ...
    @property
    def aekc(self) -> float: ...
    @property
    def aeko(self) -> float: ...
    @property
    def aevc(self) -> float: ...
    @property
    def kc25(self) -> float: ...
    @property
    def ko25(self) -> float: ...
    @property
    def transitionStageLeafExp(self) -> int: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SpeciesParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SpeciesParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        speciesId: str | None = None,
        carboxylationPathway: int | None = None,
        defaultRadiationUseEfficiency: float | None = None,
        partBiologicalNFixation: float | None = None,
        initialKcFactor: float | None = None,
        luxuryNCoeff: float | None = None,
        maxCropDiameter: float | None = None,
        stageAtMaxHeight: float | None = None,
        stageAtMaxDiameter: float | None = None,
        minimumNConcentration: float | None = None,
        minimumTemperatureForAssimilation: float | None = None,
        optimumTemperatureForAssimilation: float | None = None,
        maximumTemperatureForAssimilation: float | None = None,
        nConcentrationAbovegroundBiomass: float | None = None,
        nConcentrationB0: float | None = None,
        nConcentrationPN: float | None = None,
        nConcentrationRoot: float | None = None,
        developmentAccelerationByNitrogenStress: int | None = None,
        fieldConditionModifier: float | None = None,
        assimilateReallocation: float | None = None,
        baseTemperature: Sequence[float] | None = None,
        organMaintenanceRespiration: Sequence[float] | None = None,
        organGrowthRespiration: Sequence[float] | None = None,
        stageMaxRootNConcentration: Sequence[float] | None = None,
        initialOrganBiomass: Sequence[float] | None = None,
        criticalOxygenContent: Sequence[float] | None = None,
        stageMobilFromStorageCoeff: Sequence[float] | None = None,
        abovegroundOrgan: Sequence[bool] | None = None,
        storageOrgan: Sequence[bool] | None = None,
        samplingDepth: float | None = None,
        targetNSamplingDepth: float | None = None,
        targetN30: float | None = None,
        maxNUptakeParam: float | None = None,
        rootDistributionParam: float | None = None,
        plantDensity: int | None = None,
        rootGrowthLag: float | None = None,
        minimumTemperatureRootGrowth: float | None = None,
        initialRootingDepth: float | None = None,
        rootPenetrationRate: float | None = None,
        rootFormFactor: float | None = None,
        specificRootLength: float | None = None,
        stageAfterCut: int | None = None,
        limitingTemperatureHeatStress: float | None = None,
        cuttingDelayDays: int | None = None,
        droughtImpactOnFertilityFactor: float | None = None,
        efMono: float | None = None,
        efMonos: float | None = None,
        efIso: float | None = None,
        vcMax25: float | None = None,
        aekc: float | None = None,
        aeko: float | None = None,
        aevc: float | None = None,
        kc25: float | None = None,
        ko25: float | None = None,
        transitionStageLeafExp: int | None = None,
    ) -> SpeciesParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SpeciesParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SpeciesParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SpeciesParametersReader(SpeciesParameters):
    def as_builder(self) -> SpeciesParametersBuilder: ...

class SpeciesParametersBuilder(SpeciesParameters):
    @property
    def speciesId(self) -> str: ...
    @speciesId.setter
    def speciesId(self, value: str) -> None: ...
    @property
    def carboxylationPathway(self) -> int: ...
    @carboxylationPathway.setter
    def carboxylationPathway(self, value: int) -> None: ...
    @property
    def defaultRadiationUseEfficiency(self) -> float: ...
    @defaultRadiationUseEfficiency.setter
    def defaultRadiationUseEfficiency(self, value: float) -> None: ...
    @property
    def partBiologicalNFixation(self) -> float: ...
    @partBiologicalNFixation.setter
    def partBiologicalNFixation(self, value: float) -> None: ...
    @property
    def initialKcFactor(self) -> float: ...
    @initialKcFactor.setter
    def initialKcFactor(self, value: float) -> None: ...
    @property
    def luxuryNCoeff(self) -> float: ...
    @luxuryNCoeff.setter
    def luxuryNCoeff(self, value: float) -> None: ...
    @property
    def maxCropDiameter(self) -> float: ...
    @maxCropDiameter.setter
    def maxCropDiameter(self, value: float) -> None: ...
    @property
    def stageAtMaxHeight(self) -> float: ...
    @stageAtMaxHeight.setter
    def stageAtMaxHeight(self, value: float) -> None: ...
    @property
    def stageAtMaxDiameter(self) -> float: ...
    @stageAtMaxDiameter.setter
    def stageAtMaxDiameter(self, value: float) -> None: ...
    @property
    def minimumNConcentration(self) -> float: ...
    @minimumNConcentration.setter
    def minimumNConcentration(self, value: float) -> None: ...
    @property
    def minimumTemperatureForAssimilation(self) -> float: ...
    @minimumTemperatureForAssimilation.setter
    def minimumTemperatureForAssimilation(self, value: float) -> None: ...
    @property
    def optimumTemperatureForAssimilation(self) -> float: ...
    @optimumTemperatureForAssimilation.setter
    def optimumTemperatureForAssimilation(self, value: float) -> None: ...
    @property
    def maximumTemperatureForAssimilation(self) -> float: ...
    @maximumTemperatureForAssimilation.setter
    def maximumTemperatureForAssimilation(self, value: float) -> None: ...
    @property
    def nConcentrationAbovegroundBiomass(self) -> float: ...
    @nConcentrationAbovegroundBiomass.setter
    def nConcentrationAbovegroundBiomass(self, value: float) -> None: ...
    @property
    def nConcentrationB0(self) -> float: ...
    @nConcentrationB0.setter
    def nConcentrationB0(self, value: float) -> None: ...
    @property
    def nConcentrationPN(self) -> float: ...
    @nConcentrationPN.setter
    def nConcentrationPN(self, value: float) -> None: ...
    @property
    def nConcentrationRoot(self) -> float: ...
    @nConcentrationRoot.setter
    def nConcentrationRoot(self, value: float) -> None: ...
    @property
    def developmentAccelerationByNitrogenStress(self) -> int: ...
    @developmentAccelerationByNitrogenStress.setter
    def developmentAccelerationByNitrogenStress(self, value: int) -> None: ...
    @property
    def fieldConditionModifier(self) -> float: ...
    @fieldConditionModifier.setter
    def fieldConditionModifier(self, value: float) -> None: ...
    @property
    def assimilateReallocation(self) -> float: ...
    @assimilateReallocation.setter
    def assimilateReallocation(self, value: float) -> None: ...
    @property
    def baseTemperature(self) -> Sequence[float]: ...
    @baseTemperature.setter
    def baseTemperature(self, value: Sequence[float]) -> None: ...
    @property
    def organMaintenanceRespiration(self) -> Sequence[float]: ...
    @organMaintenanceRespiration.setter
    def organMaintenanceRespiration(self, value: Sequence[float]) -> None: ...
    @property
    def organGrowthRespiration(self) -> Sequence[float]: ...
    @organGrowthRespiration.setter
    def organGrowthRespiration(self, value: Sequence[float]) -> None: ...
    @property
    def stageMaxRootNConcentration(self) -> Sequence[float]: ...
    @stageMaxRootNConcentration.setter
    def stageMaxRootNConcentration(self, value: Sequence[float]) -> None: ...
    @property
    def initialOrganBiomass(self) -> Sequence[float]: ...
    @initialOrganBiomass.setter
    def initialOrganBiomass(self, value: Sequence[float]) -> None: ...
    @property
    def criticalOxygenContent(self) -> Sequence[float]: ...
    @criticalOxygenContent.setter
    def criticalOxygenContent(self, value: Sequence[float]) -> None: ...
    @property
    def stageMobilFromStorageCoeff(self) -> Sequence[float]: ...
    @stageMobilFromStorageCoeff.setter
    def stageMobilFromStorageCoeff(self, value: Sequence[float]) -> None: ...
    @property
    def abovegroundOrgan(self) -> Sequence[bool]: ...
    @abovegroundOrgan.setter
    def abovegroundOrgan(self, value: Sequence[bool]) -> None: ...
    @property
    def storageOrgan(self) -> Sequence[bool]: ...
    @storageOrgan.setter
    def storageOrgan(self, value: Sequence[bool]) -> None: ...
    @property
    def samplingDepth(self) -> float: ...
    @samplingDepth.setter
    def samplingDepth(self, value: float) -> None: ...
    @property
    def targetNSamplingDepth(self) -> float: ...
    @targetNSamplingDepth.setter
    def targetNSamplingDepth(self, value: float) -> None: ...
    @property
    def targetN30(self) -> float: ...
    @targetN30.setter
    def targetN30(self, value: float) -> None: ...
    @property
    def maxNUptakeParam(self) -> float: ...
    @maxNUptakeParam.setter
    def maxNUptakeParam(self, value: float) -> None: ...
    @property
    def rootDistributionParam(self) -> float: ...
    @rootDistributionParam.setter
    def rootDistributionParam(self, value: float) -> None: ...
    @property
    def plantDensity(self) -> int: ...
    @plantDensity.setter
    def plantDensity(self, value: int) -> None: ...
    @property
    def rootGrowthLag(self) -> float: ...
    @rootGrowthLag.setter
    def rootGrowthLag(self, value: float) -> None: ...
    @property
    def minimumTemperatureRootGrowth(self) -> float: ...
    @minimumTemperatureRootGrowth.setter
    def minimumTemperatureRootGrowth(self, value: float) -> None: ...
    @property
    def initialRootingDepth(self) -> float: ...
    @initialRootingDepth.setter
    def initialRootingDepth(self, value: float) -> None: ...
    @property
    def rootPenetrationRate(self) -> float: ...
    @rootPenetrationRate.setter
    def rootPenetrationRate(self, value: float) -> None: ...
    @property
    def rootFormFactor(self) -> float: ...
    @rootFormFactor.setter
    def rootFormFactor(self, value: float) -> None: ...
    @property
    def specificRootLength(self) -> float: ...
    @specificRootLength.setter
    def specificRootLength(self, value: float) -> None: ...
    @property
    def stageAfterCut(self) -> int: ...
    @stageAfterCut.setter
    def stageAfterCut(self, value: int) -> None: ...
    @property
    def limitingTemperatureHeatStress(self) -> float: ...
    @limitingTemperatureHeatStress.setter
    def limitingTemperatureHeatStress(self, value: float) -> None: ...
    @property
    def cuttingDelayDays(self) -> int: ...
    @cuttingDelayDays.setter
    def cuttingDelayDays(self, value: int) -> None: ...
    @property
    def droughtImpactOnFertilityFactor(self) -> float: ...
    @droughtImpactOnFertilityFactor.setter
    def droughtImpactOnFertilityFactor(self, value: float) -> None: ...
    @property
    def efMono(self) -> float: ...
    @efMono.setter
    def efMono(self, value: float) -> None: ...
    @property
    def efMonos(self) -> float: ...
    @efMonos.setter
    def efMonos(self, value: float) -> None: ...
    @property
    def efIso(self) -> float: ...
    @efIso.setter
    def efIso(self, value: float) -> None: ...
    @property
    def vcMax25(self) -> float: ...
    @vcMax25.setter
    def vcMax25(self, value: float) -> None: ...
    @property
    def aekc(self) -> float: ...
    @aekc.setter
    def aekc(self, value: float) -> None: ...
    @property
    def aeko(self) -> float: ...
    @aeko.setter
    def aeko(self, value: float) -> None: ...
    @property
    def aevc(self) -> float: ...
    @aevc.setter
    def aevc(self, value: float) -> None: ...
    @property
    def kc25(self) -> float: ...
    @kc25.setter
    def kc25(self, value: float) -> None: ...
    @property
    def ko25(self) -> float: ...
    @ko25.setter
    def ko25(self, value: float) -> None: ...
    @property
    def transitionStageLeafExp(self) -> int: ...
    @transitionStageLeafExp.setter
    def transitionStageLeafExp(self, value: int) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> SpeciesParametersBuilder: ...
    @overload
    def init(
        self: Any, name: Literal["baseTemperature"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["organMaintenanceRespiration"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["organGrowthRespiration"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["stageMaxRootNConcentration"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["initialOrganBiomass"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["criticalOxygenContent"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["stageMobilFromStorageCoeff"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["abovegroundOrgan"], size: int = ...
    ) -> _DynamicListBuilder[bool]: ...
    @overload
    def init(
        self: Any, name: Literal["storageOrgan"], size: int = ...
    ) -> _DynamicListBuilder[bool]: ...
    def init(self: Any, name: str, size: int = ...) -> Any: ...
    def copy(self) -> SpeciesParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SpeciesParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class YieldComponent:
    @property
    def organId(self) -> int: ...
    @property
    def yieldPercentage(self) -> float: ...
    @property
    def yieldDryMatter(self) -> float: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[YieldComponentReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> YieldComponentReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        organId: int | None = None,
        yieldPercentage: float | None = None,
        yieldDryMatter: float | None = None,
    ) -> YieldComponentBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> YieldComponentReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> YieldComponentReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class YieldComponentReader(YieldComponent):
    def as_builder(self) -> YieldComponentBuilder: ...

class YieldComponentBuilder(YieldComponent):
    @property
    def organId(self) -> int: ...
    @organId.setter
    def organId(self, value: int) -> None: ...
    @property
    def yieldPercentage(self) -> float: ...
    @yieldPercentage.setter
    def yieldPercentage(self, value: float) -> None: ...
    @property
    def yieldDryMatter(self) -> float: ...
    @yieldDryMatter.setter
    def yieldDryMatter(self, value: float) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> YieldComponentBuilder: ...
    def copy(self) -> YieldComponentBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> YieldComponentReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class CultivarParameters:
    @property
    def cultivarId(self) -> str: ...
    @property
    def description(self) -> str: ...
    @property
    def perennial(self) -> bool: ...
    @property
    def maxAssimilationRate(self) -> float: ...
    @property
    def maxCropHeight(self) -> float: ...
    @property
    def residueNRatio(self) -> float: ...
    @property
    def lt50cultivar(self) -> float: ...
    @property
    def cropHeightP1(self) -> float: ...
    @property
    def cropHeightP2(self) -> float: ...
    @property
    def cropSpecificMaxRootingDepth(self) -> float: ...
    @property
    def assimilatePartitioningCoeff(self) -> Sequence[Sequence[float]]: ...
    @property
    def organSenescenceRate(self) -> Sequence[Sequence[float]]: ...
    @property
    def baseDaylength(self) -> Sequence[float]: ...
    @property
    def optimumTemperature(self) -> Sequence[float]: ...
    @property
    def daylengthRequirement(self) -> Sequence[float]: ...
    @property
    def droughtStressThreshold(self) -> Sequence[float]: ...
    @property
    def specificLeafArea(self) -> Sequence[float]: ...
    @property
    def stageKcFactor(self) -> Sequence[float]: ...
    @property
    def stageTemperatureSum(self) -> Sequence[float]: ...
    @property
    def vernalisationRequirement(self) -> Sequence[float]: ...
    @property
    def heatSumIrrigationStart(self) -> float: ...
    @property
    def heatSumIrrigationEnd(self) -> float: ...
    @property
    def criticalTemperatureHeatStress(self) -> float: ...
    @property
    def beginSensitivePhaseHeatStress(self) -> float: ...
    @property
    def endSensitivePhaseHeatStress(self) -> float: ...
    @property
    def frostHardening(self) -> float: ...
    @property
    def frostDehardening(self) -> float: ...
    @property
    def lowTemperatureExposure(self) -> float: ...
    @property
    def respiratoryStress(self) -> float: ...
    @property
    def latestHarvestDoy(self) -> int: ...
    @property
    def organIdsForPrimaryYield(self) -> Sequence[YieldComponent]: ...
    @property
    def organIdsForSecondaryYield(self) -> Sequence[YieldComponent]: ...
    @property
    def organIdsForCutting(self) -> Sequence[YieldComponent]: ...
    @property
    def earlyRefLeafExp(self) -> float: ...
    @property
    def refLeafExp(self) -> float: ...
    @property
    def minTempDevWE(self) -> float: ...
    @property
    def optTempDevWE(self) -> float: ...
    @property
    def maxTempDevWE(self) -> float: ...
    @property
    def winterCrop(self) -> bool: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[CultivarParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CultivarParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        cultivarId: str | None = None,
        description: str | None = None,
        perennial: bool | None = None,
        maxAssimilationRate: float | None = None,
        maxCropHeight: float | None = None,
        residueNRatio: float | None = None,
        lt50cultivar: float | None = None,
        cropHeightP1: float | None = None,
        cropHeightP2: float | None = None,
        cropSpecificMaxRootingDepth: float | None = None,
        assimilatePartitioningCoeff: Sequence[Sequence[float]] | None = None,
        organSenescenceRate: Sequence[Sequence[float]] | None = None,
        baseDaylength: Sequence[float] | None = None,
        optimumTemperature: Sequence[float] | None = None,
        daylengthRequirement: Sequence[float] | None = None,
        droughtStressThreshold: Sequence[float] | None = None,
        specificLeafArea: Sequence[float] | None = None,
        stageKcFactor: Sequence[float] | None = None,
        stageTemperatureSum: Sequence[float] | None = None,
        vernalisationRequirement: Sequence[float] | None = None,
        heatSumIrrigationStart: float | None = None,
        heatSumIrrigationEnd: float | None = None,
        criticalTemperatureHeatStress: float | None = None,
        beginSensitivePhaseHeatStress: float | None = None,
        endSensitivePhaseHeatStress: float | None = None,
        frostHardening: float | None = None,
        frostDehardening: float | None = None,
        lowTemperatureExposure: float | None = None,
        respiratoryStress: float | None = None,
        latestHarvestDoy: int | None = None,
        organIdsForPrimaryYield: Sequence[YieldComponentBuilder]
        | Sequence[dict[str, Any]]
        | None = None,
        organIdsForSecondaryYield: Sequence[YieldComponentBuilder]
        | Sequence[dict[str, Any]]
        | None = None,
        organIdsForCutting: Sequence[YieldComponentBuilder]
        | Sequence[dict[str, Any]]
        | None = None,
        earlyRefLeafExp: float | None = None,
        refLeafExp: float | None = None,
        minTempDevWE: float | None = None,
        optTempDevWE: float | None = None,
        maxTempDevWE: float | None = None,
        winterCrop: bool | None = None,
    ) -> CultivarParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CultivarParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CultivarParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class CultivarParametersReader(CultivarParameters):
    @property
    def organIdsForPrimaryYield(self) -> Sequence[YieldComponentReader]: ...
    @property
    def organIdsForSecondaryYield(self) -> Sequence[YieldComponentReader]: ...
    @property
    def organIdsForCutting(self) -> Sequence[YieldComponentReader]: ...
    def as_builder(self) -> CultivarParametersBuilder: ...

class CultivarParametersBuilder(CultivarParameters):
    @property
    def cultivarId(self) -> str: ...
    @cultivarId.setter
    def cultivarId(self, value: str) -> None: ...
    @property
    def description(self) -> str: ...
    @description.setter
    def description(self, value: str) -> None: ...
    @property
    def perennial(self) -> bool: ...
    @perennial.setter
    def perennial(self, value: bool) -> None: ...
    @property
    def maxAssimilationRate(self) -> float: ...
    @maxAssimilationRate.setter
    def maxAssimilationRate(self, value: float) -> None: ...
    @property
    def maxCropHeight(self) -> float: ...
    @maxCropHeight.setter
    def maxCropHeight(self, value: float) -> None: ...
    @property
    def residueNRatio(self) -> float: ...
    @residueNRatio.setter
    def residueNRatio(self, value: float) -> None: ...
    @property
    def lt50cultivar(self) -> float: ...
    @lt50cultivar.setter
    def lt50cultivar(self, value: float) -> None: ...
    @property
    def cropHeightP1(self) -> float: ...
    @cropHeightP1.setter
    def cropHeightP1(self, value: float) -> None: ...
    @property
    def cropHeightP2(self) -> float: ...
    @cropHeightP2.setter
    def cropHeightP2(self, value: float) -> None: ...
    @property
    def cropSpecificMaxRootingDepth(self) -> float: ...
    @cropSpecificMaxRootingDepth.setter
    def cropSpecificMaxRootingDepth(self, value: float) -> None: ...
    @property
    def assimilatePartitioningCoeff(self) -> Sequence[Sequence[float]]: ...
    @assimilatePartitioningCoeff.setter
    def assimilatePartitioningCoeff(self, value: Sequence[Sequence[float]]) -> None: ...
    @property
    def organSenescenceRate(self) -> Sequence[Sequence[float]]: ...
    @organSenescenceRate.setter
    def organSenescenceRate(self, value: Sequence[Sequence[float]]) -> None: ...
    @property
    def baseDaylength(self) -> Sequence[float]: ...
    @baseDaylength.setter
    def baseDaylength(self, value: Sequence[float]) -> None: ...
    @property
    def optimumTemperature(self) -> Sequence[float]: ...
    @optimumTemperature.setter
    def optimumTemperature(self, value: Sequence[float]) -> None: ...
    @property
    def daylengthRequirement(self) -> Sequence[float]: ...
    @daylengthRequirement.setter
    def daylengthRequirement(self, value: Sequence[float]) -> None: ...
    @property
    def droughtStressThreshold(self) -> Sequence[float]: ...
    @droughtStressThreshold.setter
    def droughtStressThreshold(self, value: Sequence[float]) -> None: ...
    @property
    def specificLeafArea(self) -> Sequence[float]: ...
    @specificLeafArea.setter
    def specificLeafArea(self, value: Sequence[float]) -> None: ...
    @property
    def stageKcFactor(self) -> Sequence[float]: ...
    @stageKcFactor.setter
    def stageKcFactor(self, value: Sequence[float]) -> None: ...
    @property
    def stageTemperatureSum(self) -> Sequence[float]: ...
    @stageTemperatureSum.setter
    def stageTemperatureSum(self, value: Sequence[float]) -> None: ...
    @property
    def vernalisationRequirement(self) -> Sequence[float]: ...
    @vernalisationRequirement.setter
    def vernalisationRequirement(self, value: Sequence[float]) -> None: ...
    @property
    def heatSumIrrigationStart(self) -> float: ...
    @heatSumIrrigationStart.setter
    def heatSumIrrigationStart(self, value: float) -> None: ...
    @property
    def heatSumIrrigationEnd(self) -> float: ...
    @heatSumIrrigationEnd.setter
    def heatSumIrrigationEnd(self, value: float) -> None: ...
    @property
    def criticalTemperatureHeatStress(self) -> float: ...
    @criticalTemperatureHeatStress.setter
    def criticalTemperatureHeatStress(self, value: float) -> None: ...
    @property
    def beginSensitivePhaseHeatStress(self) -> float: ...
    @beginSensitivePhaseHeatStress.setter
    def beginSensitivePhaseHeatStress(self, value: float) -> None: ...
    @property
    def endSensitivePhaseHeatStress(self) -> float: ...
    @endSensitivePhaseHeatStress.setter
    def endSensitivePhaseHeatStress(self, value: float) -> None: ...
    @property
    def frostHardening(self) -> float: ...
    @frostHardening.setter
    def frostHardening(self, value: float) -> None: ...
    @property
    def frostDehardening(self) -> float: ...
    @frostDehardening.setter
    def frostDehardening(self, value: float) -> None: ...
    @property
    def lowTemperatureExposure(self) -> float: ...
    @lowTemperatureExposure.setter
    def lowTemperatureExposure(self, value: float) -> None: ...
    @property
    def respiratoryStress(self) -> float: ...
    @respiratoryStress.setter
    def respiratoryStress(self, value: float) -> None: ...
    @property
    def latestHarvestDoy(self) -> int: ...
    @latestHarvestDoy.setter
    def latestHarvestDoy(self, value: int) -> None: ...
    @property
    def organIdsForPrimaryYield(self) -> Sequence[YieldComponentBuilder]: ...
    @organIdsForPrimaryYield.setter
    def organIdsForPrimaryYield(
        self,
        value: Sequence[YieldComponent | YieldComponentBuilder | YieldComponentReader]
        | Sequence[dict[str, Any]],
    ) -> None: ...
    @property
    def organIdsForSecondaryYield(self) -> Sequence[YieldComponentBuilder]: ...
    @organIdsForSecondaryYield.setter
    def organIdsForSecondaryYield(
        self,
        value: Sequence[YieldComponent | YieldComponentBuilder | YieldComponentReader]
        | Sequence[dict[str, Any]],
    ) -> None: ...
    @property
    def organIdsForCutting(self) -> Sequence[YieldComponentBuilder]: ...
    @organIdsForCutting.setter
    def organIdsForCutting(
        self,
        value: Sequence[YieldComponent | YieldComponentBuilder | YieldComponentReader]
        | Sequence[dict[str, Any]],
    ) -> None: ...
    @property
    def earlyRefLeafExp(self) -> float: ...
    @earlyRefLeafExp.setter
    def earlyRefLeafExp(self, value: float) -> None: ...
    @property
    def refLeafExp(self) -> float: ...
    @refLeafExp.setter
    def refLeafExp(self, value: float) -> None: ...
    @property
    def minTempDevWE(self) -> float: ...
    @minTempDevWE.setter
    def minTempDevWE(self, value: float) -> None: ...
    @property
    def optTempDevWE(self) -> float: ...
    @optTempDevWE.setter
    def optTempDevWE(self, value: float) -> None: ...
    @property
    def maxTempDevWE(self) -> float: ...
    @maxTempDevWE.setter
    def maxTempDevWE(self, value: float) -> None: ...
    @property
    def winterCrop(self) -> bool: ...
    @winterCrop.setter
    def winterCrop(self, value: bool) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> CultivarParametersBuilder: ...
    @overload
    def init(
        self: Any, name: Literal["assimilatePartitioningCoeff"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["organSenescenceRate"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["baseDaylength"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["optimumTemperature"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["daylengthRequirement"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["droughtStressThreshold"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["specificLeafArea"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["stageKcFactor"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["stageTemperatureSum"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["vernalisationRequirement"], size: int = ...
    ) -> _DynamicListBuilder[float]: ...
    @overload
    def init(
        self: Any, name: Literal["organIdsForPrimaryYield"], size: int = ...
    ) -> _DynamicListBuilder[YieldComponentBuilder]: ...
    @overload
    def init(
        self: Any, name: Literal["organIdsForSecondaryYield"], size: int = ...
    ) -> _DynamicListBuilder[YieldComponentBuilder]: ...
    @overload
    def init(
        self: Any, name: Literal["organIdsForCutting"], size: int = ...
    ) -> _DynamicListBuilder[YieldComponentBuilder]: ...
    def init(self: Any, name: str, size: int = ...) -> Any: ...
    def copy(self) -> CultivarParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> CultivarParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class CropParameters:
    @property
    def speciesParams(self) -> SpeciesParameters: ...
    @property
    def cultivarParams(self) -> CultivarParameters: ...
    @overload
    def init(self, name: Literal["speciesParams"]) -> SpeciesParameters: ...
    @overload
    def init(self, name: Literal["cultivarParams"]) -> CultivarParameters: ...
    def init(self: Any, name: str, size: int = ...) -> Any: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[CropParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        speciesParams: SpeciesParametersBuilder | dict[str, Any] | None = None,
        cultivarParams: CultivarParametersBuilder | dict[str, Any] | None = None,
    ) -> CropParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class CropParametersReader(CropParameters):
    @property
    def speciesParams(self) -> SpeciesParametersReader: ...
    @property
    def cultivarParams(self) -> CultivarParametersReader: ...
    def as_builder(self) -> CropParametersBuilder: ...

class CropParametersBuilder(CropParameters):
    @property
    def speciesParams(self) -> SpeciesParametersBuilder: ...
    @speciesParams.setter
    def speciesParams(
        self,
        value: SpeciesParameters
        | SpeciesParametersBuilder
        | SpeciesParametersReader
        | dict[str, Any],
    ) -> None: ...
    @property
    def cultivarParams(self) -> CultivarParametersBuilder: ...
    @cultivarParams.setter
    def cultivarParams(
        self,
        value: CultivarParameters
        | CultivarParametersBuilder
        | CultivarParametersReader
        | dict[str, Any],
    ) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> CropParametersBuilder: ...
    @overload
    def init(self: Any, name: Literal["speciesParams"]) -> SpeciesParametersBuilder: ...
    @overload
    def init(
        self: Any, name: Literal["cultivarParams"]
    ) -> CultivarParametersBuilder: ...
    def init(self: Any, name: str, size: int = ...) -> Any: ...
    def copy(self) -> CropParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> CropParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class CropResidueParameters:
    @property
    def params(self) -> Params.OrganicFertilization.OrganicMatterParameters: ...
    @property
    def species(self) -> str: ...
    @property
    def residueType(self) -> str: ...
    def init(
        self, name: Literal["params"]
    ) -> Params.OrganicFertilization.OrganicMatterParameters: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[CropResidueParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropResidueParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        params: Params.OrganicFertilization.OrganicMatterParametersBuilder
        | dict[str, Any]
        | None = None,
        species: str | None = None,
        residueType: str | None = None,
    ) -> CropResidueParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropResidueParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropResidueParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class CropResidueParametersReader(CropResidueParameters):
    @property
    def params(self) -> Params.OrganicFertilization.OrganicMatterParametersReader: ...
    def as_builder(self) -> CropResidueParametersBuilder: ...

class CropResidueParametersBuilder(CropResidueParameters):
    @property
    def params(self) -> Params.OrganicFertilization.OrganicMatterParametersBuilder: ...
    @params.setter
    def params(
        self,
        value: Params.OrganicFertilization.OrganicMatterParameters
        | Params.OrganicFertilization.OrganicMatterParametersBuilder
        | Params.OrganicFertilization.OrganicMatterParametersReader
        | dict[str, Any],
    ) -> None: ...
    @property
    def species(self) -> str: ...
    @species.setter
    def species(self, value: str) -> None: ...
    @property
    def residueType(self) -> str: ...
    @residueType.setter
    def residueType(self, value: str) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> CropResidueParametersBuilder: ...
    def init(
        self, name: Literal["params"]
    ) -> Params.OrganicFertilization.OrganicMatterParametersBuilder: ...
    def copy(self) -> CropResidueParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> CropResidueParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class CropSpec:
    @property
    def cropParams(self) -> CropParameters: ...
    @property
    def residueParams(self) -> CropResidueParameters: ...
    @overload
    def init(self, name: Literal["cropParams"]) -> CropParameters: ...
    @overload
    def init(self, name: Literal["residueParams"]) -> CropResidueParameters: ...
    def init(self: Any, name: str, size: int = ...) -> Any: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[CropSpecReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropSpecReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        cropParams: CropParametersBuilder | dict[str, Any] | None = None,
        residueParams: CropResidueParametersBuilder | dict[str, Any] | None = None,
    ) -> CropSpecBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropSpecReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropSpecReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class CropSpecReader(CropSpec):
    @property
    def cropParams(self) -> CropParametersReader: ...
    @property
    def residueParams(self) -> CropResidueParametersReader: ...
    def as_builder(self) -> CropSpecBuilder: ...

class CropSpecBuilder(CropSpec):
    @property
    def cropParams(self) -> CropParametersBuilder: ...
    @cropParams.setter
    def cropParams(
        self,
        value: CropParameters
        | CropParametersBuilder
        | CropParametersReader
        | dict[str, Any],
    ) -> None: ...
    @property
    def residueParams(self) -> CropResidueParametersBuilder: ...
    @residueParams.setter
    def residueParams(
        self,
        value: CropResidueParameters
        | CropResidueParametersBuilder
        | CropResidueParametersReader
        | dict[str, Any],
    ) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> CropSpecBuilder: ...
    @overload
    def init(self: Any, name: Literal["cropParams"]) -> CropParametersBuilder: ...
    @overload
    def init(
        self: Any, name: Literal["residueParams"]
    ) -> CropResidueParametersBuilder: ...
    def init(self: Any, name: str, size: int = ...) -> Any: ...
    def copy(self) -> CropSpecBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> CropSpecReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class AutomaticHarvestParameters:
    class HarvestTime(Enum):
        maturity = "maturity"
        unknown = "unknown"

    @property
    def harvestTime(self) -> AutomaticHarvestParameters.HarvestTime: ...
    @property
    def latestHarvestDOY(self) -> int: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[AutomaticHarvestParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> AutomaticHarvestParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        harvestTime: AutomaticHarvestParameters.HarvestTime
        | Literal["maturity", "unknown"]
        | None = None,
        latestHarvestDOY: int | None = None,
    ) -> AutomaticHarvestParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> AutomaticHarvestParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> AutomaticHarvestParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class AutomaticHarvestParametersReader(AutomaticHarvestParameters):
    def as_builder(self) -> AutomaticHarvestParametersBuilder: ...

class AutomaticHarvestParametersBuilder(AutomaticHarvestParameters):
    @property
    def harvestTime(self) -> AutomaticHarvestParameters.HarvestTime: ...
    @harvestTime.setter
    def harvestTime(
        self,
        value: AutomaticHarvestParameters.HarvestTime | Literal["maturity", "unknown"],
    ) -> None: ...
    @property
    def latestHarvestDOY(self) -> int: ...
    @latestHarvestDOY.setter
    def latestHarvestDOY(self, value: int) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> AutomaticHarvestParametersBuilder: ...
    def copy(self) -> AutomaticHarvestParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> AutomaticHarvestParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class NMinCropParameters:
    @property
    def samplingDepth(self) -> float: ...
    @property
    def nTarget(self) -> float: ...
    @property
    def nTarget30(self) -> float: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[NMinCropParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> NMinCropParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        samplingDepth: float | None = None,
        nTarget: float | None = None,
        nTarget30: float | None = None,
    ) -> NMinCropParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> NMinCropParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> NMinCropParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class NMinCropParametersReader(NMinCropParameters):
    def as_builder(self) -> NMinCropParametersBuilder: ...

class NMinCropParametersBuilder(NMinCropParameters):
    @property
    def samplingDepth(self) -> float: ...
    @samplingDepth.setter
    def samplingDepth(self, value: float) -> None: ...
    @property
    def nTarget(self) -> float: ...
    @nTarget.setter
    def nTarget(self, value: float) -> None: ...
    @property
    def nTarget30(self) -> float: ...
    @nTarget30.setter
    def nTarget30(self, value: float) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> NMinCropParametersBuilder: ...
    def copy(self) -> NMinCropParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> NMinCropParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class NMinApplicationParameters:
    @property
    def min(self) -> float: ...
    @property
    def max(self) -> float: ...
    @property
    def delayInDays(self) -> int: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[NMinApplicationParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> NMinApplicationParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        min: float | None = None,
        max: float | None = None,
        delayInDays: int | None = None,
    ) -> NMinApplicationParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> NMinApplicationParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> NMinApplicationParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class NMinApplicationParametersReader(NMinApplicationParameters):
    def as_builder(self) -> NMinApplicationParametersBuilder: ...

class NMinApplicationParametersBuilder(NMinApplicationParameters):
    @property
    def min(self) -> float: ...
    @min.setter
    def min(self, value: float) -> None: ...
    @property
    def max(self) -> float: ...
    @max.setter
    def max(self, value: float) -> None: ...
    @property
    def delayInDays(self) -> int: ...
    @delayInDays.setter
    def delayInDays(self, value: int) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> NMinApplicationParametersBuilder: ...
    def copy(self) -> NMinApplicationParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> NMinApplicationParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class SoilParameters:
    @property
    def soilSandContent(self) -> float: ...
    @property
    def soilClayContent(self) -> float: ...
    @property
    def soilpH(self) -> float: ...
    @property
    def soilStoneContent(self) -> float: ...
    @property
    def lambda_(self) -> float: ...
    @property
    def fieldCapacity(self) -> float: ...
    @property
    def saturation(self) -> float: ...
    @property
    def permanentWiltingPoint(self) -> float: ...
    @property
    def soilTexture(self) -> str: ...
    @property
    def soilAmmonium(self) -> float: ...
    @property
    def soilNitrate(self) -> float: ...
    @property
    def soilCNRatio(self) -> float: ...
    @property
    def soilMoisturePercentFC(self) -> float: ...
    @property
    def soilRawDensity(self) -> float: ...
    @property
    def soilBulkDensity(self) -> float: ...
    @property
    def soilOrganicCarbon(self) -> float: ...
    @property
    def soilOrganicMatter(self) -> float: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SoilParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        soilSandContent: float | None = None,
        soilClayContent: float | None = None,
        soilpH: float | None = None,
        soilStoneContent: float | None = None,
        lambda_: float | None = None,
        fieldCapacity: float | None = None,
        saturation: float | None = None,
        permanentWiltingPoint: float | None = None,
        soilTexture: str | None = None,
        soilAmmonium: float | None = None,
        soilNitrate: float | None = None,
        soilCNRatio: float | None = None,
        soilMoisturePercentFC: float | None = None,
        soilRawDensity: float | None = None,
        soilBulkDensity: float | None = None,
        soilOrganicCarbon: float | None = None,
        soilOrganicMatter: float | None = None,
    ) -> SoilParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SoilParametersReader(SoilParameters):
    def as_builder(self) -> SoilParametersBuilder: ...

class SoilParametersBuilder(SoilParameters):
    @property
    def soilSandContent(self) -> float: ...
    @soilSandContent.setter
    def soilSandContent(self, value: float) -> None: ...
    @property
    def soilClayContent(self) -> float: ...
    @soilClayContent.setter
    def soilClayContent(self, value: float) -> None: ...
    @property
    def soilpH(self) -> float: ...
    @soilpH.setter
    def soilpH(self, value: float) -> None: ...
    @property
    def soilStoneContent(self) -> float: ...
    @soilStoneContent.setter
    def soilStoneContent(self, value: float) -> None: ...
    @property
    def lambda_(self) -> float: ...
    @lambda_.setter
    def lambda_(self, value: float) -> None: ...
    @property
    def fieldCapacity(self) -> float: ...
    @fieldCapacity.setter
    def fieldCapacity(self, value: float) -> None: ...
    @property
    def saturation(self) -> float: ...
    @saturation.setter
    def saturation(self, value: float) -> None: ...
    @property
    def permanentWiltingPoint(self) -> float: ...
    @permanentWiltingPoint.setter
    def permanentWiltingPoint(self, value: float) -> None: ...
    @property
    def soilTexture(self) -> str: ...
    @soilTexture.setter
    def soilTexture(self, value: str) -> None: ...
    @property
    def soilAmmonium(self) -> float: ...
    @soilAmmonium.setter
    def soilAmmonium(self, value: float) -> None: ...
    @property
    def soilNitrate(self) -> float: ...
    @soilNitrate.setter
    def soilNitrate(self, value: float) -> None: ...
    @property
    def soilCNRatio(self) -> float: ...
    @soilCNRatio.setter
    def soilCNRatio(self, value: float) -> None: ...
    @property
    def soilMoisturePercentFC(self) -> float: ...
    @soilMoisturePercentFC.setter
    def soilMoisturePercentFC(self, value: float) -> None: ...
    @property
    def soilRawDensity(self) -> float: ...
    @soilRawDensity.setter
    def soilRawDensity(self, value: float) -> None: ...
    @property
    def soilBulkDensity(self) -> float: ...
    @soilBulkDensity.setter
    def soilBulkDensity(self, value: float) -> None: ...
    @property
    def soilOrganicCarbon(self) -> float: ...
    @soilOrganicCarbon.setter
    def soilOrganicCarbon(self, value: float) -> None: ...
    @property
    def soilOrganicMatter(self) -> float: ...
    @soilOrganicMatter.setter
    def soilOrganicMatter(self, value: float) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> SoilParametersBuilder: ...
    def copy(self) -> SoilParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SoilParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class AutomaticIrrigationParameters:
    @property
    def params(self) -> Params.Irrigation.Parameters: ...
    @property
    def amount(self) -> float: ...
    @property
    def threshold(self) -> float: ...
    def init(self, name: Literal["params"]) -> Params.Irrigation.Parameters: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[AutomaticIrrigationParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> AutomaticIrrigationParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        params: Params.Irrigation.ParametersBuilder | dict[str, Any] | None = None,
        amount: float | None = None,
        threshold: float | None = None,
    ) -> AutomaticIrrigationParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> AutomaticIrrigationParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> AutomaticIrrigationParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class AutomaticIrrigationParametersReader(AutomaticIrrigationParameters):
    @property
    def params(self) -> Params.Irrigation.ParametersReader: ...
    def as_builder(self) -> AutomaticIrrigationParametersBuilder: ...

class AutomaticIrrigationParametersBuilder(AutomaticIrrigationParameters):
    @property
    def params(self) -> Params.Irrigation.ParametersBuilder: ...
    @params.setter
    def params(
        self,
        value: Params.Irrigation.Parameters
        | Params.Irrigation.ParametersBuilder
        | Params.Irrigation.ParametersReader
        | dict[str, Any],
    ) -> None: ...
    @property
    def amount(self) -> float: ...
    @amount.setter
    def amount(self, value: float) -> None: ...
    @property
    def threshold(self) -> float: ...
    @threshold.setter
    def threshold(self, value: float) -> None: ...
    @staticmethod
    def from_dict(
        dictionary: dict[str, Any],
    ) -> AutomaticIrrigationParametersBuilder: ...
    def init(self, name: Literal["params"]) -> Params.Irrigation.ParametersBuilder: ...
    def copy(self) -> AutomaticIrrigationParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> AutomaticIrrigationParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class SiteParameters:
    @property
    def latitude(self) -> float: ...
    @property
    def slope(self) -> float: ...
    @property
    def heightNN(self) -> float: ...
    @property
    def groundwaterDepth(self) -> float: ...
    @property
    def soilCNRatio(self) -> float: ...
    @property
    def drainageCoeff(self) -> float: ...
    @property
    def vqNDeposition(self) -> float: ...
    @property
    def maxEffectiveRootingDepth(self) -> float: ...
    @property
    def impenetrableLayerDepth(self) -> float: ...
    @property
    def soilSpecificHumusBalanceCorrection(self) -> float: ...
    @property
    def soilParameters(self) -> Sequence[SoilParameters]: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SiteParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SiteParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        latitude: float | None = None,
        slope: float | None = None,
        heightNN: float | None = None,
        groundwaterDepth: float | None = None,
        soilCNRatio: float | None = None,
        drainageCoeff: float | None = None,
        vqNDeposition: float | None = None,
        maxEffectiveRootingDepth: float | None = None,
        impenetrableLayerDepth: float | None = None,
        soilSpecificHumusBalanceCorrection: float | None = None,
        soilParameters: Sequence[SoilParametersBuilder]
        | Sequence[dict[str, Any]]
        | None = None,
    ) -> SiteParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SiteParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SiteParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SiteParametersReader(SiteParameters):
    @property
    def soilParameters(self) -> Sequence[SoilParametersReader]: ...
    def as_builder(self) -> SiteParametersBuilder: ...

class SiteParametersBuilder(SiteParameters):
    @property
    def latitude(self) -> float: ...
    @latitude.setter
    def latitude(self, value: float) -> None: ...
    @property
    def slope(self) -> float: ...
    @slope.setter
    def slope(self, value: float) -> None: ...
    @property
    def heightNN(self) -> float: ...
    @heightNN.setter
    def heightNN(self, value: float) -> None: ...
    @property
    def groundwaterDepth(self) -> float: ...
    @groundwaterDepth.setter
    def groundwaterDepth(self, value: float) -> None: ...
    @property
    def soilCNRatio(self) -> float: ...
    @soilCNRatio.setter
    def soilCNRatio(self, value: float) -> None: ...
    @property
    def drainageCoeff(self) -> float: ...
    @drainageCoeff.setter
    def drainageCoeff(self, value: float) -> None: ...
    @property
    def vqNDeposition(self) -> float: ...
    @vqNDeposition.setter
    def vqNDeposition(self, value: float) -> None: ...
    @property
    def maxEffectiveRootingDepth(self) -> float: ...
    @maxEffectiveRootingDepth.setter
    def maxEffectiveRootingDepth(self, value: float) -> None: ...
    @property
    def impenetrableLayerDepth(self) -> float: ...
    @impenetrableLayerDepth.setter
    def impenetrableLayerDepth(self, value: float) -> None: ...
    @property
    def soilSpecificHumusBalanceCorrection(self) -> float: ...
    @soilSpecificHumusBalanceCorrection.setter
    def soilSpecificHumusBalanceCorrection(self, value: float) -> None: ...
    @property
    def soilParameters(self) -> Sequence[SoilParametersBuilder]: ...
    @soilParameters.setter
    def soilParameters(
        self,
        value: Sequence[SoilParameters | SoilParametersBuilder | SoilParametersReader]
        | Sequence[dict[str, Any]],
    ) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> SiteParametersBuilder: ...
    def init(
        self, name: Literal["soilParameters"], size: int = ...
    ) -> _DynamicListBuilder[SoilParametersBuilder]: ...
    def copy(self) -> SiteParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SiteParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class EnvironmentParameters:
    class YearToValue:
        @property
        def year(self) -> int: ...
        @property
        def value(self) -> float: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[EnvironmentParameters.YearToValueReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> EnvironmentParameters.YearToValueReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            year: int | None = None,
            value: float | None = None,
        ) -> EnvironmentParameters.YearToValueBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> EnvironmentParameters.YearToValueReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> EnvironmentParameters.YearToValueReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class YearToValueReader(EnvironmentParameters.YearToValue):
        def as_builder(self) -> EnvironmentParameters.YearToValueBuilder: ...

    class YearToValueBuilder(EnvironmentParameters.YearToValue):
        @property
        def year(self) -> int: ...
        @year.setter
        def year(self, value: int) -> None: ...
        @property
        def value(self) -> float: ...
        @value.setter
        def value(self, value: float) -> None: ...
        @staticmethod
        def from_dict(
            dictionary: dict[str, Any],
        ) -> EnvironmentParameters.YearToValueBuilder: ...
        def copy(self) -> EnvironmentParameters.YearToValueBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> EnvironmentParameters.YearToValueReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    @property
    def albedo(self) -> float: ...
    @property
    def atmosphericCO2(self) -> float: ...
    @property
    def atmosphericCO2s(self) -> Sequence[EnvironmentParameters.YearToValue]: ...
    @property
    def atmosphericO3(self) -> float: ...
    @property
    def atmosphericO3s(self) -> Sequence[EnvironmentParameters.YearToValue]: ...
    @property
    def windSpeedHeight(self) -> float: ...
    @property
    def leachingDepth(self) -> float: ...
    @property
    def timeStep(self) -> float: ...
    @property
    def maxGroundwaterDepth(self) -> float: ...
    @property
    def minGroundwaterDepth(self) -> float: ...
    @property
    def minGroundwaterDepthMonth(self) -> int: ...
    @property
    def rcp(self) -> RCP: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[EnvironmentParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> EnvironmentParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        albedo: float | None = None,
        atmosphericCO2: float | None = None,
        atmosphericCO2s: Sequence[EnvironmentParameters.YearToValueBuilder]
        | Sequence[dict[str, Any]]
        | None = None,
        atmosphericO3: float | None = None,
        atmosphericO3s: Sequence[EnvironmentParameters.YearToValueBuilder]
        | Sequence[dict[str, Any]]
        | None = None,
        windSpeedHeight: float | None = None,
        leachingDepth: float | None = None,
        timeStep: float | None = None,
        maxGroundwaterDepth: float | None = None,
        minGroundwaterDepth: float | None = None,
        minGroundwaterDepthMonth: int | None = None,
        rcp: RCP
        | Literal["rcp19", "rcp26", "rcp34", "rcp45", "rcp60", "rcp70", "rcp85"]
        | None = None,
    ) -> EnvironmentParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> EnvironmentParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> EnvironmentParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class EnvironmentParametersReader(EnvironmentParameters):
    @property
    def atmosphericCO2s(self) -> Sequence[EnvironmentParameters.YearToValueReader]: ...
    @property
    def atmosphericO3s(self) -> Sequence[EnvironmentParameters.YearToValueReader]: ...
    def as_builder(self) -> EnvironmentParametersBuilder: ...

class EnvironmentParametersBuilder(EnvironmentParameters):
    @property
    def albedo(self) -> float: ...
    @albedo.setter
    def albedo(self, value: float) -> None: ...
    @property
    def atmosphericCO2(self) -> float: ...
    @atmosphericCO2.setter
    def atmosphericCO2(self, value: float) -> None: ...
    @property
    def atmosphericCO2s(self) -> Sequence[EnvironmentParameters.YearToValueBuilder]: ...
    @atmosphericCO2s.setter
    def atmosphericCO2s(
        self,
        value: Sequence[
            EnvironmentParameters.YearToValue
            | EnvironmentParameters.YearToValueBuilder
            | EnvironmentParameters.YearToValueReader
        ]
        | Sequence[dict[str, Any]],
    ) -> None: ...
    @property
    def atmosphericO3(self) -> float: ...
    @atmosphericO3.setter
    def atmosphericO3(self, value: float) -> None: ...
    @property
    def atmosphericO3s(self) -> Sequence[EnvironmentParameters.YearToValueBuilder]: ...
    @atmosphericO3s.setter
    def atmosphericO3s(
        self,
        value: Sequence[
            EnvironmentParameters.YearToValue
            | EnvironmentParameters.YearToValueBuilder
            | EnvironmentParameters.YearToValueReader
        ]
        | Sequence[dict[str, Any]],
    ) -> None: ...
    @property
    def windSpeedHeight(self) -> float: ...
    @windSpeedHeight.setter
    def windSpeedHeight(self, value: float) -> None: ...
    @property
    def leachingDepth(self) -> float: ...
    @leachingDepth.setter
    def leachingDepth(self, value: float) -> None: ...
    @property
    def timeStep(self) -> float: ...
    @timeStep.setter
    def timeStep(self, value: float) -> None: ...
    @property
    def maxGroundwaterDepth(self) -> float: ...
    @maxGroundwaterDepth.setter
    def maxGroundwaterDepth(self, value: float) -> None: ...
    @property
    def minGroundwaterDepth(self) -> float: ...
    @minGroundwaterDepth.setter
    def minGroundwaterDepth(self, value: float) -> None: ...
    @property
    def minGroundwaterDepthMonth(self) -> int: ...
    @minGroundwaterDepthMonth.setter
    def minGroundwaterDepthMonth(self, value: int) -> None: ...
    @property
    def rcp(self) -> RCP: ...
    @rcp.setter
    def rcp(
        self,
        value: RCP
        | Literal["rcp19", "rcp26", "rcp34", "rcp45", "rcp60", "rcp70", "rcp85"],
    ) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> EnvironmentParametersBuilder: ...
    @overload
    def init(
        self: Any, name: Literal["atmosphericCO2s"], size: int = ...
    ) -> _DynamicListBuilder[EnvironmentParameters.YearToValueBuilder]: ...
    @overload
    def init(
        self: Any, name: Literal["atmosphericO3s"], size: int = ...
    ) -> _DynamicListBuilder[EnvironmentParameters.YearToValueBuilder]: ...
    def init(self: Any, name: str, size: int = ...) -> Any: ...
    def copy(self) -> EnvironmentParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> EnvironmentParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class MeasuredGroundwaterTableInformation:
    class DateToValue:
        @property
        def date(self) -> Date: ...
        @property
        def value(self) -> float: ...
        def init(self, name: Literal["date"]) -> Date: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[MeasuredGroundwaterTableInformation.DateToValueReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> MeasuredGroundwaterTableInformation.DateToValueReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            date: DateBuilder | dict[str, Any] | None = None,
            value: float | None = None,
        ) -> MeasuredGroundwaterTableInformation.DateToValueBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> MeasuredGroundwaterTableInformation.DateToValueReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> MeasuredGroundwaterTableInformation.DateToValueReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class DateToValueReader(MeasuredGroundwaterTableInformation.DateToValue):
        @property
        def date(self) -> DateReader: ...
        def as_builder(
            self,
        ) -> MeasuredGroundwaterTableInformation.DateToValueBuilder: ...

    class DateToValueBuilder(MeasuredGroundwaterTableInformation.DateToValue):
        @property
        def date(self) -> DateBuilder: ...
        @date.setter
        def date(
            self, value: Date | DateBuilder | DateReader | dict[str, Any]
        ) -> None: ...
        @property
        def value(self) -> float: ...
        @value.setter
        def value(self, value: float) -> None: ...
        @staticmethod
        def from_dict(
            dictionary: dict[str, Any],
        ) -> MeasuredGroundwaterTableInformation.DateToValueBuilder: ...
        def init(self, name: Literal["date"]) -> DateBuilder: ...
        def copy(self) -> MeasuredGroundwaterTableInformation.DateToValueBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(
            self,
        ) -> MeasuredGroundwaterTableInformation.DateToValueReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    @property
    def groundwaterInformationAvailable(self) -> bool: ...
    @property
    def groundwaterInfo(
        self,
    ) -> Sequence[MeasuredGroundwaterTableInformation.DateToValue]: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[MeasuredGroundwaterTableInformationReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> MeasuredGroundwaterTableInformationReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        groundwaterInformationAvailable: bool | None = None,
        groundwaterInfo: Sequence[
            MeasuredGroundwaterTableInformation.DateToValueBuilder
        ]
        | Sequence[dict[str, Any]]
        | None = None,
    ) -> MeasuredGroundwaterTableInformationBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> MeasuredGroundwaterTableInformationReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> MeasuredGroundwaterTableInformationReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class MeasuredGroundwaterTableInformationReader(MeasuredGroundwaterTableInformation):
    @property
    def groundwaterInfo(
        self,
    ) -> Sequence[MeasuredGroundwaterTableInformation.DateToValueReader]: ...
    def as_builder(self) -> MeasuredGroundwaterTableInformationBuilder: ...

class MeasuredGroundwaterTableInformationBuilder(MeasuredGroundwaterTableInformation):
    @property
    def groundwaterInformationAvailable(self) -> bool: ...
    @groundwaterInformationAvailable.setter
    def groundwaterInformationAvailable(self, value: bool) -> None: ...
    @property
    def groundwaterInfo(
        self,
    ) -> Sequence[MeasuredGroundwaterTableInformation.DateToValueBuilder]: ...
    @groundwaterInfo.setter
    def groundwaterInfo(
        self,
        value: Sequence[
            MeasuredGroundwaterTableInformation.DateToValue
            | MeasuredGroundwaterTableInformation.DateToValueBuilder
            | MeasuredGroundwaterTableInformation.DateToValueReader
        ]
        | Sequence[dict[str, Any]],
    ) -> None: ...
    @staticmethod
    def from_dict(
        dictionary: dict[str, Any],
    ) -> MeasuredGroundwaterTableInformationBuilder: ...
    def init(
        self, name: Literal["groundwaterInfo"], size: int = ...
    ) -> _DynamicListBuilder[
        MeasuredGroundwaterTableInformation.DateToValueBuilder
    ]: ...
    def copy(self) -> MeasuredGroundwaterTableInformationBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> MeasuredGroundwaterTableInformationReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class SimulationParameters:
    @property
    def startDate(self) -> Date: ...
    @property
    def endDate(self) -> Date: ...
    @property
    def nitrogenResponseOn(self) -> bool: ...
    @property
    def waterDeficitResponseOn(self) -> bool: ...
    @property
    def emergenceFloodingControlOn(self) -> bool: ...
    @property
    def emergenceMoistureControlOn(self) -> bool: ...
    @property
    def frostKillOn(self) -> bool: ...
    @property
    def useAutomaticIrrigation(self) -> bool: ...
    @property
    def autoIrrigationParams(self) -> AutomaticIrrigationParameters: ...
    @property
    def useNMinMineralFertilisingMethod(self) -> bool: ...
    @property
    def nMinFertiliserPartition(self) -> Params.MineralFertilization.Parameters: ...
    @property
    def nMinApplicationParams(self) -> NMinApplicationParameters: ...
    @property
    def useSecondaryYields(self) -> bool: ...
    @property
    def useAutomaticHarvestTrigger(self) -> bool: ...
    @property
    def numberOfLayers(self) -> int: ...
    @property
    def layerThickness(self) -> float: ...
    @property
    def startPVIndex(self) -> int: ...
    @property
    def julianDayAutomaticFertilising(self) -> int: ...
    @overload
    def init(self, name: Literal["startDate"]) -> Date: ...
    @overload
    def init(self, name: Literal["endDate"]) -> Date: ...
    @overload
    def init(
        self, name: Literal["autoIrrigationParams"]
    ) -> AutomaticIrrigationParameters: ...
    @overload
    def init(
        self, name: Literal["nMinFertiliserPartition"]
    ) -> Params.MineralFertilization.Parameters: ...
    @overload
    def init(
        self, name: Literal["nMinApplicationParams"]
    ) -> NMinApplicationParameters: ...
    def init(self: Any, name: str, size: int = ...) -> Any: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SimulationParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SimulationParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        startDate: DateBuilder | dict[str, Any] | None = None,
        endDate: DateBuilder | dict[str, Any] | None = None,
        nitrogenResponseOn: bool | None = None,
        waterDeficitResponseOn: bool | None = None,
        emergenceFloodingControlOn: bool | None = None,
        emergenceMoistureControlOn: bool | None = None,
        frostKillOn: bool | None = None,
        useAutomaticIrrigation: bool | None = None,
        autoIrrigationParams: AutomaticIrrigationParametersBuilder
        | dict[str, Any]
        | None = None,
        useNMinMineralFertilisingMethod: bool | None = None,
        nMinFertiliserPartition: Params.MineralFertilization.ParametersBuilder
        | dict[str, Any]
        | None = None,
        nMinApplicationParams: NMinApplicationParametersBuilder
        | dict[str, Any]
        | None = None,
        useSecondaryYields: bool | None = None,
        useAutomaticHarvestTrigger: bool | None = None,
        numberOfLayers: int | None = None,
        layerThickness: float | None = None,
        startPVIndex: int | None = None,
        julianDayAutomaticFertilising: int | None = None,
    ) -> SimulationParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SimulationParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SimulationParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SimulationParametersReader(SimulationParameters):
    @property
    def startDate(self) -> DateReader: ...
    @property
    def endDate(self) -> DateReader: ...
    @property
    def autoIrrigationParams(self) -> AutomaticIrrigationParametersReader: ...
    @property
    def nMinFertiliserPartition(
        self,
    ) -> Params.MineralFertilization.ParametersReader: ...
    @property
    def nMinApplicationParams(self) -> NMinApplicationParametersReader: ...
    def as_builder(self) -> SimulationParametersBuilder: ...

class SimulationParametersBuilder(SimulationParameters):
    @property
    def startDate(self) -> DateBuilder: ...
    @startDate.setter
    def startDate(
        self, value: Date | DateBuilder | DateReader | dict[str, Any]
    ) -> None: ...
    @property
    def endDate(self) -> DateBuilder: ...
    @endDate.setter
    def endDate(
        self, value: Date | DateBuilder | DateReader | dict[str, Any]
    ) -> None: ...
    @property
    def nitrogenResponseOn(self) -> bool: ...
    @nitrogenResponseOn.setter
    def nitrogenResponseOn(self, value: bool) -> None: ...
    @property
    def waterDeficitResponseOn(self) -> bool: ...
    @waterDeficitResponseOn.setter
    def waterDeficitResponseOn(self, value: bool) -> None: ...
    @property
    def emergenceFloodingControlOn(self) -> bool: ...
    @emergenceFloodingControlOn.setter
    def emergenceFloodingControlOn(self, value: bool) -> None: ...
    @property
    def emergenceMoistureControlOn(self) -> bool: ...
    @emergenceMoistureControlOn.setter
    def emergenceMoistureControlOn(self, value: bool) -> None: ...
    @property
    def frostKillOn(self) -> bool: ...
    @frostKillOn.setter
    def frostKillOn(self, value: bool) -> None: ...
    @property
    def useAutomaticIrrigation(self) -> bool: ...
    @useAutomaticIrrigation.setter
    def useAutomaticIrrigation(self, value: bool) -> None: ...
    @property
    def autoIrrigationParams(self) -> AutomaticIrrigationParametersBuilder: ...
    @autoIrrigationParams.setter
    def autoIrrigationParams(
        self,
        value: AutomaticIrrigationParameters
        | AutomaticIrrigationParametersBuilder
        | AutomaticIrrigationParametersReader
        | dict[str, Any],
    ) -> None: ...
    @property
    def useNMinMineralFertilisingMethod(self) -> bool: ...
    @useNMinMineralFertilisingMethod.setter
    def useNMinMineralFertilisingMethod(self, value: bool) -> None: ...
    @property
    def nMinFertiliserPartition(
        self,
    ) -> Params.MineralFertilization.ParametersBuilder: ...
    @nMinFertiliserPartition.setter
    def nMinFertiliserPartition(
        self,
        value: Params.MineralFertilization.Parameters
        | Params.MineralFertilization.ParametersBuilder
        | Params.MineralFertilization.ParametersReader
        | dict[str, Any],
    ) -> None: ...
    @property
    def nMinApplicationParams(self) -> NMinApplicationParametersBuilder: ...
    @nMinApplicationParams.setter
    def nMinApplicationParams(
        self,
        value: NMinApplicationParameters
        | NMinApplicationParametersBuilder
        | NMinApplicationParametersReader
        | dict[str, Any],
    ) -> None: ...
    @property
    def useSecondaryYields(self) -> bool: ...
    @useSecondaryYields.setter
    def useSecondaryYields(self, value: bool) -> None: ...
    @property
    def useAutomaticHarvestTrigger(self) -> bool: ...
    @useAutomaticHarvestTrigger.setter
    def useAutomaticHarvestTrigger(self, value: bool) -> None: ...
    @property
    def numberOfLayers(self) -> int: ...
    @numberOfLayers.setter
    def numberOfLayers(self, value: int) -> None: ...
    @property
    def layerThickness(self) -> float: ...
    @layerThickness.setter
    def layerThickness(self, value: float) -> None: ...
    @property
    def startPVIndex(self) -> int: ...
    @startPVIndex.setter
    def startPVIndex(self, value: int) -> None: ...
    @property
    def julianDayAutomaticFertilising(self) -> int: ...
    @julianDayAutomaticFertilising.setter
    def julianDayAutomaticFertilising(self, value: int) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> SimulationParametersBuilder: ...
    @overload
    def init(self: Any, name: Literal["startDate"]) -> DateBuilder: ...
    @overload
    def init(self: Any, name: Literal["endDate"]) -> DateBuilder: ...
    @overload
    def init(
        self: Any, name: Literal["autoIrrigationParams"]
    ) -> AutomaticIrrigationParametersBuilder: ...
    @overload
    def init(
        self: Any, name: Literal["nMinFertiliserPartition"]
    ) -> Params.MineralFertilization.ParametersBuilder: ...
    @overload
    def init(
        self: Any, name: Literal["nMinApplicationParams"]
    ) -> NMinApplicationParametersBuilder: ...
    def init(self: Any, name: str, size: int = ...) -> Any: ...
    def copy(self) -> SimulationParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SimulationParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class CropModuleParameters:
    @property
    def canopyReflectionCoefficient(self) -> float: ...
    @property
    def referenceMaxAssimilationRate(self) -> float: ...
    @property
    def referenceLeafAreaIndex(self) -> float: ...
    @property
    def maintenanceRespirationParameter1(self) -> float: ...
    @property
    def maintenanceRespirationParameter2(self) -> float: ...
    @property
    def minimumNConcentrationRoot(self) -> float: ...
    @property
    def minimumAvailableN(self) -> float: ...
    @property
    def referenceAlbedo(self) -> float: ...
    @property
    def stomataConductanceAlpha(self) -> float: ...
    @property
    def saturationBeta(self) -> float: ...
    @property
    def growthRespirationRedux(self) -> float: ...
    @property
    def maxCropNDemand(self) -> float: ...
    @property
    def growthRespirationParameter1(self) -> float: ...
    @property
    def growthRespirationParameter2(self) -> float: ...
    @property
    def tortuosity(self) -> float: ...
    @property
    def adjustRootDepthForSoilProps(self) -> bool: ...
    @property
    def experimentalEnablePhenologyWangEngelTemperatureResponse(self) -> bool: ...
    @property
    def experimentalEnablePhotosynthesisWangEngelTemperatureResponse(self) -> bool: ...
    @property
    def experimentalEnableHourlyFvCBPhotosynthesis(self) -> bool: ...
    @property
    def experimentalEnableTResponseLeafExpansion(self) -> bool: ...
    @property
    def experimentalDisableDailyRootBiomassToSoil(self) -> bool: ...
    @property
    def enableVernalisationFactorFix(self) -> bool: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[CropModuleParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropModuleParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        canopyReflectionCoefficient: float | None = None,
        referenceMaxAssimilationRate: float | None = None,
        referenceLeafAreaIndex: float | None = None,
        maintenanceRespirationParameter1: float | None = None,
        maintenanceRespirationParameter2: float | None = None,
        minimumNConcentrationRoot: float | None = None,
        minimumAvailableN: float | None = None,
        referenceAlbedo: float | None = None,
        stomataConductanceAlpha: float | None = None,
        saturationBeta: float | None = None,
        growthRespirationRedux: float | None = None,
        maxCropNDemand: float | None = None,
        growthRespirationParameter1: float | None = None,
        growthRespirationParameter2: float | None = None,
        tortuosity: float | None = None,
        adjustRootDepthForSoilProps: bool | None = None,
        experimentalEnablePhenologyWangEngelTemperatureResponse: bool | None = None,
        experimentalEnablePhotosynthesisWangEngelTemperatureResponse: bool
        | None = None,
        experimentalEnableHourlyFvCBPhotosynthesis: bool | None = None,
        experimentalEnableTResponseLeafExpansion: bool | None = None,
        experimentalDisableDailyRootBiomassToSoil: bool | None = None,
        enableVernalisationFactorFix: bool | None = None,
    ) -> CropModuleParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropModuleParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> CropModuleParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class CropModuleParametersReader(CropModuleParameters):
    def as_builder(self) -> CropModuleParametersBuilder: ...

class CropModuleParametersBuilder(CropModuleParameters):
    @property
    def canopyReflectionCoefficient(self) -> float: ...
    @canopyReflectionCoefficient.setter
    def canopyReflectionCoefficient(self, value: float) -> None: ...
    @property
    def referenceMaxAssimilationRate(self) -> float: ...
    @referenceMaxAssimilationRate.setter
    def referenceMaxAssimilationRate(self, value: float) -> None: ...
    @property
    def referenceLeafAreaIndex(self) -> float: ...
    @referenceLeafAreaIndex.setter
    def referenceLeafAreaIndex(self, value: float) -> None: ...
    @property
    def maintenanceRespirationParameter1(self) -> float: ...
    @maintenanceRespirationParameter1.setter
    def maintenanceRespirationParameter1(self, value: float) -> None: ...
    @property
    def maintenanceRespirationParameter2(self) -> float: ...
    @maintenanceRespirationParameter2.setter
    def maintenanceRespirationParameter2(self, value: float) -> None: ...
    @property
    def minimumNConcentrationRoot(self) -> float: ...
    @minimumNConcentrationRoot.setter
    def minimumNConcentrationRoot(self, value: float) -> None: ...
    @property
    def minimumAvailableN(self) -> float: ...
    @minimumAvailableN.setter
    def minimumAvailableN(self, value: float) -> None: ...
    @property
    def referenceAlbedo(self) -> float: ...
    @referenceAlbedo.setter
    def referenceAlbedo(self, value: float) -> None: ...
    @property
    def stomataConductanceAlpha(self) -> float: ...
    @stomataConductanceAlpha.setter
    def stomataConductanceAlpha(self, value: float) -> None: ...
    @property
    def saturationBeta(self) -> float: ...
    @saturationBeta.setter
    def saturationBeta(self, value: float) -> None: ...
    @property
    def growthRespirationRedux(self) -> float: ...
    @growthRespirationRedux.setter
    def growthRespirationRedux(self, value: float) -> None: ...
    @property
    def maxCropNDemand(self) -> float: ...
    @maxCropNDemand.setter
    def maxCropNDemand(self, value: float) -> None: ...
    @property
    def growthRespirationParameter1(self) -> float: ...
    @growthRespirationParameter1.setter
    def growthRespirationParameter1(self, value: float) -> None: ...
    @property
    def growthRespirationParameter2(self) -> float: ...
    @growthRespirationParameter2.setter
    def growthRespirationParameter2(self, value: float) -> None: ...
    @property
    def tortuosity(self) -> float: ...
    @tortuosity.setter
    def tortuosity(self, value: float) -> None: ...
    @property
    def adjustRootDepthForSoilProps(self) -> bool: ...
    @adjustRootDepthForSoilProps.setter
    def adjustRootDepthForSoilProps(self, value: bool) -> None: ...
    @property
    def experimentalEnablePhenologyWangEngelTemperatureResponse(self) -> bool: ...
    @experimentalEnablePhenologyWangEngelTemperatureResponse.setter
    def experimentalEnablePhenologyWangEngelTemperatureResponse(
        self, value: bool
    ) -> None: ...
    @property
    def experimentalEnablePhotosynthesisWangEngelTemperatureResponse(self) -> bool: ...
    @experimentalEnablePhotosynthesisWangEngelTemperatureResponse.setter
    def experimentalEnablePhotosynthesisWangEngelTemperatureResponse(
        self, value: bool
    ) -> None: ...
    @property
    def experimentalEnableHourlyFvCBPhotosynthesis(self) -> bool: ...
    @experimentalEnableHourlyFvCBPhotosynthesis.setter
    def experimentalEnableHourlyFvCBPhotosynthesis(self, value: bool) -> None: ...
    @property
    def experimentalEnableTResponseLeafExpansion(self) -> bool: ...
    @experimentalEnableTResponseLeafExpansion.setter
    def experimentalEnableTResponseLeafExpansion(self, value: bool) -> None: ...
    @property
    def experimentalDisableDailyRootBiomassToSoil(self) -> bool: ...
    @experimentalDisableDailyRootBiomassToSoil.setter
    def experimentalDisableDailyRootBiomassToSoil(self, value: bool) -> None: ...
    @property
    def enableVernalisationFactorFix(self) -> bool: ...
    @enableVernalisationFactorFix.setter
    def enableVernalisationFactorFix(self, value: bool) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> CropModuleParametersBuilder: ...
    def copy(self) -> CropModuleParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> CropModuleParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class SoilMoistureModuleParameters:
    @property
    def criticalMoistureDepth(self) -> float: ...
    @property
    def saturatedHydraulicConductivity(self) -> float: ...
    @property
    def surfaceRoughness(self) -> float: ...
    @property
    def groundwaterDischarge(self) -> float: ...
    @property
    def hydraulicConductivityRedux(self) -> float: ...
    @property
    def snowAccumulationTresholdTemperature(self) -> float: ...
    @property
    def kcFactor(self) -> float: ...
    @property
    def temperatureLimitForLiquidWater(self) -> float: ...
    @property
    def correctionSnow(self) -> float: ...
    @property
    def correctionRain(self) -> float: ...
    @property
    def snowMaxAdditionalDensity(self) -> float: ...
    @property
    def newSnowDensityMin(self) -> float: ...
    @property
    def snowRetentionCapacityMin(self) -> float: ...
    @property
    def refreezeParameter1(self) -> float: ...
    @property
    def refreezeParameter2(self) -> float: ...
    @property
    def refreezeTemperature(self) -> float: ...
    @property
    def snowMeltTemperature(self) -> float: ...
    @property
    def snowPacking(self) -> float: ...
    @property
    def snowRetentionCapacityMax(self) -> float: ...
    @property
    def evaporationZeta(self) -> float: ...
    @property
    def xsaCriticalSoilMoisture(self) -> float: ...
    @property
    def maximumEvaporationImpactDepth(self) -> float: ...
    @property
    def maxPercolationRate(self) -> float: ...
    @property
    def moistureInitValue(self) -> float: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SoilMoistureModuleParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilMoistureModuleParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        criticalMoistureDepth: float | None = None,
        saturatedHydraulicConductivity: float | None = None,
        surfaceRoughness: float | None = None,
        groundwaterDischarge: float | None = None,
        hydraulicConductivityRedux: float | None = None,
        snowAccumulationTresholdTemperature: float | None = None,
        kcFactor: float | None = None,
        temperatureLimitForLiquidWater: float | None = None,
        correctionSnow: float | None = None,
        correctionRain: float | None = None,
        snowMaxAdditionalDensity: float | None = None,
        newSnowDensityMin: float | None = None,
        snowRetentionCapacityMin: float | None = None,
        refreezeParameter1: float | None = None,
        refreezeParameter2: float | None = None,
        refreezeTemperature: float | None = None,
        snowMeltTemperature: float | None = None,
        snowPacking: float | None = None,
        snowRetentionCapacityMax: float | None = None,
        evaporationZeta: float | None = None,
        xsaCriticalSoilMoisture: float | None = None,
        maximumEvaporationImpactDepth: float | None = None,
        maxPercolationRate: float | None = None,
        moistureInitValue: float | None = None,
    ) -> SoilMoistureModuleParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilMoistureModuleParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilMoistureModuleParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SoilMoistureModuleParametersReader(SoilMoistureModuleParameters):
    def as_builder(self) -> SoilMoistureModuleParametersBuilder: ...

class SoilMoistureModuleParametersBuilder(SoilMoistureModuleParameters):
    @property
    def criticalMoistureDepth(self) -> float: ...
    @criticalMoistureDepth.setter
    def criticalMoistureDepth(self, value: float) -> None: ...
    @property
    def saturatedHydraulicConductivity(self) -> float: ...
    @saturatedHydraulicConductivity.setter
    def saturatedHydraulicConductivity(self, value: float) -> None: ...
    @property
    def surfaceRoughness(self) -> float: ...
    @surfaceRoughness.setter
    def surfaceRoughness(self, value: float) -> None: ...
    @property
    def groundwaterDischarge(self) -> float: ...
    @groundwaterDischarge.setter
    def groundwaterDischarge(self, value: float) -> None: ...
    @property
    def hydraulicConductivityRedux(self) -> float: ...
    @hydraulicConductivityRedux.setter
    def hydraulicConductivityRedux(self, value: float) -> None: ...
    @property
    def snowAccumulationTresholdTemperature(self) -> float: ...
    @snowAccumulationTresholdTemperature.setter
    def snowAccumulationTresholdTemperature(self, value: float) -> None: ...
    @property
    def kcFactor(self) -> float: ...
    @kcFactor.setter
    def kcFactor(self, value: float) -> None: ...
    @property
    def temperatureLimitForLiquidWater(self) -> float: ...
    @temperatureLimitForLiquidWater.setter
    def temperatureLimitForLiquidWater(self, value: float) -> None: ...
    @property
    def correctionSnow(self) -> float: ...
    @correctionSnow.setter
    def correctionSnow(self, value: float) -> None: ...
    @property
    def correctionRain(self) -> float: ...
    @correctionRain.setter
    def correctionRain(self, value: float) -> None: ...
    @property
    def snowMaxAdditionalDensity(self) -> float: ...
    @snowMaxAdditionalDensity.setter
    def snowMaxAdditionalDensity(self, value: float) -> None: ...
    @property
    def newSnowDensityMin(self) -> float: ...
    @newSnowDensityMin.setter
    def newSnowDensityMin(self, value: float) -> None: ...
    @property
    def snowRetentionCapacityMin(self) -> float: ...
    @snowRetentionCapacityMin.setter
    def snowRetentionCapacityMin(self, value: float) -> None: ...
    @property
    def refreezeParameter1(self) -> float: ...
    @refreezeParameter1.setter
    def refreezeParameter1(self, value: float) -> None: ...
    @property
    def refreezeParameter2(self) -> float: ...
    @refreezeParameter2.setter
    def refreezeParameter2(self, value: float) -> None: ...
    @property
    def refreezeTemperature(self) -> float: ...
    @refreezeTemperature.setter
    def refreezeTemperature(self, value: float) -> None: ...
    @property
    def snowMeltTemperature(self) -> float: ...
    @snowMeltTemperature.setter
    def snowMeltTemperature(self, value: float) -> None: ...
    @property
    def snowPacking(self) -> float: ...
    @snowPacking.setter
    def snowPacking(self, value: float) -> None: ...
    @property
    def snowRetentionCapacityMax(self) -> float: ...
    @snowRetentionCapacityMax.setter
    def snowRetentionCapacityMax(self, value: float) -> None: ...
    @property
    def evaporationZeta(self) -> float: ...
    @evaporationZeta.setter
    def evaporationZeta(self, value: float) -> None: ...
    @property
    def xsaCriticalSoilMoisture(self) -> float: ...
    @xsaCriticalSoilMoisture.setter
    def xsaCriticalSoilMoisture(self, value: float) -> None: ...
    @property
    def maximumEvaporationImpactDepth(self) -> float: ...
    @maximumEvaporationImpactDepth.setter
    def maximumEvaporationImpactDepth(self, value: float) -> None: ...
    @property
    def maxPercolationRate(self) -> float: ...
    @maxPercolationRate.setter
    def maxPercolationRate(self, value: float) -> None: ...
    @property
    def moistureInitValue(self) -> float: ...
    @moistureInitValue.setter
    def moistureInitValue(self, value: float) -> None: ...
    @staticmethod
    def from_dict(
        dictionary: dict[str, Any],
    ) -> SoilMoistureModuleParametersBuilder: ...
    def copy(self) -> SoilMoistureModuleParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SoilMoistureModuleParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class SticsParameters:
    @property
    def useN2O(self) -> bool: ...
    @property
    def useNit(self) -> bool: ...
    @property
    def useDenit(self) -> bool: ...
    @property
    def codeVnit(self) -> int: ...
    @property
    def codeTnit(self) -> int: ...
    @property
    def codeRationit(self) -> int: ...
    @property
    def codeHourlyWfpsNit(self) -> int: ...
    @property
    def codePdenit(self) -> int: ...
    @property
    def codeRatiodenit(self) -> int: ...
    @property
    def codeHourlyWfpsDenit(self) -> int: ...
    @property
    def hminn(self) -> float: ...
    @property
    def hoptn(self) -> float: ...
    @property
    def pHminnit(self) -> float: ...
    @property
    def pHmaxnit(self) -> float: ...
    @property
    def nh4Min(self) -> float: ...
    @property
    def pHminden(self) -> float: ...
    @property
    def pHmaxden(self) -> float: ...
    @property
    def wfpsc(self) -> float: ...
    @property
    def tdenitoptGauss(self) -> float: ...
    @property
    def scaleTdenitopt(self) -> float: ...
    @property
    def kd(self) -> float: ...
    @property
    def kDesat(self) -> float: ...
    @property
    def fnx(self) -> float: ...
    @property
    def vnitmax(self) -> float: ...
    @property
    def kamm(self) -> float: ...
    @property
    def tnitmin(self) -> float: ...
    @property
    def tnitopt(self) -> float: ...
    @property
    def tnitop2(self) -> float: ...
    @property
    def tnitmax(self) -> float: ...
    @property
    def tnitoptGauss(self) -> float: ...
    @property
    def scaleTnitopt(self) -> float: ...
    @property
    def rationit(self) -> float: ...
    @property
    def cminPdenit(self) -> float: ...
    @property
    def cmaxPdenit(self) -> float: ...
    @property
    def minPdenit(self) -> float: ...
    @property
    def maxPdenit(self) -> float: ...
    @property
    def ratiodenit(self) -> float: ...
    @property
    def profdenit(self) -> float: ...
    @property
    def vpotdenit(self) -> float: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SticsParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SticsParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        useN2O: bool | None = None,
        useNit: bool | None = None,
        useDenit: bool | None = None,
        codeVnit: int | None = None,
        codeTnit: int | None = None,
        codeRationit: int | None = None,
        codeHourlyWfpsNit: int | None = None,
        codePdenit: int | None = None,
        codeRatiodenit: int | None = None,
        codeHourlyWfpsDenit: int | None = None,
        hminn: float | None = None,
        hoptn: float | None = None,
        pHminnit: float | None = None,
        pHmaxnit: float | None = None,
        nh4Min: float | None = None,
        pHminden: float | None = None,
        pHmaxden: float | None = None,
        wfpsc: float | None = None,
        tdenitoptGauss: float | None = None,
        scaleTdenitopt: float | None = None,
        kd: float | None = None,
        kDesat: float | None = None,
        fnx: float | None = None,
        vnitmax: float | None = None,
        kamm: float | None = None,
        tnitmin: float | None = None,
        tnitopt: float | None = None,
        tnitop2: float | None = None,
        tnitmax: float | None = None,
        tnitoptGauss: float | None = None,
        scaleTnitopt: float | None = None,
        rationit: float | None = None,
        cminPdenit: float | None = None,
        cmaxPdenit: float | None = None,
        minPdenit: float | None = None,
        maxPdenit: float | None = None,
        ratiodenit: float | None = None,
        profdenit: float | None = None,
        vpotdenit: float | None = None,
    ) -> SticsParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SticsParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SticsParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SticsParametersReader(SticsParameters):
    def as_builder(self) -> SticsParametersBuilder: ...

class SticsParametersBuilder(SticsParameters):
    @property
    def useN2O(self) -> bool: ...
    @useN2O.setter
    def useN2O(self, value: bool) -> None: ...
    @property
    def useNit(self) -> bool: ...
    @useNit.setter
    def useNit(self, value: bool) -> None: ...
    @property
    def useDenit(self) -> bool: ...
    @useDenit.setter
    def useDenit(self, value: bool) -> None: ...
    @property
    def codeVnit(self) -> int: ...
    @codeVnit.setter
    def codeVnit(self, value: int) -> None: ...
    @property
    def codeTnit(self) -> int: ...
    @codeTnit.setter
    def codeTnit(self, value: int) -> None: ...
    @property
    def codeRationit(self) -> int: ...
    @codeRationit.setter
    def codeRationit(self, value: int) -> None: ...
    @property
    def codeHourlyWfpsNit(self) -> int: ...
    @codeHourlyWfpsNit.setter
    def codeHourlyWfpsNit(self, value: int) -> None: ...
    @property
    def codePdenit(self) -> int: ...
    @codePdenit.setter
    def codePdenit(self, value: int) -> None: ...
    @property
    def codeRatiodenit(self) -> int: ...
    @codeRatiodenit.setter
    def codeRatiodenit(self, value: int) -> None: ...
    @property
    def codeHourlyWfpsDenit(self) -> int: ...
    @codeHourlyWfpsDenit.setter
    def codeHourlyWfpsDenit(self, value: int) -> None: ...
    @property
    def hminn(self) -> float: ...
    @hminn.setter
    def hminn(self, value: float) -> None: ...
    @property
    def hoptn(self) -> float: ...
    @hoptn.setter
    def hoptn(self, value: float) -> None: ...
    @property
    def pHminnit(self) -> float: ...
    @pHminnit.setter
    def pHminnit(self, value: float) -> None: ...
    @property
    def pHmaxnit(self) -> float: ...
    @pHmaxnit.setter
    def pHmaxnit(self, value: float) -> None: ...
    @property
    def nh4Min(self) -> float: ...
    @nh4Min.setter
    def nh4Min(self, value: float) -> None: ...
    @property
    def pHminden(self) -> float: ...
    @pHminden.setter
    def pHminden(self, value: float) -> None: ...
    @property
    def pHmaxden(self) -> float: ...
    @pHmaxden.setter
    def pHmaxden(self, value: float) -> None: ...
    @property
    def wfpsc(self) -> float: ...
    @wfpsc.setter
    def wfpsc(self, value: float) -> None: ...
    @property
    def tdenitoptGauss(self) -> float: ...
    @tdenitoptGauss.setter
    def tdenitoptGauss(self, value: float) -> None: ...
    @property
    def scaleTdenitopt(self) -> float: ...
    @scaleTdenitopt.setter
    def scaleTdenitopt(self, value: float) -> None: ...
    @property
    def kd(self) -> float: ...
    @kd.setter
    def kd(self, value: float) -> None: ...
    @property
    def kDesat(self) -> float: ...
    @kDesat.setter
    def kDesat(self, value: float) -> None: ...
    @property
    def fnx(self) -> float: ...
    @fnx.setter
    def fnx(self, value: float) -> None: ...
    @property
    def vnitmax(self) -> float: ...
    @vnitmax.setter
    def vnitmax(self, value: float) -> None: ...
    @property
    def kamm(self) -> float: ...
    @kamm.setter
    def kamm(self, value: float) -> None: ...
    @property
    def tnitmin(self) -> float: ...
    @tnitmin.setter
    def tnitmin(self, value: float) -> None: ...
    @property
    def tnitopt(self) -> float: ...
    @tnitopt.setter
    def tnitopt(self, value: float) -> None: ...
    @property
    def tnitop2(self) -> float: ...
    @tnitop2.setter
    def tnitop2(self, value: float) -> None: ...
    @property
    def tnitmax(self) -> float: ...
    @tnitmax.setter
    def tnitmax(self, value: float) -> None: ...
    @property
    def tnitoptGauss(self) -> float: ...
    @tnitoptGauss.setter
    def tnitoptGauss(self, value: float) -> None: ...
    @property
    def scaleTnitopt(self) -> float: ...
    @scaleTnitopt.setter
    def scaleTnitopt(self, value: float) -> None: ...
    @property
    def rationit(self) -> float: ...
    @rationit.setter
    def rationit(self, value: float) -> None: ...
    @property
    def cminPdenit(self) -> float: ...
    @cminPdenit.setter
    def cminPdenit(self, value: float) -> None: ...
    @property
    def cmaxPdenit(self) -> float: ...
    @cmaxPdenit.setter
    def cmaxPdenit(self, value: float) -> None: ...
    @property
    def minPdenit(self) -> float: ...
    @minPdenit.setter
    def minPdenit(self, value: float) -> None: ...
    @property
    def maxPdenit(self) -> float: ...
    @maxPdenit.setter
    def maxPdenit(self, value: float) -> None: ...
    @property
    def ratiodenit(self) -> float: ...
    @ratiodenit.setter
    def ratiodenit(self, value: float) -> None: ...
    @property
    def profdenit(self) -> float: ...
    @profdenit.setter
    def profdenit(self, value: float) -> None: ...
    @property
    def vpotdenit(self) -> float: ...
    @vpotdenit.setter
    def vpotdenit(self, value: float) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> SticsParametersBuilder: ...
    def copy(self) -> SticsParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SticsParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class SoilOrganicModuleParameters:
    @property
    def somSlowDecCoeffStandard(self) -> float: ...
    @property
    def somFastDecCoeffStandard(self) -> float: ...
    @property
    def smbSlowMaintRateStandard(self) -> float: ...
    @property
    def smbFastMaintRateStandard(self) -> float: ...
    @property
    def smbSlowDeathRateStandard(self) -> float: ...
    @property
    def smbFastDeathRateStandard(self) -> float: ...
    @property
    def smbUtilizationEfficiency(self) -> float: ...
    @property
    def somSlowUtilizationEfficiency(self) -> float: ...
    @property
    def somFastUtilizationEfficiency(self) -> float: ...
    @property
    def aomSlowUtilizationEfficiency(self) -> float: ...
    @property
    def aomFastUtilizationEfficiency(self) -> float: ...
    @property
    def aomFastMaxCtoN(self) -> float: ...
    @property
    def partSOMFastToSOMSlow(self) -> float: ...
    @property
    def partSMBSlowToSOMFast(self) -> float: ...
    @property
    def partSMBFastToSOMFast(self) -> float: ...
    @property
    def partSOMToSMBSlow(self) -> float: ...
    @property
    def partSOMToSMBFast(self) -> float: ...
    @property
    def cnRatioSMB(self) -> float: ...
    @property
    def limitClayEffect(self) -> float: ...
    @property
    def ammoniaOxidationRateCoeffStandard(self) -> float: ...
    @property
    def nitriteOxidationRateCoeffStandard(self) -> float: ...
    @property
    def transportRateCoeff(self) -> float: ...
    @property
    def specAnaerobDenitrification(self) -> float: ...
    @property
    def immobilisationRateCoeffNO3(self) -> float: ...
    @property
    def immobilisationRateCoeffNH4(self) -> float: ...
    @property
    def denit1(self) -> float: ...
    @property
    def denit2(self) -> float: ...
    @property
    def denit3(self) -> float: ...
    @property
    def hydrolysisKM(self) -> float: ...
    @property
    def activationEnergy(self) -> float: ...
    @property
    def hydrolysisP1(self) -> float: ...
    @property
    def hydrolysisP2(self) -> float: ...
    @property
    def atmosphericResistance(self) -> float: ...
    @property
    def n2oProductionRate(self) -> float: ...
    @property
    def inhibitorNH3(self) -> float: ...
    @property
    def psMaxMineralisationDepth(self) -> float: ...
    @property
    def sticsParams(self) -> SticsParameters: ...
    def init(self, name: Literal["sticsParams"]) -> SticsParameters: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SoilOrganicModuleParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilOrganicModuleParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        somSlowDecCoeffStandard: float | None = None,
        somFastDecCoeffStandard: float | None = None,
        smbSlowMaintRateStandard: float | None = None,
        smbFastMaintRateStandard: float | None = None,
        smbSlowDeathRateStandard: float | None = None,
        smbFastDeathRateStandard: float | None = None,
        smbUtilizationEfficiency: float | None = None,
        somSlowUtilizationEfficiency: float | None = None,
        somFastUtilizationEfficiency: float | None = None,
        aomSlowUtilizationEfficiency: float | None = None,
        aomFastUtilizationEfficiency: float | None = None,
        aomFastMaxCtoN: float | None = None,
        partSOMFastToSOMSlow: float | None = None,
        partSMBSlowToSOMFast: float | None = None,
        partSMBFastToSOMFast: float | None = None,
        partSOMToSMBSlow: float | None = None,
        partSOMToSMBFast: float | None = None,
        cnRatioSMB: float | None = None,
        limitClayEffect: float | None = None,
        ammoniaOxidationRateCoeffStandard: float | None = None,
        nitriteOxidationRateCoeffStandard: float | None = None,
        transportRateCoeff: float | None = None,
        specAnaerobDenitrification: float | None = None,
        immobilisationRateCoeffNO3: float | None = None,
        immobilisationRateCoeffNH4: float | None = None,
        denit1: float | None = None,
        denit2: float | None = None,
        denit3: float | None = None,
        hydrolysisKM: float | None = None,
        activationEnergy: float | None = None,
        hydrolysisP1: float | None = None,
        hydrolysisP2: float | None = None,
        atmosphericResistance: float | None = None,
        n2oProductionRate: float | None = None,
        inhibitorNH3: float | None = None,
        psMaxMineralisationDepth: float | None = None,
        sticsParams: SticsParametersBuilder | dict[str, Any] | None = None,
    ) -> SoilOrganicModuleParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilOrganicModuleParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilOrganicModuleParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SoilOrganicModuleParametersReader(SoilOrganicModuleParameters):
    @property
    def sticsParams(self) -> SticsParametersReader: ...
    def as_builder(self) -> SoilOrganicModuleParametersBuilder: ...

class SoilOrganicModuleParametersBuilder(SoilOrganicModuleParameters):
    @property
    def somSlowDecCoeffStandard(self) -> float: ...
    @somSlowDecCoeffStandard.setter
    def somSlowDecCoeffStandard(self, value: float) -> None: ...
    @property
    def somFastDecCoeffStandard(self) -> float: ...
    @somFastDecCoeffStandard.setter
    def somFastDecCoeffStandard(self, value: float) -> None: ...
    @property
    def smbSlowMaintRateStandard(self) -> float: ...
    @smbSlowMaintRateStandard.setter
    def smbSlowMaintRateStandard(self, value: float) -> None: ...
    @property
    def smbFastMaintRateStandard(self) -> float: ...
    @smbFastMaintRateStandard.setter
    def smbFastMaintRateStandard(self, value: float) -> None: ...
    @property
    def smbSlowDeathRateStandard(self) -> float: ...
    @smbSlowDeathRateStandard.setter
    def smbSlowDeathRateStandard(self, value: float) -> None: ...
    @property
    def smbFastDeathRateStandard(self) -> float: ...
    @smbFastDeathRateStandard.setter
    def smbFastDeathRateStandard(self, value: float) -> None: ...
    @property
    def smbUtilizationEfficiency(self) -> float: ...
    @smbUtilizationEfficiency.setter
    def smbUtilizationEfficiency(self, value: float) -> None: ...
    @property
    def somSlowUtilizationEfficiency(self) -> float: ...
    @somSlowUtilizationEfficiency.setter
    def somSlowUtilizationEfficiency(self, value: float) -> None: ...
    @property
    def somFastUtilizationEfficiency(self) -> float: ...
    @somFastUtilizationEfficiency.setter
    def somFastUtilizationEfficiency(self, value: float) -> None: ...
    @property
    def aomSlowUtilizationEfficiency(self) -> float: ...
    @aomSlowUtilizationEfficiency.setter
    def aomSlowUtilizationEfficiency(self, value: float) -> None: ...
    @property
    def aomFastUtilizationEfficiency(self) -> float: ...
    @aomFastUtilizationEfficiency.setter
    def aomFastUtilizationEfficiency(self, value: float) -> None: ...
    @property
    def aomFastMaxCtoN(self) -> float: ...
    @aomFastMaxCtoN.setter
    def aomFastMaxCtoN(self, value: float) -> None: ...
    @property
    def partSOMFastToSOMSlow(self) -> float: ...
    @partSOMFastToSOMSlow.setter
    def partSOMFastToSOMSlow(self, value: float) -> None: ...
    @property
    def partSMBSlowToSOMFast(self) -> float: ...
    @partSMBSlowToSOMFast.setter
    def partSMBSlowToSOMFast(self, value: float) -> None: ...
    @property
    def partSMBFastToSOMFast(self) -> float: ...
    @partSMBFastToSOMFast.setter
    def partSMBFastToSOMFast(self, value: float) -> None: ...
    @property
    def partSOMToSMBSlow(self) -> float: ...
    @partSOMToSMBSlow.setter
    def partSOMToSMBSlow(self, value: float) -> None: ...
    @property
    def partSOMToSMBFast(self) -> float: ...
    @partSOMToSMBFast.setter
    def partSOMToSMBFast(self, value: float) -> None: ...
    @property
    def cnRatioSMB(self) -> float: ...
    @cnRatioSMB.setter
    def cnRatioSMB(self, value: float) -> None: ...
    @property
    def limitClayEffect(self) -> float: ...
    @limitClayEffect.setter
    def limitClayEffect(self, value: float) -> None: ...
    @property
    def ammoniaOxidationRateCoeffStandard(self) -> float: ...
    @ammoniaOxidationRateCoeffStandard.setter
    def ammoniaOxidationRateCoeffStandard(self, value: float) -> None: ...
    @property
    def nitriteOxidationRateCoeffStandard(self) -> float: ...
    @nitriteOxidationRateCoeffStandard.setter
    def nitriteOxidationRateCoeffStandard(self, value: float) -> None: ...
    @property
    def transportRateCoeff(self) -> float: ...
    @transportRateCoeff.setter
    def transportRateCoeff(self, value: float) -> None: ...
    @property
    def specAnaerobDenitrification(self) -> float: ...
    @specAnaerobDenitrification.setter
    def specAnaerobDenitrification(self, value: float) -> None: ...
    @property
    def immobilisationRateCoeffNO3(self) -> float: ...
    @immobilisationRateCoeffNO3.setter
    def immobilisationRateCoeffNO3(self, value: float) -> None: ...
    @property
    def immobilisationRateCoeffNH4(self) -> float: ...
    @immobilisationRateCoeffNH4.setter
    def immobilisationRateCoeffNH4(self, value: float) -> None: ...
    @property
    def denit1(self) -> float: ...
    @denit1.setter
    def denit1(self, value: float) -> None: ...
    @property
    def denit2(self) -> float: ...
    @denit2.setter
    def denit2(self, value: float) -> None: ...
    @property
    def denit3(self) -> float: ...
    @denit3.setter
    def denit3(self, value: float) -> None: ...
    @property
    def hydrolysisKM(self) -> float: ...
    @hydrolysisKM.setter
    def hydrolysisKM(self, value: float) -> None: ...
    @property
    def activationEnergy(self) -> float: ...
    @activationEnergy.setter
    def activationEnergy(self, value: float) -> None: ...
    @property
    def hydrolysisP1(self) -> float: ...
    @hydrolysisP1.setter
    def hydrolysisP1(self, value: float) -> None: ...
    @property
    def hydrolysisP2(self) -> float: ...
    @hydrolysisP2.setter
    def hydrolysisP2(self, value: float) -> None: ...
    @property
    def atmosphericResistance(self) -> float: ...
    @atmosphericResistance.setter
    def atmosphericResistance(self, value: float) -> None: ...
    @property
    def n2oProductionRate(self) -> float: ...
    @n2oProductionRate.setter
    def n2oProductionRate(self, value: float) -> None: ...
    @property
    def inhibitorNH3(self) -> float: ...
    @inhibitorNH3.setter
    def inhibitorNH3(self, value: float) -> None: ...
    @property
    def psMaxMineralisationDepth(self) -> float: ...
    @psMaxMineralisationDepth.setter
    def psMaxMineralisationDepth(self, value: float) -> None: ...
    @property
    def sticsParams(self) -> SticsParametersBuilder: ...
    @sticsParams.setter
    def sticsParams(
        self,
        value: SticsParameters
        | SticsParametersBuilder
        | SticsParametersReader
        | dict[str, Any],
    ) -> None: ...
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> SoilOrganicModuleParametersBuilder: ...
    def init(self, name: Literal["sticsParams"]) -> SticsParametersBuilder: ...
    def copy(self) -> SoilOrganicModuleParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SoilOrganicModuleParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class SoilTemperatureModuleParameters:
    @property
    def nTau(self) -> float: ...
    @property
    def initialSurfaceTemperature(self) -> float: ...
    @property
    def baseTemperature(self) -> float: ...
    @property
    def quartzRawDensity(self) -> float: ...
    @property
    def densityAir(self) -> float: ...
    @property
    def densityWater(self) -> float: ...
    @property
    def densityHumus(self) -> float: ...
    @property
    def specificHeatCapacityAir(self) -> float: ...
    @property
    def specificHeatCapacityQuartz(self) -> float: ...
    @property
    def specificHeatCapacityWater(self) -> float: ...
    @property
    def specificHeatCapacityHumus(self) -> float: ...
    @property
    def soilAlbedo(self) -> float: ...
    @property
    def soilMoisture(self) -> float: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SoilTemperatureModuleParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilTemperatureModuleParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        nTau: float | None = None,
        initialSurfaceTemperature: float | None = None,
        baseTemperature: float | None = None,
        quartzRawDensity: float | None = None,
        densityAir: float | None = None,
        densityWater: float | None = None,
        densityHumus: float | None = None,
        specificHeatCapacityAir: float | None = None,
        specificHeatCapacityQuartz: float | None = None,
        specificHeatCapacityWater: float | None = None,
        specificHeatCapacityHumus: float | None = None,
        soilAlbedo: float | None = None,
        soilMoisture: float | None = None,
    ) -> SoilTemperatureModuleParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilTemperatureModuleParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilTemperatureModuleParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SoilTemperatureModuleParametersReader(SoilTemperatureModuleParameters):
    def as_builder(self) -> SoilTemperatureModuleParametersBuilder: ...

class SoilTemperatureModuleParametersBuilder(SoilTemperatureModuleParameters):
    @property
    def nTau(self) -> float: ...
    @nTau.setter
    def nTau(self, value: float) -> None: ...
    @property
    def initialSurfaceTemperature(self) -> float: ...
    @initialSurfaceTemperature.setter
    def initialSurfaceTemperature(self, value: float) -> None: ...
    @property
    def baseTemperature(self) -> float: ...
    @baseTemperature.setter
    def baseTemperature(self, value: float) -> None: ...
    @property
    def quartzRawDensity(self) -> float: ...
    @quartzRawDensity.setter
    def quartzRawDensity(self, value: float) -> None: ...
    @property
    def densityAir(self) -> float: ...
    @densityAir.setter
    def densityAir(self, value: float) -> None: ...
    @property
    def densityWater(self) -> float: ...
    @densityWater.setter
    def densityWater(self, value: float) -> None: ...
    @property
    def densityHumus(self) -> float: ...
    @densityHumus.setter
    def densityHumus(self, value: float) -> None: ...
    @property
    def specificHeatCapacityAir(self) -> float: ...
    @specificHeatCapacityAir.setter
    def specificHeatCapacityAir(self, value: float) -> None: ...
    @property
    def specificHeatCapacityQuartz(self) -> float: ...
    @specificHeatCapacityQuartz.setter
    def specificHeatCapacityQuartz(self, value: float) -> None: ...
    @property
    def specificHeatCapacityWater(self) -> float: ...
    @specificHeatCapacityWater.setter
    def specificHeatCapacityWater(self, value: float) -> None: ...
    @property
    def specificHeatCapacityHumus(self) -> float: ...
    @specificHeatCapacityHumus.setter
    def specificHeatCapacityHumus(self, value: float) -> None: ...
    @property
    def soilAlbedo(self) -> float: ...
    @soilAlbedo.setter
    def soilAlbedo(self, value: float) -> None: ...
    @property
    def soilMoisture(self) -> float: ...
    @soilMoisture.setter
    def soilMoisture(self, value: float) -> None: ...
    @staticmethod
    def from_dict(
        dictionary: dict[str, Any],
    ) -> SoilTemperatureModuleParametersBuilder: ...
    def copy(self) -> SoilTemperatureModuleParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SoilTemperatureModuleParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class SoilTransportModuleParameters:
    @property
    def dispersionLength(self) -> float: ...
    @property
    def ad(self) -> float: ...
    @property
    def diffusionCoefficientStandard(self) -> float: ...
    @property
    def nDeposition(self) -> float: ...
    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[SoilTransportModuleParametersReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilTransportModuleParametersReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None,
        allocate_seg_callable: Any = None,
        dispersionLength: float | None = None,
        ad: float | None = None,
        diffusionCoefficientStandard: float | None = None,
        nDeposition: float | None = None,
    ) -> SoilTransportModuleParametersBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilTransportModuleParametersReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> SoilTransportModuleParametersReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class SoilTransportModuleParametersReader(SoilTransportModuleParameters):
    def as_builder(self) -> SoilTransportModuleParametersBuilder: ...

class SoilTransportModuleParametersBuilder(SoilTransportModuleParameters):
    @property
    def dispersionLength(self) -> float: ...
    @dispersionLength.setter
    def dispersionLength(self, value: float) -> None: ...
    @property
    def ad(self) -> float: ...
    @ad.setter
    def ad(self, value: float) -> None: ...
    @property
    def diffusionCoefficientStandard(self) -> float: ...
    @diffusionCoefficientStandard.setter
    def diffusionCoefficientStandard(self, value: float) -> None: ...
    @property
    def nDeposition(self) -> float: ...
    @nDeposition.setter
    def nDeposition(self, value: float) -> None: ...
    @staticmethod
    def from_dict(
        dictionary: dict[str, Any],
    ) -> SoilTransportModuleParametersBuilder: ...
    def copy(self) -> SoilTransportModuleParametersBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> SoilTransportModuleParametersReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...

class Voc:
    class Emissions:
        class SpeciesIdToEmission:
            @property
            def speciesId(self) -> int: ...
            @property
            def emission(self) -> float: ...
            @staticmethod
            @contextmanager
            def from_bytes(
                data: bytes,
                traversal_limit_in_words: int | None = ...,
                nesting_limit: int | None = ...,
            ) -> Iterator[Voc.Emissions.SpeciesIdToEmissionReader]: ...
            @staticmethod
            def from_bytes_packed(
                data: bytes,
                traversal_limit_in_words: int | None = ...,
                nesting_limit: int | None = ...,
            ) -> Voc.Emissions.SpeciesIdToEmissionReader: ...
            @staticmethod
            def new_message(
                num_first_segment_words: int | None = None,
                allocate_seg_callable: Any = None,
                speciesId: int | None = None,
                emission: float | None = None,
            ) -> Voc.Emissions.SpeciesIdToEmissionBuilder: ...
            @staticmethod
            def read(
                file: BinaryIO,
                traversal_limit_in_words: int | None = ...,
                nesting_limit: int | None = ...,
            ) -> Voc.Emissions.SpeciesIdToEmissionReader: ...
            @staticmethod
            def read_packed(
                file: BinaryIO,
                traversal_limit_in_words: int | None = ...,
                nesting_limit: int | None = ...,
            ) -> Voc.Emissions.SpeciesIdToEmissionReader: ...
            def to_dict(self) -> dict[str, Any]: ...

        class SpeciesIdToEmissionReader(Voc.Emissions.SpeciesIdToEmission):
            def as_builder(self) -> Voc.Emissions.SpeciesIdToEmissionBuilder: ...

        class SpeciesIdToEmissionBuilder(Voc.Emissions.SpeciesIdToEmission):
            @property
            def speciesId(self) -> int: ...
            @speciesId.setter
            def speciesId(self, value: int) -> None: ...
            @property
            def emission(self) -> float: ...
            @emission.setter
            def emission(self, value: float) -> None: ...
            @staticmethod
            def from_dict(
                dictionary: dict[str, Any],
            ) -> Voc.Emissions.SpeciesIdToEmissionBuilder: ...
            def copy(self) -> Voc.Emissions.SpeciesIdToEmissionBuilder: ...
            def to_bytes(self) -> bytes: ...
            def to_bytes_packed(self) -> bytes: ...
            def to_segments(self) -> list[bytes]: ...
            def as_reader(self) -> Voc.Emissions.SpeciesIdToEmissionReader: ...
            @staticmethod
            def write(file: BufferedWriter) -> None: ...
            @staticmethod
            def write_packed(file: BufferedWriter) -> None: ...

        @property
        def speciesIdToIsopreneEmission(
            self,
        ) -> Sequence[Voc.Emissions.SpeciesIdToEmission]: ...
        @property
        def speciesIdToMonoterpeneEmission(
            self,
        ) -> Sequence[Voc.Emissions.SpeciesIdToEmission]: ...
        @property
        def isopreneEmission(self) -> float: ...
        @property
        def monoterpeneEmission(self) -> float: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[Voc.EmissionsReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.EmissionsReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            speciesIdToIsopreneEmission: Sequence[
                Voc.Emissions.SpeciesIdToEmissionBuilder
            ]
            | Sequence[dict[str, Any]]
            | None = None,
            speciesIdToMonoterpeneEmission: Sequence[
                Voc.Emissions.SpeciesIdToEmissionBuilder
            ]
            | Sequence[dict[str, Any]]
            | None = None,
            isopreneEmission: float | None = None,
            monoterpeneEmission: float | None = None,
        ) -> Voc.EmissionsBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.EmissionsReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.EmissionsReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class EmissionsReader(Voc.Emissions):
        @property
        def speciesIdToIsopreneEmission(
            self,
        ) -> Sequence[Voc.Emissions.SpeciesIdToEmissionReader]: ...
        @property
        def speciesIdToMonoterpeneEmission(
            self,
        ) -> Sequence[Voc.Emissions.SpeciesIdToEmissionReader]: ...
        def as_builder(self) -> Voc.EmissionsBuilder: ...

    class EmissionsBuilder(Voc.Emissions):
        @property
        def speciesIdToIsopreneEmission(
            self,
        ) -> Sequence[Voc.Emissions.SpeciesIdToEmissionBuilder]: ...
        @speciesIdToIsopreneEmission.setter
        def speciesIdToIsopreneEmission(
            self,
            value: Sequence[
                Voc.Emissions.SpeciesIdToEmission
                | Voc.Emissions.SpeciesIdToEmissionBuilder
                | Voc.Emissions.SpeciesIdToEmissionReader
            ]
            | Sequence[dict[str, Any]],
        ) -> None: ...
        @property
        def speciesIdToMonoterpeneEmission(
            self,
        ) -> Sequence[Voc.Emissions.SpeciesIdToEmissionBuilder]: ...
        @speciesIdToMonoterpeneEmission.setter
        def speciesIdToMonoterpeneEmission(
            self,
            value: Sequence[
                Voc.Emissions.SpeciesIdToEmission
                | Voc.Emissions.SpeciesIdToEmissionBuilder
                | Voc.Emissions.SpeciesIdToEmissionReader
            ]
            | Sequence[dict[str, Any]],
        ) -> None: ...
        @property
        def isopreneEmission(self) -> float: ...
        @isopreneEmission.setter
        def isopreneEmission(self, value: float) -> None: ...
        @property
        def monoterpeneEmission(self) -> float: ...
        @monoterpeneEmission.setter
        def monoterpeneEmission(self, value: float) -> None: ...
        @staticmethod
        def from_dict(dictionary: dict[str, Any]) -> Voc.EmissionsBuilder: ...
        @overload
        def init(
            self: Any, name: Literal["speciesIdToIsopreneEmission"], size: int = ...
        ) -> _DynamicListBuilder[Voc.Emissions.SpeciesIdToEmissionBuilder]: ...
        @overload
        def init(
            self: Any, name: Literal["speciesIdToMonoterpeneEmission"], size: int = ...
        ) -> _DynamicListBuilder[Voc.Emissions.SpeciesIdToEmissionBuilder]: ...
        def init(self: Any, name: str, size: int = ...) -> Any: ...
        def copy(self) -> Voc.EmissionsBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> Voc.EmissionsReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    class SpeciesData:
        @property
        def id(self) -> int: ...
        @property
        def efMonos(self) -> float: ...
        @property
        def efMono(self) -> float: ...
        @property
        def efIso(self) -> float: ...
        @property
        def theta(self) -> float: ...
        @property
        def fage(self) -> float: ...
        @property
        def ctIs(self) -> float: ...
        @property
        def ctMt(self) -> float: ...
        @property
        def haIs(self) -> float: ...
        @property
        def haMt(self) -> float: ...
        @property
        def dsIs(self) -> float: ...
        @property
        def dsMt(self) -> float: ...
        @property
        def hdIs(self) -> float: ...
        @property
        def hdMt(self) -> float: ...
        @property
        def hdj(self) -> float: ...
        @property
        def sdj(self) -> float: ...
        @property
        def kc25(self) -> float: ...
        @property
        def ko25(self) -> float: ...
        @property
        def vcMax25(self) -> float: ...
        @property
        def qjvc(self) -> float: ...
        @property
        def aekc(self) -> float: ...
        @property
        def aeko(self) -> float: ...
        @property
        def aejm(self) -> float: ...
        @property
        def aevc(self) -> float: ...
        @property
        def slaMin(self) -> float: ...
        @property
        def scaleI(self) -> float: ...
        @property
        def scaleM(self) -> float: ...
        @property
        def mFol(self) -> float: ...
        @property
        def lai(self) -> float: ...
        @property
        def sla(self) -> float: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[Voc.SpeciesDataReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.SpeciesDataReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            id: int | None = None,
            efMonos: float | None = None,
            efMono: float | None = None,
            efIso: float | None = None,
            theta: float | None = None,
            fage: float | None = None,
            ctIs: float | None = None,
            ctMt: float | None = None,
            haIs: float | None = None,
            haMt: float | None = None,
            dsIs: float | None = None,
            dsMt: float | None = None,
            hdIs: float | None = None,
            hdMt: float | None = None,
            hdj: float | None = None,
            sdj: float | None = None,
            kc25: float | None = None,
            ko25: float | None = None,
            vcMax25: float | None = None,
            qjvc: float | None = None,
            aekc: float | None = None,
            aeko: float | None = None,
            aejm: float | None = None,
            aevc: float | None = None,
            slaMin: float | None = None,
            scaleI: float | None = None,
            scaleM: float | None = None,
            mFol: float | None = None,
            lai: float | None = None,
            sla: float | None = None,
        ) -> Voc.SpeciesDataBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.SpeciesDataReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.SpeciesDataReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class SpeciesDataReader(Voc.SpeciesData):
        def as_builder(self) -> Voc.SpeciesDataBuilder: ...

    class SpeciesDataBuilder(Voc.SpeciesData):
        @property
        def id(self) -> int: ...
        @id.setter
        def id(self, value: int) -> None: ...
        @property
        def efMonos(self) -> float: ...
        @efMonos.setter
        def efMonos(self, value: float) -> None: ...
        @property
        def efMono(self) -> float: ...
        @efMono.setter
        def efMono(self, value: float) -> None: ...
        @property
        def efIso(self) -> float: ...
        @efIso.setter
        def efIso(self, value: float) -> None: ...
        @property
        def theta(self) -> float: ...
        @theta.setter
        def theta(self, value: float) -> None: ...
        @property
        def fage(self) -> float: ...
        @fage.setter
        def fage(self, value: float) -> None: ...
        @property
        def ctIs(self) -> float: ...
        @ctIs.setter
        def ctIs(self, value: float) -> None: ...
        @property
        def ctMt(self) -> float: ...
        @ctMt.setter
        def ctMt(self, value: float) -> None: ...
        @property
        def haIs(self) -> float: ...
        @haIs.setter
        def haIs(self, value: float) -> None: ...
        @property
        def haMt(self) -> float: ...
        @haMt.setter
        def haMt(self, value: float) -> None: ...
        @property
        def dsIs(self) -> float: ...
        @dsIs.setter
        def dsIs(self, value: float) -> None: ...
        @property
        def dsMt(self) -> float: ...
        @dsMt.setter
        def dsMt(self, value: float) -> None: ...
        @property
        def hdIs(self) -> float: ...
        @hdIs.setter
        def hdIs(self, value: float) -> None: ...
        @property
        def hdMt(self) -> float: ...
        @hdMt.setter
        def hdMt(self, value: float) -> None: ...
        @property
        def hdj(self) -> float: ...
        @hdj.setter
        def hdj(self, value: float) -> None: ...
        @property
        def sdj(self) -> float: ...
        @sdj.setter
        def sdj(self, value: float) -> None: ...
        @property
        def kc25(self) -> float: ...
        @kc25.setter
        def kc25(self, value: float) -> None: ...
        @property
        def ko25(self) -> float: ...
        @ko25.setter
        def ko25(self, value: float) -> None: ...
        @property
        def vcMax25(self) -> float: ...
        @vcMax25.setter
        def vcMax25(self, value: float) -> None: ...
        @property
        def qjvc(self) -> float: ...
        @qjvc.setter
        def qjvc(self, value: float) -> None: ...
        @property
        def aekc(self) -> float: ...
        @aekc.setter
        def aekc(self, value: float) -> None: ...
        @property
        def aeko(self) -> float: ...
        @aeko.setter
        def aeko(self, value: float) -> None: ...
        @property
        def aejm(self) -> float: ...
        @aejm.setter
        def aejm(self, value: float) -> None: ...
        @property
        def aevc(self) -> float: ...
        @aevc.setter
        def aevc(self, value: float) -> None: ...
        @property
        def slaMin(self) -> float: ...
        @slaMin.setter
        def slaMin(self, value: float) -> None: ...
        @property
        def scaleI(self) -> float: ...
        @scaleI.setter
        def scaleI(self, value: float) -> None: ...
        @property
        def scaleM(self) -> float: ...
        @scaleM.setter
        def scaleM(self, value: float) -> None: ...
        @property
        def mFol(self) -> float: ...
        @mFol.setter
        def mFol(self, value: float) -> None: ...
        @property
        def lai(self) -> float: ...
        @lai.setter
        def lai(self, value: float) -> None: ...
        @property
        def sla(self) -> float: ...
        @sla.setter
        def sla(self, value: float) -> None: ...
        @staticmethod
        def from_dict(dictionary: dict[str, Any]) -> Voc.SpeciesDataBuilder: ...
        def copy(self) -> Voc.SpeciesDataBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> Voc.SpeciesDataReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    class CPData:
        @property
        def kc(self) -> float: ...
        @property
        def ko(self) -> float: ...
        @property
        def oi(self) -> float: ...
        @property
        def ci(self) -> float: ...
        @property
        def comp(self) -> float: ...
        @property
        def vcMax(self) -> float: ...
        @property
        def jMax(self) -> float: ...
        @property
        def jj(self) -> float: ...
        @property
        def jj1000(self) -> float: ...
        @property
        def jv(self) -> float: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[Voc.CPDataReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.CPDataReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            kc: float | None = None,
            ko: float | None = None,
            oi: float | None = None,
            ci: float | None = None,
            comp: float | None = None,
            vcMax: float | None = None,
            jMax: float | None = None,
            jj: float | None = None,
            jj1000: float | None = None,
            jv: float | None = None,
        ) -> Voc.CPDataBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.CPDataReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.CPDataReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class CPDataReader(Voc.CPData):
        def as_builder(self) -> Voc.CPDataBuilder: ...

    class CPDataBuilder(Voc.CPData):
        @property
        def kc(self) -> float: ...
        @kc.setter
        def kc(self, value: float) -> None: ...
        @property
        def ko(self) -> float: ...
        @ko.setter
        def ko(self, value: float) -> None: ...
        @property
        def oi(self) -> float: ...
        @oi.setter
        def oi(self, value: float) -> None: ...
        @property
        def ci(self) -> float: ...
        @ci.setter
        def ci(self, value: float) -> None: ...
        @property
        def comp(self) -> float: ...
        @comp.setter
        def comp(self, value: float) -> None: ...
        @property
        def vcMax(self) -> float: ...
        @vcMax.setter
        def vcMax(self, value: float) -> None: ...
        @property
        def jMax(self) -> float: ...
        @jMax.setter
        def jMax(self, value: float) -> None: ...
        @property
        def jj(self) -> float: ...
        @jj.setter
        def jj(self, value: float) -> None: ...
        @property
        def jj1000(self) -> float: ...
        @jj1000.setter
        def jj1000(self, value: float) -> None: ...
        @property
        def jv(self) -> float: ...
        @jv.setter
        def jv(self, value: float) -> None: ...
        @staticmethod
        def from_dict(dictionary: dict[str, Any]) -> Voc.CPDataBuilder: ...
        def copy(self) -> Voc.CPDataBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> Voc.CPDataReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    class MicroClimateData:
        @property
        def rad(self) -> float: ...
        @property
        def rad24(self) -> float: ...
        @property
        def rad240(self) -> float: ...
        @property
        def tFol(self) -> float: ...
        @property
        def tFol24(self) -> float: ...
        @property
        def tFol240(self) -> float: ...
        @property
        def sunlitfoliagefraction(self) -> float: ...
        @property
        def sunlitfoliagefraction24(self) -> float: ...
        @property
        def co2concentration(self) -> float: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[Voc.MicroClimateDataReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.MicroClimateDataReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            rad: float | None = None,
            rad24: float | None = None,
            rad240: float | None = None,
            tFol: float | None = None,
            tFol24: float | None = None,
            tFol240: float | None = None,
            sunlitfoliagefraction: float | None = None,
            sunlitfoliagefraction24: float | None = None,
            co2concentration: float | None = None,
        ) -> Voc.MicroClimateDataBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.MicroClimateDataReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.MicroClimateDataReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class MicroClimateDataReader(Voc.MicroClimateData):
        def as_builder(self) -> Voc.MicroClimateDataBuilder: ...

    class MicroClimateDataBuilder(Voc.MicroClimateData):
        @property
        def rad(self) -> float: ...
        @rad.setter
        def rad(self, value: float) -> None: ...
        @property
        def rad24(self) -> float: ...
        @rad24.setter
        def rad24(self, value: float) -> None: ...
        @property
        def rad240(self) -> float: ...
        @rad240.setter
        def rad240(self, value: float) -> None: ...
        @property
        def tFol(self) -> float: ...
        @tFol.setter
        def tFol(self, value: float) -> None: ...
        @property
        def tFol24(self) -> float: ...
        @tFol24.setter
        def tFol24(self, value: float) -> None: ...
        @property
        def tFol240(self) -> float: ...
        @tFol240.setter
        def tFol240(self, value: float) -> None: ...
        @property
        def sunlitfoliagefraction(self) -> float: ...
        @sunlitfoliagefraction.setter
        def sunlitfoliagefraction(self, value: float) -> None: ...
        @property
        def sunlitfoliagefraction24(self) -> float: ...
        @sunlitfoliagefraction24.setter
        def sunlitfoliagefraction24(self, value: float) -> None: ...
        @property
        def co2concentration(self) -> float: ...
        @co2concentration.setter
        def co2concentration(self, value: float) -> None: ...
        @staticmethod
        def from_dict(dictionary: dict[str, Any]) -> Voc.MicroClimateDataBuilder: ...
        def copy(self) -> Voc.MicroClimateDataBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> Voc.MicroClimateDataReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    class PhotosynthT:
        @property
        def par(self) -> float: ...
        @property
        def par24(self) -> float: ...
        @property
        def par240(self) -> float: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[Voc.PhotosynthTReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.PhotosynthTReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            par: float | None = None,
            par24: float | None = None,
            par240: float | None = None,
        ) -> Voc.PhotosynthTBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.PhotosynthTReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.PhotosynthTReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class PhotosynthTReader(Voc.PhotosynthT):
        def as_builder(self) -> Voc.PhotosynthTBuilder: ...

    class PhotosynthTBuilder(Voc.PhotosynthT):
        @property
        def par(self) -> float: ...
        @par.setter
        def par(self, value: float) -> None: ...
        @property
        def par24(self) -> float: ...
        @par24.setter
        def par24(self, value: float) -> None: ...
        @property
        def par240(self) -> float: ...
        @par240.setter
        def par240(self, value: float) -> None: ...
        @staticmethod
        def from_dict(dictionary: dict[str, Any]) -> Voc.PhotosynthTBuilder: ...
        def copy(self) -> Voc.PhotosynthTBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> Voc.PhotosynthTReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    class FoliageT:
        @property
        def tempK(self) -> float: ...
        @property
        def tempK24(self) -> float: ...
        @property
        def tempK240(self) -> float: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[Voc.FoliageTReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.FoliageTReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            tempK: float | None = None,
            tempK24: float | None = None,
            tempK240: float | None = None,
        ) -> Voc.FoliageTBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.FoliageTReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.FoliageTReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class FoliageTReader(Voc.FoliageT):
        def as_builder(self) -> Voc.FoliageTBuilder: ...

    class FoliageTBuilder(Voc.FoliageT):
        @property
        def tempK(self) -> float: ...
        @tempK.setter
        def tempK(self, value: float) -> None: ...
        @property
        def tempK24(self) -> float: ...
        @tempK24.setter
        def tempK24(self, value: float) -> None: ...
        @property
        def tempK240(self) -> float: ...
        @tempK240.setter
        def tempK240(self, value: float) -> None: ...
        @staticmethod
        def from_dict(dictionary: dict[str, Any]) -> Voc.FoliageTBuilder: ...
        def copy(self) -> Voc.FoliageTBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> Voc.FoliageTReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    class EnzymeActivityT:
        @property
        def efIso(self) -> float: ...
        @property
        def efMono(self) -> float: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[Voc.EnzymeActivityTReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.EnzymeActivityTReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            efIso: float | None = None,
            efMono: float | None = None,
        ) -> Voc.EnzymeActivityTBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.EnzymeActivityTReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.EnzymeActivityTReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class EnzymeActivityTReader(Voc.EnzymeActivityT):
        def as_builder(self) -> Voc.EnzymeActivityTBuilder: ...

    class EnzymeActivityTBuilder(Voc.EnzymeActivityT):
        @property
        def efIso(self) -> float: ...
        @efIso.setter
        def efIso(self, value: float) -> None: ...
        @property
        def efMono(self) -> float: ...
        @efMono.setter
        def efMono(self, value: float) -> None: ...
        @staticmethod
        def from_dict(dictionary: dict[str, Any]) -> Voc.EnzymeActivityTBuilder: ...
        def copy(self) -> Voc.EnzymeActivityTBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> Voc.EnzymeActivityTReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    class LeafEmissionT:
        @property
        def foliageLayer(self) -> int: ...
        @property
        def pho(self) -> Voc.PhotosynthT: ...
        @property
        def fol(self) -> Voc.FoliageT: ...
        @property
        def enzAct(self) -> Voc.EnzymeActivityT: ...
        @overload
        def init(self, name: Literal["pho"]) -> Voc.PhotosynthT: ...
        @overload
        def init(self, name: Literal["fol"]) -> Voc.FoliageT: ...
        @overload
        def init(self, name: Literal["enzAct"]) -> Voc.EnzymeActivityT: ...
        def init(self: Any, name: str, size: int = ...) -> Any: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[Voc.LeafEmissionTReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.LeafEmissionTReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            foliageLayer: int | None = None,
            pho: Voc.PhotosynthTBuilder | dict[str, Any] | None = None,
            fol: Voc.FoliageTBuilder | dict[str, Any] | None = None,
            enzAct: Voc.EnzymeActivityTBuilder | dict[str, Any] | None = None,
        ) -> Voc.LeafEmissionTBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.LeafEmissionTReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.LeafEmissionTReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class LeafEmissionTReader(Voc.LeafEmissionT):
        @property
        def pho(self) -> Voc.PhotosynthTReader: ...
        @property
        def fol(self) -> Voc.FoliageTReader: ...
        @property
        def enzAct(self) -> Voc.EnzymeActivityTReader: ...
        def as_builder(self) -> Voc.LeafEmissionTBuilder: ...

    class LeafEmissionTBuilder(Voc.LeafEmissionT):
        @property
        def foliageLayer(self) -> int: ...
        @foliageLayer.setter
        def foliageLayer(self, value: int) -> None: ...
        @property
        def pho(self) -> Voc.PhotosynthTBuilder: ...
        @pho.setter
        def pho(
            self,
            value: Voc.PhotosynthT
            | Voc.PhotosynthTBuilder
            | Voc.PhotosynthTReader
            | dict[str, Any],
        ) -> None: ...
        @property
        def fol(self) -> Voc.FoliageTBuilder: ...
        @fol.setter
        def fol(
            self,
            value: Voc.FoliageT
            | Voc.FoliageTBuilder
            | Voc.FoliageTReader
            | dict[str, Any],
        ) -> None: ...
        @property
        def enzAct(self) -> Voc.EnzymeActivityTBuilder: ...
        @enzAct.setter
        def enzAct(
            self,
            value: Voc.EnzymeActivityT
            | Voc.EnzymeActivityTBuilder
            | Voc.EnzymeActivityTReader
            | dict[str, Any],
        ) -> None: ...
        @staticmethod
        def from_dict(dictionary: dict[str, Any]) -> Voc.LeafEmissionTBuilder: ...
        @overload
        def init(self: Any, name: Literal["pho"]) -> Voc.PhotosynthTBuilder: ...
        @overload
        def init(self: Any, name: Literal["fol"]) -> Voc.FoliageTBuilder: ...
        @overload
        def init(self: Any, name: Literal["enzAct"]) -> Voc.EnzymeActivityTBuilder: ...
        def init(self: Any, name: str, size: int = ...) -> Any: ...
        def copy(self) -> Voc.LeafEmissionTBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> Voc.LeafEmissionTReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    class LeafEmissions:
        @property
        def isoprene(self) -> float: ...
        @property
        def monoterp(self) -> float: ...
        @staticmethod
        @contextmanager
        def from_bytes(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Iterator[Voc.LeafEmissionsReader]: ...
        @staticmethod
        def from_bytes_packed(
            data: bytes,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.LeafEmissionsReader: ...
        @staticmethod
        def new_message(
            num_first_segment_words: int | None = None,
            allocate_seg_callable: Any = None,
            isoprene: float | None = None,
            monoterp: float | None = None,
        ) -> Voc.LeafEmissionsBuilder: ...
        @staticmethod
        def read(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.LeafEmissionsReader: ...
        @staticmethod
        def read_packed(
            file: BinaryIO,
            traversal_limit_in_words: int | None = ...,
            nesting_limit: int | None = ...,
        ) -> Voc.LeafEmissionsReader: ...
        def to_dict(self) -> dict[str, Any]: ...

    class LeafEmissionsReader(Voc.LeafEmissions):
        def as_builder(self) -> Voc.LeafEmissionsBuilder: ...

    class LeafEmissionsBuilder(Voc.LeafEmissions):
        @property
        def isoprene(self) -> float: ...
        @isoprene.setter
        def isoprene(self, value: float) -> None: ...
        @property
        def monoterp(self) -> float: ...
        @monoterp.setter
        def monoterp(self, value: float) -> None: ...
        @staticmethod
        def from_dict(dictionary: dict[str, Any]) -> Voc.LeafEmissionsBuilder: ...
        def copy(self) -> Voc.LeafEmissionsBuilder: ...
        def to_bytes(self) -> bytes: ...
        def to_bytes_packed(self) -> bytes: ...
        def to_segments(self) -> list[bytes]: ...
        def as_reader(self) -> Voc.LeafEmissionsReader: ...
        @staticmethod
        def write(file: BufferedWriter) -> None: ...
        @staticmethod
        def write_packed(file: BufferedWriter) -> None: ...

    @staticmethod
    @contextmanager
    def from_bytes(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> Iterator[VocReader]: ...
    @staticmethod
    def from_bytes_packed(
        data: bytes,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> VocReader: ...
    @staticmethod
    def new_message(
        num_first_segment_words: int | None = None, allocate_seg_callable: Any = None
    ) -> VocBuilder: ...
    @staticmethod
    def read(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> VocReader: ...
    @staticmethod
    def read_packed(
        file: BinaryIO,
        traversal_limit_in_words: int | None = ...,
        nesting_limit: int | None = ...,
    ) -> VocReader: ...
    def to_dict(self) -> dict[str, Any]: ...

class VocReader(Voc):
    def as_builder(self) -> VocBuilder: ...

class VocBuilder(Voc):
    @staticmethod
    def from_dict(dictionary: dict[str, Any]) -> VocBuilder: ...
    def copy(self) -> VocBuilder: ...
    def to_bytes(self) -> bytes: ...
    def to_bytes_packed(self) -> bytes: ...
    def to_segments(self) -> list[bytes]: ...
    def as_reader(self) -> VocReader: ...
    @staticmethod
    def write(file: BufferedWriter) -> None: ...
    @staticmethod
    def write_packed(file: BufferedWriter) -> None: ...
