"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
*!
Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""

from collections import abc as _abc
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf.internal import containers as _containers
import builtins as _builtins
import sys
import typing as _typing

if sys.version_info >= (3, 11):
    from typing import TypeAlias as _TypeAlias, Never as _Never
else:
    from typing_extensions import TypeAlias as _TypeAlias, Never as _Never

DESCRIPTOR: _descriptor.FileDescriptor

@_typing.final
class PageProfile(_message.Message):
    DESCRIPTOR: _descriptor.Descriptor

    COMMANDS_FIELD_NUMBER: _builtins.int
    EXEC_TIME_FIELD_NUMBER: _builtins.int
    PREP_TIME_FIELD_NUMBER: _builtins.int
    CONFIG_FIELD_NUMBER: _builtins.int
    UNCAUGHT_EXCEPTION_FIELD_NUMBER: _builtins.int
    ATTRIBUTIONS_FIELD_NUMBER: _builtins.int
    OS_FIELD_NUMBER: _builtins.int
    TIMEZONE_FIELD_NUMBER: _builtins.int
    HEADLESS_FIELD_NUMBER: _builtins.int
    IS_FRAGMENT_RUN_FIELD_NUMBER: _builtins.int
    SERVER_MODE_FIELD_NUMBER: _builtins.int
    INSTALLED_SKILLS_FIELD_NUMBER: _builtins.int
    INSTALLED_AGENTS_FIELD_NUMBER: _builtins.int
    exec_time: _builtins.int
    prep_time: _builtins.int
    uncaught_exception: _builtins.str
    os: _builtins.str
    timezone: _builtins.str
    headless: _builtins.bool
    is_fragment_run: _builtins.bool
    server_mode: _builtins.str
    """The server mode used to run the Streamlit app:
    - "starlette-managed": Starlette server managed by Streamlit (streamlit run CLI)
    - "starlette-app": st.App started via streamlit run
    - "asgi-server": st.App run directly with external ASGI server (uvicorn, gunicorn)
    - "asgi-mounted": st.App mounted on another ASGI framework (FastAPI, Starlette)
    """
    @_builtins.property
    def commands(self) -> _containers.RepeatedCompositeFieldContainer[Global___Command]: ...
    @_builtins.property
    def config(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
    @_builtins.property
    def attributions(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
    @_builtins.property
    def installed_skills(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]:
        """Streamlit-shipped agent skills detected on the user's system, encoded as
        "<location>:<harness>:<skill>" tokens. Locations are "home" (user home),
        "app" (directory of the main script), "repo" (nearest ancestor
        containing a ``.git`` directory, if different from ``app``), and
        "project" (the in-app installer's resolved root — the nearest
        ``.agents``/``.claude`` or ``.git`` ancestor — when different from both
        ``app`` and ``repo``). Harnesses
        are "agents", "claude", "codex", "cortex", "cursor", "gemini", and
        "opencode" (each uses its own skills directory convention). Skills are
        "developing-with-streamlit" and "finding-streamlit-skills".
        Empty when no bundled skills are installed.
        """

    @_builtins.property
    def installed_agents(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]:
        """Agent harnesses detected on the user's system, identified by the
        presence of the harness's home-level config directory (e.g. ~/.claude,
        ~/.codex, ~/.snowflake/cortex). Tokens match the harness names used
        in ``installed_skills``. Independent of whether Streamlit skills are
        installed in any of them. Empty when no harnesses are detected.
        """

    def __init__(
        self,
        *,
        commands: _abc.Iterable[Global___Command] | None = ...,
        exec_time: _builtins.int = ...,
        prep_time: _builtins.int = ...,
        config: _abc.Iterable[_builtins.str] | None = ...,
        uncaught_exception: _builtins.str = ...,
        attributions: _abc.Iterable[_builtins.str] | None = ...,
        os: _builtins.str = ...,
        timezone: _builtins.str = ...,
        headless: _builtins.bool = ...,
        is_fragment_run: _builtins.bool = ...,
        server_mode: _builtins.str = ...,
        installed_skills: _abc.Iterable[_builtins.str] | None = ...,
        installed_agents: _abc.Iterable[_builtins.str] | None = ...,
    ) -> None: ...
    _HasFieldArgType: _TypeAlias = _Never  # noqa: Y015
    def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
    _ClearFieldArgType: _TypeAlias = _typing.Literal["attributions", b"attributions", "commands", b"commands", "config", b"config", "exec_time", b"exec_time", "headless", b"headless", "installed_agents", b"installed_agents", "installed_skills", b"installed_skills", "is_fragment_run", b"is_fragment_run", "os", b"os", "prep_time", b"prep_time", "server_mode", b"server_mode", "timezone", b"timezone", "uncaught_exception", b"uncaught_exception"]  # noqa: Y015
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___PageProfile: _TypeAlias = PageProfile  # noqa: Y015

@_typing.final
class Argument(_message.Message):
    """The field names are used as part of the event json sent
    to our metrics provider. we are using short names to
    optimize for the size.
    """

    DESCRIPTOR: _descriptor.Descriptor

    K_FIELD_NUMBER: _builtins.int
    T_FIELD_NUMBER: _builtins.int
    M_FIELD_NUMBER: _builtins.int
    P_FIELD_NUMBER: _builtins.int
    k: _builtins.str
    """The keyword of the argument:"""
    t: _builtins.str
    """The type of the argument:"""
    m: _builtins.str
    """Some metadata about the argument value:"""
    p: _builtins.int
    """Contains the position (if positional argument):"""
    def __init__(
        self,
        *,
        k: _builtins.str = ...,
        t: _builtins.str = ...,
        m: _builtins.str = ...,
        p: _builtins.int = ...,
    ) -> None: ...
    _HasFieldArgType: _TypeAlias = _Never  # noqa: Y015
    def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
    _ClearFieldArgType: _TypeAlias = _typing.Literal["k", b"k", "m", b"m", "p", b"p", "t", b"t"]  # noqa: Y015
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___Argument: _TypeAlias = Argument  # noqa: Y015

@_typing.final
class Command(_message.Message):
    DESCRIPTOR: _descriptor.Descriptor

    NAME_FIELD_NUMBER: _builtins.int
    ARGS_FIELD_NUMBER: _builtins.int
    TIME_FIELD_NUMBER: _builtins.int
    name: _builtins.str
    time: _builtins.int
    @_builtins.property
    def args(self) -> _containers.RepeatedCompositeFieldContainer[Global___Argument]: ...
    def __init__(
        self,
        *,
        name: _builtins.str = ...,
        args: _abc.Iterable[Global___Argument] | None = ...,
        time: _builtins.int = ...,
    ) -> None: ...
    _HasFieldArgType: _TypeAlias = _Never  # noqa: Y015
    def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
    _ClearFieldArgType: _TypeAlias = _typing.Literal["args", b"args", "name", b"name", "time", b"time"]  # noqa: Y015
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    def WhichOneof(self, oneof_group: _Never) -> None: ...

Global___Command: _TypeAlias = Command  # noqa: Y015
