"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import google.protobuf.descriptor
import google.protobuf.message
import google.protobuf.timestamp_pb2
import qwak.administration.v0.environments.environment_pb2
import qwak.user_application.v0.user_application_pb2
import sys
import typing

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class CreateOptions(google.protobuf.message.Message):
    """Options for create user application instance"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    IDENTIFIER_FIELD_NUMBER: builtins.int
    KIND_SEM_VERSION_FIELD_NUMBER: builtins.int
    SPEC_FIELD_NUMBER: builtins.int
    RESOURCE_RESERVATION_FIELD_NUMBER: builtins.int
    @property
    def identifier(self) -> global___Identifier:
        """Identifier of user application instance"""
    kind_sem_version: builtins.str
    """Optional: version of the kind, latest if not sent (template version)"""
    @property
    def spec(self) -> qwak.user_application.v0.user_application_pb2.Spec:
        """The specification of the the user application instance"""
    @property
    def resource_reservation(self) -> global___ResourceReservation:
        """Resource reservation for the user application instance"""
    def __init__(
        self,
        *,
        identifier: global___Identifier | None = ...,
        kind_sem_version: builtins.str = ...,
        spec: qwak.user_application.v0.user_application_pb2.Spec | None = ...,
        resource_reservation: global___ResourceReservation | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["identifier", b"identifier", "resource_reservation", b"resource_reservation", "spec", b"spec"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["identifier", b"identifier", "kind_sem_version", b"kind_sem_version", "resource_reservation", b"resource_reservation", "spec", b"spec"]) -> None: ...

global___CreateOptions = CreateOptions

class UpdateSpecOptions(google.protobuf.message.Message):
    """Options for updating user application instance"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    IDENTIFIER_FIELD_NUMBER: builtins.int
    SPEC_FIELD_NUMBER: builtins.int
    RESOURCE_RESERVATION_FIELD_NUMBER: builtins.int
    REVISION_RESTRICTION_FIELD_NUMBER: builtins.int
    KIND_VERSION_UPDATE_OPTIONS_FIELD_NUMBER: builtins.int
    STATIC_GLOBAL_CONFIG_UPDATE_OPTIONS_FIELD_NUMBER: builtins.int
    @property
    def identifier(self) -> global___Identifier:
        """Identifier of the user application instance"""
    @property
    def spec(self) -> qwak.user_application.v0.user_application_pb2.Spec:
        """The specification of the the user application instance"""
    @property
    def resource_reservation(self) -> global___ResourceReservation:
        """Resource reservation for the user application instance"""
    @property
    def revision_restriction(self) -> global___RevisionRestriction:
        """Revision restriction"""
    @property
    def kind_version_update_options(self) -> global___KindVersionUpdateOptions: ...
    @property
    def static_global_config_update_options(self) -> global___StaticGlobalConfigurationUpdateOptions: ...
    def __init__(
        self,
        *,
        identifier: global___Identifier | None = ...,
        spec: qwak.user_application.v0.user_application_pb2.Spec | None = ...,
        resource_reservation: global___ResourceReservation | None = ...,
        revision_restriction: global___RevisionRestriction | None = ...,
        kind_version_update_options: global___KindVersionUpdateOptions | None = ...,
        static_global_config_update_options: global___StaticGlobalConfigurationUpdateOptions | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["identifier", b"identifier", "kind_version_update_opt", b"kind_version_update_opt", "kind_version_update_options", b"kind_version_update_options", "resource_reservation", b"resource_reservation", "revision_restriction", b"revision_restriction", "spec", b"spec", "static_global_config_update_options", b"static_global_config_update_options", "static_global_update_opt", b"static_global_update_opt"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["identifier", b"identifier", "kind_version_update_opt", b"kind_version_update_opt", "kind_version_update_options", b"kind_version_update_options", "resource_reservation", b"resource_reservation", "revision_restriction", b"revision_restriction", "spec", b"spec", "static_global_config_update_options", b"static_global_config_update_options", "static_global_update_opt", b"static_global_update_opt"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing_extensions.Literal["kind_version_update_opt", b"kind_version_update_opt"]) -> typing_extensions.Literal["kind_version_update_options"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing_extensions.Literal["static_global_update_opt", b"static_global_update_opt"]) -> typing_extensions.Literal["static_global_config_update_options"] | None: ...

global___UpdateSpecOptions = UpdateSpecOptions

class ResourceReservation(google.protobuf.message.Message):
    """Amount of resources in the reservation"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CPU_CORES_FIELD_NUMBER: builtins.int
    MEMORY_MB_FIELD_NUMBER: builtins.int
    cpu_cores: builtins.float
    """Cpu core"""
    memory_mb: builtins.int
    """Megabyte of RAM"""
    def __init__(
        self,
        *,
        cpu_cores: builtins.float = ...,
        memory_mb: builtins.int = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["cpu_cores", b"cpu_cores", "memory_mb", b"memory_mb"]) -> None: ...

global___ResourceReservation = ResourceReservation

class Description(google.protobuf.message.Message):
    """Full description of user application instance"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    METADATA_FIELD_NUMBER: builtins.int
    SPEC_DESCRIPTION_FIELD_NUMBER: builtins.int
    STATUS_DESCRIPTION_FIELD_NUMBER: builtins.int
    @property
    def metadata(self) -> global___Metadata:
        """Metadata of user application instance"""
    @property
    def spec_description(self) -> global___SpecDescription:
        """Spec description"""
    @property
    def status_description(self) -> global___StatusDescription:
        """Status description"""
    def __init__(
        self,
        *,
        metadata: global___Metadata | None = ...,
        spec_description: global___SpecDescription | None = ...,
        status_description: global___StatusDescription | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "spec_description", b"spec_description", "status_description", b"status_description"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "spec_description", b"spec_description", "status_description", b"status_description"]) -> None: ...

global___Description = Description

class SpecDescription(google.protobuf.message.Message):
    """Spec description"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPEC_FIELD_NUMBER: builtins.int
    STATIC_CONFIGURATION_FIELD_NUMBER: builtins.int
    @property
    def spec(self) -> qwak.user_application.v0.user_application_pb2.Spec:
        """The spec of the user application instance"""
    @property
    def static_configuration(self) -> global___GlobalConfiguration:
        """Configuration on creation / update"""
    def __init__(
        self,
        *,
        spec: qwak.user_application.v0.user_application_pb2.Spec | None = ...,
        static_configuration: global___GlobalConfiguration | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["spec", b"spec", "static_configuration", b"static_configuration"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["spec", b"spec", "static_configuration", b"static_configuration"]) -> None: ...

global___SpecDescription = SpecDescription

class StatusDescription(google.protobuf.message.Message):
    """Status description"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    STATUS_FIELD_NUMBER: builtins.int
    @property
    def status(self) -> qwak.user_application.v0.user_application_pb2.Status:
        """Status of the user application instance"""
    def __init__(
        self,
        *,
        status: qwak.user_application.v0.user_application_pb2.Status | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["status", b"status"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ...

global___StatusDescription = StatusDescription

class Metadata(google.protobuf.message.Message):
    """Metadata of user application instance"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    IDENTIFIER_FIELD_NUMBER: builtins.int
    KIND_VERSION_FIELD_NUMBER: builtins.int
    SPEC_LAST_UPDATED_FIELD_NUMBER: builtins.int
    STATUS_LAST_UPDATED_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    CLUSTER_ID_FIELD_NUMBER: builtins.int
    UUID_FIELD_NUMBER: builtins.int
    LAST_DEPLOYED_SPEC_REVISION_FIELD_NUMBER: builtins.int
    SPEC_REVISION_FIELD_NUMBER: builtins.int
    STATUS_REVISION_FIELD_NUMBER: builtins.int
    ENVIRONMENT_SEQUENCER_WHEN_CHANGED_FIELD_NUMBER: builtins.int
    @property
    def identifier(self) -> global___Identifier:
        """Identifier of user application instance"""
    kind_version: builtins.str
    """Kind version (template version) of the user application instance"""
    @property
    def spec_last_updated(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """When the spec has been updated"""
    @property
    def status_last_updated(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """When the status has been updated"""
    @property
    def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """When the instance has been created"""
    cluster_id: builtins.str
    """The cluster id which the user applications instance is live in"""
    uuid: builtins.str
    """UUID of user applications instance"""
    last_deployed_spec_revision: builtins.int
    """Last spec revision which has been applied"""
    spec_revision: builtins.int
    """Revision (version) of the user application instance spec"""
    status_revision: builtins.int
    """Revision (version) of the user application instance status"""
    environment_sequencer_when_changed: builtins.int
    """The sequencer value of the environment on the last change"""
    def __init__(
        self,
        *,
        identifier: global___Identifier | None = ...,
        kind_version: builtins.str = ...,
        spec_last_updated: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        status_last_updated: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        created_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        cluster_id: builtins.str = ...,
        uuid: builtins.str = ...,
        last_deployed_spec_revision: builtins.int = ...,
        spec_revision: builtins.int = ...,
        status_revision: builtins.int = ...,
        environment_sequencer_when_changed: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["created_at", b"created_at", "identifier", b"identifier", "spec_last_updated", b"spec_last_updated", "status_last_updated", b"status_last_updated"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["cluster_id", b"cluster_id", "created_at", b"created_at", "environment_sequencer_when_changed", b"environment_sequencer_when_changed", "identifier", b"identifier", "kind_version", b"kind_version", "last_deployed_spec_revision", b"last_deployed_spec_revision", "spec_last_updated", b"spec_last_updated", "spec_revision", b"spec_revision", "status_last_updated", b"status_last_updated", "status_revision", b"status_revision", "uuid", b"uuid"]) -> None: ...

global___Metadata = Metadata

class Identifier(google.protobuf.message.Message):
    """Identifier of user application instance"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ACCOUNT_ID_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    ENVIRONMENT_ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    account_id: builtins.str
    """Qwak account if of the user applications instance"""
    type: qwak.user_application.v0.user_application_pb2.Type.ValueType
    """User application instance type"""
    environment_id: builtins.str
    """The environment id the user applications instance liviing in"""
    name: builtins.str
    """Name of the user applications instance"""
    def __init__(
        self,
        *,
        account_id: builtins.str = ...,
        type: qwak.user_application.v0.user_application_pb2.Type.ValueType = ...,
        environment_id: builtins.str = ...,
        name: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["account_id", b"account_id", "environment_id", b"environment_id", "name", b"name", "type", b"type"]) -> None: ...

global___Identifier = Identifier

class RevisionRestriction(google.protobuf.message.Message):
    """Set a limit on the current revision to eliminate concurrent update"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CURRENT_SPEC_REVISION_FIELD_NUMBER: builtins.int
    current_spec_revision: builtins.int
    """Update only if the current revision is as specified"""
    def __init__(
        self,
        *,
        current_spec_revision: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["current_spec_revision", b"current_spec_revision", "restriction_type", b"restriction_type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["current_spec_revision", b"current_spec_revision", "restriction_type", b"restriction_type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["restriction_type", b"restriction_type"]) -> typing_extensions.Literal["current_spec_revision"] | None: ...

global___RevisionRestriction = RevisionRestriction

class GlobalConfiguration(google.protobuf.message.Message):
    """Global configuration for the application"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ENVIRONMENT_FIELD_NUMBER: builtins.int
    @property
    def environment(self) -> qwak.administration.v0.environments.environment_pb2.QwakEnvironment:
        """Environment configuration"""
    def __init__(
        self,
        *,
        environment: qwak.administration.v0.environments.environment_pb2.QwakEnvironment | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["environment", b"environment"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["environment", b"environment"]) -> None: ...

global___GlobalConfiguration = GlobalConfiguration

class KindVersionUpdateOptions(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    KEEP_EXISTING_VERSION_FIELD_NUMBER: builtins.int
    LATEST_KIND_VERSION_FIELD_NUMBER: builtins.int
    EXPLICIT_KIND_VERSION_FIELD_NUMBER: builtins.int
    @property
    def keep_existing_version(self) -> global___KeepExistingKindVersion:
        """keep the existing kind version (chart version) used by the application"""
    @property
    def latest_kind_version(self) -> global___LatestKindVersion:
        """use the latest kind (chat) version"""
    @property
    def explicit_kind_version(self) -> global___ExplicitKindVersion:
        """use an explicit kind (chart) version"""
    def __init__(
        self,
        *,
        keep_existing_version: global___KeepExistingKindVersion | None = ...,
        latest_kind_version: global___LatestKindVersion | None = ...,
        explicit_kind_version: global___ExplicitKindVersion | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["explicit_kind_version", b"explicit_kind_version", "keep_existing_version", b"keep_existing_version", "latest_kind_version", b"latest_kind_version", "update_type", b"update_type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["explicit_kind_version", b"explicit_kind_version", "keep_existing_version", b"keep_existing_version", "latest_kind_version", b"latest_kind_version", "update_type", b"update_type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["update_type", b"update_type"]) -> typing_extensions.Literal["keep_existing_version", "latest_kind_version", "explicit_kind_version"] | None: ...

global___KindVersionUpdateOptions = KindVersionUpdateOptions

class KeepExistingKindVersion(google.protobuf.message.Message):
    """don't change the kind version"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___KeepExistingKindVersion = KeepExistingKindVersion

class LatestKindVersion(google.protobuf.message.Message):
    """use the latest kind version"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___LatestKindVersion = LatestKindVersion

class ExplicitKindVersion(google.protobuf.message.Message):
    """use an explicit kind version"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    KIND_VERSION_FIELD_NUMBER: builtins.int
    kind_version: builtins.str
    def __init__(
        self,
        *,
        kind_version: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["kind_version", b"kind_version"]) -> None: ...

global___ExplicitKindVersion = ExplicitKindVersion

class StaticGlobalConfigurationUpdateOptions(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    KEEP_EXISTING_STATIC_GLOBAL_CONFIGURATION_FIELD_NUMBER: builtins.int
    REFRESH_STATIC_GLOBAL_CONFIGURATION_FIELD_NUMBER: builtins.int
    @property
    def keep_existing_static_global_configuration(self) -> global___KeepExistingStaticGlobalConfiguration:
        """keep the existing static global configuration"""
    @property
    def refresh_static_global_configuration(self) -> global___RefreshStaticGlobalConfiguration:
        """refresh the static global configuration"""
    def __init__(
        self,
        *,
        keep_existing_static_global_configuration: global___KeepExistingStaticGlobalConfiguration | None = ...,
        refresh_static_global_configuration: global___RefreshStaticGlobalConfiguration | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["keep_existing_static_global_configuration", b"keep_existing_static_global_configuration", "refresh_static_global_configuration", b"refresh_static_global_configuration", "update_type", b"update_type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["keep_existing_static_global_configuration", b"keep_existing_static_global_configuration", "refresh_static_global_configuration", b"refresh_static_global_configuration", "update_type", b"update_type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["update_type", b"update_type"]) -> typing_extensions.Literal["keep_existing_static_global_configuration", "refresh_static_global_configuration"] | None: ...

global___StaticGlobalConfigurationUpdateOptions = StaticGlobalConfigurationUpdateOptions

class KeepExistingStaticGlobalConfiguration(google.protobuf.message.Message):
    """keep the existing global configuration, don't refresh it"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___KeepExistingStaticGlobalConfiguration = KeepExistingStaticGlobalConfiguration

class RefreshStaticGlobalConfiguration(google.protobuf.message.Message):
    """refresh the global configuration"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___RefreshStaticGlobalConfiguration = RefreshStaticGlobalConfiguration
