"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file

Protocol Buffers describing the Provision API, for communicating with a runner
for job and environment provisioning information over GRPC.
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import google.protobuf.struct_pb2
import org.apache.beam.model.pipeline.v1.beam_runner_api_pb2
import org.apache.beam.model.pipeline.v1.endpoints_pb2
import sys

if sys.version_info >= (3, 8):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing_extensions.final
class GetProvisionInfoRequest(google.protobuf.message.Message):
    """A request to get the provision info of a SDK harness worker instance."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___GetProvisionInfoRequest = GetProvisionInfoRequest

@typing_extensions.final
class GetProvisionInfoResponse(google.protobuf.message.Message):
    """A response containing the provision info of a SDK harness worker instance."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INFO_FIELD_NUMBER: builtins.int
    @property
    def info(self) -> global___ProvisionInfo: ...
    def __init__(
        self,
        *,
        info: global___ProvisionInfo | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["info", b"info"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["info", b"info"]) -> None: ...

global___GetProvisionInfoResponse = GetProvisionInfoResponse

@typing_extensions.final
class ProvisionInfo(google.protobuf.message.Message):
    """Runtime provisioning information for a SDK harness worker instance,
    such as pipeline options, resource constraints and other job metadata
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing_extensions.final
    class MetadataEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str | None = ...,
            value: builtins.str | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    PIPELINE_OPTIONS_FIELD_NUMBER: builtins.int
    RETRIEVAL_TOKEN_FIELD_NUMBER: builtins.int
    STATUS_ENDPOINT_FIELD_NUMBER: builtins.int
    LOGGING_ENDPOINT_FIELD_NUMBER: builtins.int
    ARTIFACT_ENDPOINT_FIELD_NUMBER: builtins.int
    CONTROL_ENDPOINT_FIELD_NUMBER: builtins.int
    DEPENDENCIES_FIELD_NUMBER: builtins.int
    RUNNER_CAPABILITIES_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    SIBLING_WORKER_IDS_FIELD_NUMBER: builtins.int
    @property
    def pipeline_options(self) -> google.protobuf.struct_pb2.Struct:
        """(required) Pipeline options. For non-template jobs, the options are
        identical to what is passed to job submission.
        """
    retrieval_token: builtins.str
    """(required) The artifact retrieval token produced by
    LegacyArtifactStagingService.CommitManifestResponse.
    """
    @property
    def status_endpoint(self) -> org.apache.beam.model.pipeline.v1.endpoints_pb2.ApiServiceDescriptor:
        """(optional) The endpoint that the runner is hosting for the SDK to submit
        status reports to during pipeline execution. This field will only be
        populated if the runner supports SDK status reports. For more details see
        https://s.apache.org/beam-fn-api-harness-status
        """
    @property
    def logging_endpoint(self) -> org.apache.beam.model.pipeline.v1.endpoints_pb2.ApiServiceDescriptor:
        """(optional) The logging endpoint this SDK should use."""
    @property
    def artifact_endpoint(self) -> org.apache.beam.model.pipeline.v1.endpoints_pb2.ApiServiceDescriptor:
        """(optional) The artifact retrieval endpoint this SDK should use."""
    @property
    def control_endpoint(self) -> org.apache.beam.model.pipeline.v1.endpoints_pb2.ApiServiceDescriptor:
        """(optional) The control endpoint this SDK should use."""
    @property
    def dependencies(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[org.apache.beam.model.pipeline.v1.beam_runner_api_pb2.ArtifactInformation]:
        """The set of dependencies that should be staged into this environment."""
    @property
    def runner_capabilities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """(optional) A set of capabilities that this SDK is allowed to use in its
        interactions with this runner.
        """
    @property
    def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """(optional) Runtime environment metadata that are static throughout the
        pipeline execution.
        """
    @property
    def sibling_worker_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """(optional) If this environment supports SIBLING_WORKERS, used to indicate
        the ids of sibling workers, if any, that should be started in addition
        to this worker (which already has its own worker id).
        """
    def __init__(
        self,
        *,
        pipeline_options: google.protobuf.struct_pb2.Struct | None = ...,
        retrieval_token: builtins.str | None = ...,
        status_endpoint: org.apache.beam.model.pipeline.v1.endpoints_pb2.ApiServiceDescriptor | None = ...,
        logging_endpoint: org.apache.beam.model.pipeline.v1.endpoints_pb2.ApiServiceDescriptor | None = ...,
        artifact_endpoint: org.apache.beam.model.pipeline.v1.endpoints_pb2.ApiServiceDescriptor | None = ...,
        control_endpoint: org.apache.beam.model.pipeline.v1.endpoints_pb2.ApiServiceDescriptor | None = ...,
        dependencies: collections.abc.Iterable[org.apache.beam.model.pipeline.v1.beam_runner_api_pb2.ArtifactInformation] | None = ...,
        runner_capabilities: collections.abc.Iterable[builtins.str] | None = ...,
        metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        sibling_worker_ids: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["artifact_endpoint", b"artifact_endpoint", "control_endpoint", b"control_endpoint", "logging_endpoint", b"logging_endpoint", "pipeline_options", b"pipeline_options", "status_endpoint", b"status_endpoint"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["artifact_endpoint", b"artifact_endpoint", "control_endpoint", b"control_endpoint", "dependencies", b"dependencies", "logging_endpoint", b"logging_endpoint", "metadata", b"metadata", "pipeline_options", b"pipeline_options", "retrieval_token", b"retrieval_token", "runner_capabilities", b"runner_capabilities", "sibling_worker_ids", b"sibling_worker_ids", "status_endpoint", b"status_endpoint"]) -> None: ...

global___ProvisionInfo = ProvisionInfo
