"""
@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.feature_store.features.execution_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 BackfillSpec(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FEATURESET_NAME_FIELD_NUMBER: builtins.int
    INTERVAL_BACKFILL_FIELD_NUMBER: builtins.int
    FULL_RESET_BACKFILL_FIELD_NUMBER: builtins.int
    COMMENT_FIELD_NUMBER: builtins.int
    BACKFILL_TYPE_FIELD_NUMBER: builtins.int
    NO_OVERRIDE_FIELD_NUMBER: builtins.int
    EXPLICIT_CONFIGURATION_FIELD_NUMBER: builtins.int
    BACKFILL_ID_FIELD_NUMBER: builtins.int
    featureset_name: builtins.str
    """name of the featureset"""
    @property
    def interval_backfill(self) -> global___IntervalBackfillWindow:
        """finite interval. the start of the interval
        must not be prior to the featureset's backfill start
        """
    @property
    def full_reset_backfill(self) -> global___FullResetBackfillWindow:
        """Full reset"""
    comment: builtins.str
    """Optional comment for this backfill"""
    @property
    def backfill_type(self) -> global___BackfillType:
        """type of backfill (scheduled/incremental etc.)"""
    @property
    def no_override(self) -> global___ImplicitResourceConfiguration:
        """no override of the resources - take what's already defined for that FS"""
    @property
    def explicit_configuration(self) -> global___ExplicitResourceConfiguration:
        """use ad-hoc configuration just for the backfill"""
    backfill_id: builtins.str
    """ID of this backfill - set by the service
    upon submitting the backfill request (a value set by the client is ignored)
    """
    def __init__(
        self,
        *,
        featureset_name: builtins.str = ...,
        interval_backfill: global___IntervalBackfillWindow | None = ...,
        full_reset_backfill: global___FullResetBackfillWindow | None = ...,
        comment: builtins.str = ...,
        backfill_type: global___BackfillType | None = ...,
        no_override: global___ImplicitResourceConfiguration | None = ...,
        explicit_configuration: global___ExplicitResourceConfiguration | None = ...,
        backfill_id: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["backfill_type", b"backfill_type", "backfill_window_type", b"backfill_window_type", "explicit_configuration", b"explicit_configuration", "full_reset_backfill", b"full_reset_backfill", "interval_backfill", b"interval_backfill", "no_override", b"no_override", "resource_configuration_type", b"resource_configuration_type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["backfill_id", b"backfill_id", "backfill_type", b"backfill_type", "backfill_window_type", b"backfill_window_type", "comment", b"comment", "explicit_configuration", b"explicit_configuration", "featureset_name", b"featureset_name", "full_reset_backfill", b"full_reset_backfill", "interval_backfill", b"interval_backfill", "no_override", b"no_override", "resource_configuration_type", b"resource_configuration_type"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing_extensions.Literal["backfill_window_type", b"backfill_window_type"]) -> typing_extensions.Literal["interval_backfill", "full_reset_backfill"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing_extensions.Literal["resource_configuration_type", b"resource_configuration_type"]) -> typing_extensions.Literal["no_override", "explicit_configuration"] | None: ...

global___BackfillSpec = BackfillSpec

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

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

global___ImplicitResourceConfiguration = ImplicitResourceConfiguration

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

    CLUSTER_TEMPLATE_FIELD_NUMBER: builtins.int
    cluster_template: qwak.feature_store.features.execution_pb2.ClusterTemplate.ValueType
    def __init__(
        self,
        *,
        cluster_template: qwak.feature_store.features.execution_pb2.ClusterTemplate.ValueType = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["cluster_template", b"cluster_template", "resource_config_type", b"resource_config_type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["cluster_template", b"cluster_template", "resource_config_type", b"resource_config_type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["resource_config_type", b"resource_config_type"]) -> typing_extensions.Literal["cluster_template"] | None: ...

global___ExplicitResourceConfiguration = ExplicitResourceConfiguration

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

    AS_SCHEDULED_FIELD_NUMBER: builtins.int
    @property
    def as_scheduled(self) -> global___AsScheduledBackfillType:
        """as-scheduled, batches are performed according to the cron"""
    def __init__(
        self,
        *,
        as_scheduled: global___AsScheduledBackfillType | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["as_scheduled", b"as_scheduled", "backfill_type", b"backfill_type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["as_scheduled", b"as_scheduled", "backfill_type", b"backfill_type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["backfill_type", b"backfill_type"]) -> typing_extensions.Literal["as_scheduled"] | None: ...

global___BackfillType = BackfillType

class AsScheduledBackfillType(google.protobuf.message.Message):
    """backfill that runs as scheduled, meaning all logical batches are performed"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___AsScheduledBackfillType = AsScheduledBackfillType

class IntervalBackfillWindow(google.protobuf.message.Message):
    """represents a backfill window where a (finite) interval is being replaced"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    BACKFILL_START_FIELD_NUMBER: builtins.int
    BACKFILL_END_FIELD_NUMBER: builtins.int
    @property
    def backfill_start(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """the start of the backfill"""
    @property
    def backfill_end(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """the end of the backfill"""
    def __init__(
        self,
        *,
        backfill_start: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        backfill_end: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["backfill_end", b"backfill_end", "backfill_start", b"backfill_start"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["backfill_end", b"backfill_end", "backfill_start", b"backfill_start"]) -> None: ...

global___IntervalBackfillWindow = IntervalBackfillWindow

class FullResetBackfillWindow(google.protobuf.message.Message):
    """represents a complete reset, everything is replaced.
    note that in this case the start of the backfill is inferred from the
    featureset definition
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___FullResetBackfillWindow = FullResetBackfillWindow
