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

import builtins
import collections.abc
import dbtlabs.proto.public.v1.events.fusion.process.process_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import sys
import typing

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class InvocationMetrics(google.protobuf.message.Message):
    """Aggregate invocation metrics."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class NodeTypeCountsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    @typing.final
    class StatusCountsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    TOTAL_ERRORS_FIELD_NUMBER: builtins.int
    TOTAL_WARNINGS_FIELD_NUMBER: builtins.int
    AUTOFIX_SUGGESTIONS_FIELD_NUMBER: builtins.int
    NODE_TYPE_COUNTS_FIELD_NUMBER: builtins.int
    STATUS_COUNTS_FIELD_NUMBER: builtins.int
    total_errors: builtins.int
    total_warnings: builtins.int
    autofix_suggestions: builtins.int
    @property
    def node_type_counts(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.int]:
        """Counts of nodes processed by node type (e.g., "model", "test", "seed").
        Key is the lowercase node type name.
        """

    @property
    def status_counts(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.int]:
        """Counts of node outcomes by status category.
        Keys are: "success", "warn", "error", "reused", "skipped", "canceled", "no_op".
        Only non-zero counts are included.
        """

    def __init__(
        self,
        *,
        total_errors: builtins.int | None = ...,
        total_warnings: builtins.int | None = ...,
        autofix_suggestions: builtins.int | None = ...,
        node_type_counts: collections.abc.Mapping[builtins.str, builtins.int] | None = ...,
        status_counts: collections.abc.Mapping[builtins.str, builtins.int] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_autofix_suggestions", b"_autofix_suggestions", "_total_errors", b"_total_errors", "_total_warnings", b"_total_warnings", "autofix_suggestions", b"autofix_suggestions", "total_errors", b"total_errors", "total_warnings", b"total_warnings"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_autofix_suggestions", b"_autofix_suggestions", "_total_errors", b"_total_errors", "_total_warnings", b"_total_warnings", "autofix_suggestions", b"autofix_suggestions", "node_type_counts", b"node_type_counts", "status_counts", b"status_counts", "total_errors", b"total_errors", "total_warnings", b"total_warnings"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_autofix_suggestions", b"_autofix_suggestions"]) -> typing.Literal["autofix_suggestions"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_total_errors", b"_total_errors"]) -> typing.Literal["total_errors"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_total_warnings", b"_total_warnings"]) -> typing.Literal["total_warnings"] | None: ...

Global___InvocationMetrics: typing_extensions.TypeAlias = InvocationMetrics

@typing.final
class InvocationEvalArgs(google.protobuf.message.Message):
    """Structured evaluation arguments for the invocation."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    COMMAND_FIELD_NUMBER: builtins.int
    PROFILES_DIR_FIELD_NUMBER: builtins.int
    PACKAGES_INSTALL_PATH_FIELD_NUMBER: builtins.int
    TARGET_FIELD_NUMBER: builtins.int
    PROFILE_FIELD_NUMBER: builtins.int
    VARS_FIELD_NUMBER: builtins.int
    LIMIT_FIELD_NUMBER: builtins.int
    NUM_THREADS_FIELD_NUMBER: builtins.int
    SELECTOR_FIELD_NUMBER: builtins.int
    SELECT_FIELD_NUMBER: builtins.int
    EXCLUDE_FIELD_NUMBER: builtins.int
    INDIRECT_SELECTION_FIELD_NUMBER: builtins.int
    OUTPUT_KEYS_FIELD_NUMBER: builtins.int
    RESOURCE_TYPES_FIELD_NUMBER: builtins.int
    EXCLUDE_RESOURCE_TYPES_FIELD_NUMBER: builtins.int
    DEBUG_FIELD_NUMBER: builtins.int
    LOG_FORMAT_FIELD_NUMBER: builtins.int
    LOG_LEVEL_FIELD_NUMBER: builtins.int
    LOG_PATH_FIELD_NUMBER: builtins.int
    TARGET_PATH_FIELD_NUMBER: builtins.int
    PROJECT_DIR_FIELD_NUMBER: builtins.int
    QUIET_FIELD_NUMBER: builtins.int
    WRITE_JSON_FIELD_NUMBER: builtins.int
    WRITE_CATALOG_FIELD_NUMBER: builtins.int
    command: builtins.str
    """The dbt command executed, e.g. "run", "test", "build"."""
    profiles_dir: builtins.str
    """Common args

    The profile directory to load the profiles from
    """
    packages_install_path: builtins.str
    """The directory to install packages"""
    target: builtins.str
    """dbt target, e.g. "dev", "prod" """
    profile: builtins.str
    """Profile name used for the invocation"""
    vars: builtins.str
    """Vars to pass to the jinja environment. JSON blob string."""
    limit: builtins.int
    """Limiting number of shown rows. None means no limit; --limit -1 to remove limit"""
    num_threads: builtins.int
    """The number of threads to use"""
    selector: builtins.str
    """yaml selector"""
    indirect_selection: builtins.str
    """Indirect selection mode"""
    debug: builtins.bool
    """Debug flag"""
    log_format: builtins.str
    """Logging format"""
    log_level: builtins.str
    """Minimum severity for console/log file"""
    log_path: builtins.str
    """'log-path' for the current run, overriding 'DBT_LOG_PATH'."""
    target_path: builtins.str
    """The output directory for all produced assets"""
    project_dir: builtins.str
    """The directory to load the dbt project from"""
    quiet: builtins.bool
    """Suppress all non-error logging to stdout"""
    write_json: builtins.bool
    """Write JSON artifacts to disk"""
    write_catalog: builtins.bool
    """Write a catalog.json file to the target directory"""
    @property
    def select(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Select nodes to operate on"""

    @property
    def exclude(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Select nodes to exclude from selected nodes"""

    @property
    def output_keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Show output keys"""

    @property
    def resource_types(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Resource types to filter by"""

    @property
    def exclude_resource_types(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Exclude nodes of a specific type"""

    def __init__(
        self,
        *,
        command: builtins.str = ...,
        profiles_dir: builtins.str | None = ...,
        packages_install_path: builtins.str | None = ...,
        target: builtins.str | None = ...,
        profile: builtins.str | None = ...,
        vars: builtins.str = ...,
        limit: builtins.int | None = ...,
        num_threads: builtins.int | None = ...,
        selector: builtins.str | None = ...,
        select: collections.abc.Iterable[builtins.str] | None = ...,
        exclude: collections.abc.Iterable[builtins.str] | None = ...,
        indirect_selection: builtins.str | None = ...,
        output_keys: collections.abc.Iterable[builtins.str] | None = ...,
        resource_types: collections.abc.Iterable[builtins.str] | None = ...,
        exclude_resource_types: collections.abc.Iterable[builtins.str] | None = ...,
        debug: builtins.bool | None = ...,
        log_format: builtins.str | None = ...,
        log_level: builtins.str | None = ...,
        log_path: builtins.str | None = ...,
        target_path: builtins.str | None = ...,
        project_dir: builtins.str | None = ...,
        quiet: builtins.bool | None = ...,
        write_json: builtins.bool | None = ...,
        write_catalog: builtins.bool | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_debug", b"_debug", "_indirect_selection", b"_indirect_selection", "_limit", b"_limit", "_log_format", b"_log_format", "_log_level", b"_log_level", "_log_path", b"_log_path", "_num_threads", b"_num_threads", "_packages_install_path", b"_packages_install_path", "_profile", b"_profile", "_profiles_dir", b"_profiles_dir", "_project_dir", b"_project_dir", "_quiet", b"_quiet", "_selector", b"_selector", "_target", b"_target", "_target_path", b"_target_path", "_write_catalog", b"_write_catalog", "_write_json", b"_write_json", "debug", b"debug", "indirect_selection", b"indirect_selection", "limit", b"limit", "log_format", b"log_format", "log_level", b"log_level", "log_path", b"log_path", "num_threads", b"num_threads", "packages_install_path", b"packages_install_path", "profile", b"profile", "profiles_dir", b"profiles_dir", "project_dir", b"project_dir", "quiet", b"quiet", "selector", b"selector", "target", b"target", "target_path", b"target_path", "write_catalog", b"write_catalog", "write_json", b"write_json"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_debug", b"_debug", "_indirect_selection", b"_indirect_selection", "_limit", b"_limit", "_log_format", b"_log_format", "_log_level", b"_log_level", "_log_path", b"_log_path", "_num_threads", b"_num_threads", "_packages_install_path", b"_packages_install_path", "_profile", b"_profile", "_profiles_dir", b"_profiles_dir", "_project_dir", b"_project_dir", "_quiet", b"_quiet", "_selector", b"_selector", "_target", b"_target", "_target_path", b"_target_path", "_write_catalog", b"_write_catalog", "_write_json", b"_write_json", "command", b"command", "debug", b"debug", "exclude", b"exclude", "exclude_resource_types", b"exclude_resource_types", "indirect_selection", b"indirect_selection", "limit", b"limit", "log_format", b"log_format", "log_level", b"log_level", "log_path", b"log_path", "num_threads", b"num_threads", "output_keys", b"output_keys", "packages_install_path", b"packages_install_path", "profile", b"profile", "profiles_dir", b"profiles_dir", "project_dir", b"project_dir", "quiet", b"quiet", "resource_types", b"resource_types", "select", b"select", "selector", b"selector", "target", b"target", "target_path", b"target_path", "vars", b"vars", "write_catalog", b"write_catalog", "write_json", b"write_json"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_debug", b"_debug"]) -> typing.Literal["debug"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_indirect_selection", b"_indirect_selection"]) -> typing.Literal["indirect_selection"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_limit", b"_limit"]) -> typing.Literal["limit"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_log_format", b"_log_format"]) -> typing.Literal["log_format"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_log_level", b"_log_level"]) -> typing.Literal["log_level"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_log_path", b"_log_path"]) -> typing.Literal["log_path"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_num_threads", b"_num_threads"]) -> typing.Literal["num_threads"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_packages_install_path", b"_packages_install_path"]) -> typing.Literal["packages_install_path"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_profile", b"_profile"]) -> typing.Literal["profile"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_profiles_dir", b"_profiles_dir"]) -> typing.Literal["profiles_dir"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_project_dir", b"_project_dir"]) -> typing.Literal["project_dir"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_quiet", b"_quiet"]) -> typing.Literal["quiet"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_selector", b"_selector"]) -> typing.Literal["selector"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_target", b"_target"]) -> typing.Literal["target"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_target_path", b"_target_path"]) -> typing.Literal["target_path"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_write_catalog", b"_write_catalog"]) -> typing.Literal["write_catalog"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_write_json", b"_write_json"]) -> typing.Literal["write_json"] | None: ...

Global___InvocationEvalArgs: typing_extensions.TypeAlias = InvocationEvalArgs

@typing.final
class Invocation(google.protobuf.message.Message):
    """Invocation event holding identifying info and flattened attributes."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INVOCATION_ID_FIELD_NUMBER: builtins.int
    RAW_COMMAND_FIELD_NUMBER: builtins.int
    EVAL_ARGS_FIELD_NUMBER: builtins.int
    PROCESS_INFO_FIELD_NUMBER: builtins.int
    METRICS_FIELD_NUMBER: builtins.int
    PARENT_SPAN_ID_FIELD_NUMBER: builtins.int
    invocation_id: builtins.str
    """UUID string for the invocation id, either as passed in via args or generated (UUIDv7 in that case).
    Note, that `trace_id` is the same value stored as bytes and generally preferred
    for correlation with other events as it is present on all telemetry records.
    """
    raw_command: builtins.str
    """Raw command string as executed."""
    parent_span_id: builtins.int
    """Optional parent span ID for trace correlation.
    This allows linking this invocation to an external trace.
    """
    @property
    def eval_args(self) -> Global___InvocationEvalArgs:
        """Structured evaluation arguments."""

    @property
    def process_info(self) -> dbtlabs.proto.public.v1.events.fusion.process.process_pb2.Process:
        """Process-wide attributes."""

    @property
    def metrics(self) -> Global___InvocationMetrics:
        """Aggregate invocation metrics."""

    def __init__(
        self,
        *,
        invocation_id: builtins.str = ...,
        raw_command: builtins.str = ...,
        eval_args: Global___InvocationEvalArgs | None = ...,
        process_info: dbtlabs.proto.public.v1.events.fusion.process.process_pb2.Process | None = ...,
        metrics: Global___InvocationMetrics | None = ...,
        parent_span_id: builtins.int | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_parent_span_id", b"_parent_span_id", "eval_args", b"eval_args", "metrics", b"metrics", "parent_span_id", b"parent_span_id", "process_info", b"process_info"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_parent_span_id", b"_parent_span_id", "eval_args", b"eval_args", "invocation_id", b"invocation_id", "metrics", b"metrics", "parent_span_id", b"parent_span_id", "process_info", b"process_info", "raw_command", b"raw_command"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["_parent_span_id", b"_parent_span_id"]) -> typing.Literal["parent_span_id"] | None: ...

Global___Invocation: typing_extensions.TypeAlias = Invocation
