"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import flyteidl.core.compiler_pb2
import flyteidl.core.identifier_pb2
import flyteidl.core.workflow_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import google.protobuf.timestamp_pb2
import typing
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor = ...

class WorkflowCreateRequest(google.protobuf.message.Message):
    """Represents a request structure to create a revision of a workflow.
    See :ref:`ref_flyteidl.admin.Workflow` for more details
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    ID_FIELD_NUMBER: builtins.int
    SPEC_FIELD_NUMBER: builtins.int
    @property
    def id(self) -> flyteidl.core.identifier_pb2.Identifier:
        """id represents the unique identifier of the workflow.
        +required
        """
        pass
    @property
    def spec(self) -> global___WorkflowSpec:
        """Represents the specification for workflow.
        +required
        """
        pass
    def __init__(self,
        *,
        id : typing.Optional[flyteidl.core.identifier_pb2.Identifier] = ...,
        spec : typing.Optional[global___WorkflowSpec] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"id",b"id",u"spec",b"spec"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"id",b"id",u"spec",b"spec"]) -> None: ...
global___WorkflowCreateRequest = WorkflowCreateRequest

class WorkflowCreateResponse(google.protobuf.message.Message):
    """Purposefully empty, may be populated in the future."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    def __init__(self,
        ) -> None: ...
global___WorkflowCreateResponse = WorkflowCreateResponse

class Workflow(google.protobuf.message.Message):
    """Represents the workflow structure stored in the Admin
    A workflow is created by ordering tasks and associating outputs to inputs
    in order to produce a directed-acyclic execution graph.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    ID_FIELD_NUMBER: builtins.int
    CLOSURE_FIELD_NUMBER: builtins.int
    @property
    def id(self) -> flyteidl.core.identifier_pb2.Identifier:
        """id represents the unique identifier of the workflow."""
        pass
    @property
    def closure(self) -> global___WorkflowClosure:
        """closure encapsulates all the fields that maps to a compiled version of the workflow."""
        pass
    def __init__(self,
        *,
        id : typing.Optional[flyteidl.core.identifier_pb2.Identifier] = ...,
        closure : typing.Optional[global___WorkflowClosure] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"closure",b"closure",u"id",b"id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"closure",b"closure",u"id",b"id"]) -> None: ...
global___Workflow = Workflow

class WorkflowList(google.protobuf.message.Message):
    """Represents a list of workflows returned from the admin.
    See :ref:`ref_flyteidl.admin.Workflow` for more details
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    WORKFLOWS_FIELD_NUMBER: builtins.int
    TOKEN_FIELD_NUMBER: builtins.int
    @property
    def workflows(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Workflow]:
        """A list of workflows returned based on the request."""
        pass
    token: typing.Text = ...
    """In the case of multiple pages of results, the server-provided token can be used to fetch the next page
    in a query. If there are no more results, this value will be empty.
    """

    def __init__(self,
        *,
        workflows : typing.Optional[typing.Iterable[global___Workflow]] = ...,
        token : typing.Text = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"token",b"token",u"workflows",b"workflows"]) -> None: ...
global___WorkflowList = WorkflowList

class WorkflowSpec(google.protobuf.message.Message):
    """Represents a structure that encapsulates the specification of the workflow."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TEMPLATE_FIELD_NUMBER: builtins.int
    SUB_WORKFLOWS_FIELD_NUMBER: builtins.int
    @property
    def template(self) -> flyteidl.core.workflow_pb2.WorkflowTemplate:
        """Template of the task that encapsulates all the metadata of the workflow."""
        pass
    @property
    def sub_workflows(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[flyteidl.core.workflow_pb2.WorkflowTemplate]:
        """Workflows that are embedded into other workflows need to be passed alongside the parent workflow to the
        propeller compiler (since the compiler doesn't have any knowledge of other workflows - ie, it doesn't reach out
        to Admin to see other registered workflows).  In fact, subworkflows do not even need to be registered.
        """
        pass
    def __init__(self,
        *,
        template : typing.Optional[flyteidl.core.workflow_pb2.WorkflowTemplate] = ...,
        sub_workflows : typing.Optional[typing.Iterable[flyteidl.core.workflow_pb2.WorkflowTemplate]] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"template",b"template"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"sub_workflows",b"sub_workflows",u"template",b"template"]) -> None: ...
global___WorkflowSpec = WorkflowSpec

class WorkflowClosure(google.protobuf.message.Message):
    """A container holding the compiled workflow produced from the WorkflowSpec and additional metadata."""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    COMPILED_WORKFLOW_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    @property
    def compiled_workflow(self) -> flyteidl.core.compiler_pb2.CompiledWorkflowClosure:
        """Represents the compiled representation of the workflow from the specification provided."""
        pass
    @property
    def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Time at which the workflow was created."""
        pass
    def __init__(self,
        *,
        compiled_workflow : typing.Optional[flyteidl.core.compiler_pb2.CompiledWorkflowClosure] = ...,
        created_at : typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"compiled_workflow",b"compiled_workflow",u"created_at",b"created_at"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"compiled_workflow",b"compiled_workflow",u"created_at",b"created_at"]) -> None: ...
global___WorkflowClosure = WorkflowClosure
