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

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import google.protobuf.wrappers_pb2
import typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class PromptTruncationOptions(google.protobuf.message.Message):
    """Defines the options for truncating thread messages within a prompt."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MAX_PROMPT_TOKENS_FIELD_NUMBER: builtins.int
    @property
    def max_prompt_tokens(self) -> google.protobuf.wrappers_pb2.Int64Value:
        """The maximum number of tokens allowed in the prompt.
        If the prompt exceeds this limit, the thread messages will be truncated.
        Default max_prompt_tokens: 7000
        """

    def __init__(
        self,
        *,
        max_prompt_tokens: google.protobuf.wrappers_pb2.Int64Value | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["max_prompt_tokens", b"max_prompt_tokens"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["max_prompt_tokens", b"max_prompt_tokens"]) -> None: ...

global___PromptTruncationOptions = PromptTruncationOptions

@typing.final
class CompletionOptions(google.protobuf.message.Message):
    """Defines the options for completion generation."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MAX_TOKENS_FIELD_NUMBER: builtins.int
    TEMPERATURE_FIELD_NUMBER: builtins.int
    @property
    def max_tokens(self) -> google.protobuf.wrappers_pb2.Int64Value:
        """The limit on the number of tokens used for single completion generation.
        Must be greater than zero. This maximum allowed parameter value may depend on the model being used.
        """

    @property
    def temperature(self) -> google.protobuf.wrappers_pb2.DoubleValue:
        """Affects creativity and randomness of responses. Should be a double number between 0 (inclusive) and 1 (inclusive).
        Lower values produce more straightforward responses while higher values lead to increased creativity and randomness.
        Default temperature: 0.3
        """

    def __init__(
        self,
        *,
        max_tokens: google.protobuf.wrappers_pb2.Int64Value | None = ...,
        temperature: google.protobuf.wrappers_pb2.DoubleValue | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["max_tokens", b"max_tokens", "temperature", b"temperature"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["max_tokens", b"max_tokens", "temperature", b"temperature"]) -> None: ...

global___CompletionOptions = CompletionOptions

@typing.final
class SearchIndexTool(google.protobuf.message.Message):
    """Configures a tool that enables Retrieval-Augmented Generation (RAG) by allowing the assistant to search across a specified search index."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SEARCH_INDEX_IDS_FIELD_NUMBER: builtins.int
    MAX_NUM_RESULTS_FIELD_NUMBER: builtins.int
    @property
    def search_index_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """A list of search index IDs that this tool will query. Currently, only a single index ID is supported."""

    @property
    def max_num_results(self) -> google.protobuf.wrappers_pb2.Int64Value:
        """The maximum number of results to return from the search.
        Fewer results may be returned if necessary to fit within the prompt's token limit.
        This ensures that the combined prompt and search results do not exceed the token constraints.
        """

    def __init__(
        self,
        *,
        search_index_ids: collections.abc.Iterable[builtins.str] | None = ...,
        max_num_results: google.protobuf.wrappers_pb2.Int64Value | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["max_num_results", b"max_num_results"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["max_num_results", b"max_num_results", "search_index_ids", b"search_index_ids"]) -> None: ...

global___SearchIndexTool = SearchIndexTool

@typing.final
class Tool(google.protobuf.message.Message):
    """Represents a general tool that can be one of several types."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SEARCH_INDEX_FIELD_NUMBER: builtins.int
    @property
    def search_index(self) -> global___SearchIndexTool:
        """SearchIndexTool tool that performs search across specified indexes."""

    def __init__(
        self,
        *,
        search_index: global___SearchIndexTool | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["ToolType", b"ToolType", "search_index", b"search_index"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["ToolType", b"ToolType", "search_index", b"search_index"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["ToolType", b"ToolType"]) -> typing.Literal["search_index"] | None: ...

global___Tool = Tool
