"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import abc
import agent.agent.v1alpha.agent_pb2
import agent.agent.v1alpha.chat_pb2
import agent.agent.v1alpha.table_pb2
import collections.abc
import grpc
import grpc.aio
import typing

_T = typing.TypeVar('_T')

class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta):
    ...

class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext):  # type: ignore
    ...

class AgentPublicServiceStub:
    """AgentPublicService exposes the public endpoints that allow clients to
    manage agents.
    """

    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Liveness: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.agent_pb2.LivenessRequest,
        agent.agent.v1alpha.agent_pb2.LivenessResponse,
    ]
    """Check if the agent server is alive

    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md.
    """
    Readiness: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.agent_pb2.ReadinessRequest,
        agent.agent.v1alpha.agent_pb2.ReadinessResponse,
    ]
    """Check if the agent server is ready

    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
    """
    CreateChat: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.CreateChatRequest,
        agent.agent.v1alpha.chat_pb2.CreateChatResponse,
    ]
    """Create a chat

    Creates a chat.
    """
    ListChats: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.ListChatsRequest,
        agent.agent.v1alpha.chat_pb2.ListChatsResponse,
    ]
    """List chats

    Returns a list of chats.
    """
    UpdateChat: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.UpdateChatRequest,
        agent.agent.v1alpha.chat_pb2.UpdateChatResponse,
    ]
    """Update a chat

    Updates a chat.
    """
    GetChat: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.GetChatRequest,
        agent.agent.v1alpha.chat_pb2.GetChatResponse,
    ]
    """Get a chat

    Gets a chat.
    """
    DeleteChat: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.DeleteChatRequest,
        agent.agent.v1alpha.chat_pb2.DeleteChatResponse,
    ]
    """Delete a chat

    Deletes a chat.
    """
    ListMessages: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.ListMessagesRequest,
        agent.agent.v1alpha.chat_pb2.ListMessagesResponse,
    ]
    """List messages

    Returns a paginated list of messages.
    """
    ChatWithAgent: grpc.UnaryStreamMultiCallable[
        agent.agent.v1alpha.chat_pb2.ChatWithAgentRequest,
        agent.agent.v1alpha.chat_pb2.ChatWithAgentResponse,
    ]
    """Chat with agent

    Chat with the agent.
    """
    BindChatTable: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.BindChatTableRequest,
        agent.agent.v1alpha.table_pb2.BindChatTableResponse,
    ]
    """Bind table to chat

    Binds a table to a chat.
    """
    UnbindChatTable: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UnbindChatTableRequest,
        agent.agent.v1alpha.table_pb2.UnbindChatTableResponse,
    ]
    """Unbind table from chat

    Unbinds a table from a chat.
    """
    ListChatTables: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.ListChatTablesRequest,
        agent.agent.v1alpha.table_pb2.ListChatTablesResponse,
    ]
    """List chat tables

    Returns a list of tables bound to a chat.
    """
    ListTables: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.ListTablesRequest,
        agent.agent.v1alpha.table_pb2.ListTablesResponse,
    ]
    """List tables

    Returns a paginated list of tables.
    """
    CreateTable: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.CreateTableRequest,
        agent.agent.v1alpha.table_pb2.CreateTableResponse,
    ]
    """Create a table

    Creates a table.
    """
    GetTable: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.GetTableRequest,
        agent.agent.v1alpha.table_pb2.GetTableResponse,
    ]
    """Get table

    Gets a table.
    """
    UpdateTable: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UpdateTableRequest,
        agent.agent.v1alpha.table_pb2.UpdateTableResponse,
    ]
    """Update table

    Updates a table.
    """
    DeleteTable: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.DeleteTableRequest,
        agent.agent.v1alpha.table_pb2.DeleteTableResponse,
    ]
    """Delete table

    Deletes a table.
    """
    ChatWithTableBuilderAgent: grpc.UnaryStreamMultiCallable[
        agent.agent.v1alpha.chat_pb2.ChatWithTableBuilderAgentRequest,
        agent.agent.v1alpha.chat_pb2.ChatWithTableBuilderAgentResponse,
    ]
    """Chat with table builder agent

    Chat with the table builder agent.
    """
    ListTableBuilderAgentMessages: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.ListTableBuilderAgentMessagesRequest,
        agent.agent.v1alpha.chat_pb2.ListTableBuilderAgentMessagesResponse,
    ]
    """List table builder agent messages

    Lists the messages from the table builder agent.
    """
    GetColumnDefinitions: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.GetColumnDefinitionsRequest,
        agent.agent.v1alpha.table_pb2.GetColumnDefinitionsResponse,
    ]
    """Get column definitions

    Gets column definitions for a table.
    """
    UpdateColumnDefinitions: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UpdateColumnDefinitionsRequest,
        agent.agent.v1alpha.table_pb2.UpdateColumnDefinitionsResponse,
    ]
    """Update column definitions

    Updates column definitions for a table. When updating the column
    definitions, if the column's agent instructions are updated, the existing
    cells in that column will be cleared and recomputed. This ensures that all
    data reflects the latest instructions.
    """
    GetColumnDefinition: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.GetColumnDefinitionRequest,
        agent.agent.v1alpha.table_pb2.GetColumnDefinitionResponse,
    ]
    """Get column definition

    Gets a column definition for a table.
    """
    RecomputeColumn: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.RecomputeColumnRequest,
        agent.agent.v1alpha.table_pb2.RecomputeColumnResponse,
    ]
    """Recompute column

    Recomputes all the cells in a column.
    """
    ListRows: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.ListRowsRequest,
        agent.agent.v1alpha.table_pb2.ListRowsResponse,
    ]
    """List rows

    Returns list of rows.
    """
    GetRow: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.GetRowRequest,
        agent.agent.v1alpha.table_pb2.GetRowResponse,
    ]
    """Get row

    Gets a row from a table.
    """
    InsertRow: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.InsertRowRequest,
        agent.agent.v1alpha.table_pb2.InsertRowResponse,
    ]
    """Insert row

    Inserts a row into a table.
    """
    UpdateRow: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UpdateRowRequest,
        agent.agent.v1alpha.table_pb2.UpdateRowResponse,
    ]
    """Update row

    Updates a row in a table.
    """
    UpdateRows: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UpdateRowsRequest,
        agent.agent.v1alpha.table_pb2.UpdateRowsResponse,
    ]
    """Update rows

    Updates multiple rows in a table.
    """
    DeleteRow: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.DeleteRowRequest,
        agent.agent.v1alpha.table_pb2.DeleteRowResponse,
    ]
    """Delete row

    Deletes a row from a table.
    """
    DeleteRows: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.DeleteRowsRequest,
        agent.agent.v1alpha.table_pb2.DeleteRowsResponse,
    ]
    """Delete rows

    Deletes multiple rows from a table.
    """
    MoveRows: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.MoveRowsRequest,
        agent.agent.v1alpha.table_pb2.MoveRowsResponse,
    ]
    """Move row

    Moves a row to a new position in a table.
    """
    GetCell: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.GetCellRequest,
        agent.agent.v1alpha.table_pb2.GetCellResponse,
    ]
    """Get cell

    Gets a cell from a table.
    """
    UpdateCell: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UpdateCellRequest,
        agent.agent.v1alpha.table_pb2.UpdateCellResponse,
    ]
    """Update cell

    Updates a cell in a table.
    """
    ResetCell: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.ResetCellRequest,
        agent.agent.v1alpha.table_pb2.ResetCellResponse,
    ]
    """Reset cell

    Resets a cell in a table. Resetting a cell clears its user input and
    reverts to using the computed value if available. This operation only
    affects cells that have a user input set.
    """
    RecomputeCell: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.RecomputeCellRequest,
        agent.agent.v1alpha.table_pb2.RecomputeCellResponse,
    ]
    """Recompute cell

    Recomputes a cell in a table.
    """
    LockCell: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.LockCellRequest,
        agent.agent.v1alpha.table_pb2.LockCellResponse,
    ]
    """Lock cell

    Locks a cell in a table.
    """
    UnlockCell: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UnlockCellRequest,
        agent.agent.v1alpha.table_pb2.UnlockCellResponse,
    ]
    """Unlock cell

    Unlocks a cell in a table.
    """
    GetTableEvents: grpc.UnaryStreamMultiCallable[
        agent.agent.v1alpha.table_pb2.GetTableEventsRequest,
        agent.agent.v1alpha.table_pb2.GetTableEventsResponse,
    ]
    """Get table events

    Returns a list of events for a table.
    """
    ExportTable: grpc.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.ExportTableRequest,
        agent.agent.v1alpha.table_pb2.ExportTableResponse,
    ]
    """Export table

    Exports table data.
    """

class AgentPublicServiceAsyncStub:
    """AgentPublicService exposes the public endpoints that allow clients to
    manage agents.
    """

    Liveness: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.agent_pb2.LivenessRequest,
        agent.agent.v1alpha.agent_pb2.LivenessResponse,
    ]
    """Check if the agent server is alive

    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md.
    """
    Readiness: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.agent_pb2.ReadinessRequest,
        agent.agent.v1alpha.agent_pb2.ReadinessResponse,
    ]
    """Check if the agent server is ready

    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
    """
    CreateChat: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.CreateChatRequest,
        agent.agent.v1alpha.chat_pb2.CreateChatResponse,
    ]
    """Create a chat

    Creates a chat.
    """
    ListChats: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.ListChatsRequest,
        agent.agent.v1alpha.chat_pb2.ListChatsResponse,
    ]
    """List chats

    Returns a list of chats.
    """
    UpdateChat: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.UpdateChatRequest,
        agent.agent.v1alpha.chat_pb2.UpdateChatResponse,
    ]
    """Update a chat

    Updates a chat.
    """
    GetChat: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.GetChatRequest,
        agent.agent.v1alpha.chat_pb2.GetChatResponse,
    ]
    """Get a chat

    Gets a chat.
    """
    DeleteChat: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.DeleteChatRequest,
        agent.agent.v1alpha.chat_pb2.DeleteChatResponse,
    ]
    """Delete a chat

    Deletes a chat.
    """
    ListMessages: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.ListMessagesRequest,
        agent.agent.v1alpha.chat_pb2.ListMessagesResponse,
    ]
    """List messages

    Returns a paginated list of messages.
    """
    ChatWithAgent: grpc.aio.UnaryStreamMultiCallable[
        agent.agent.v1alpha.chat_pb2.ChatWithAgentRequest,
        agent.agent.v1alpha.chat_pb2.ChatWithAgentResponse,
    ]
    """Chat with agent

    Chat with the agent.
    """
    BindChatTable: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.BindChatTableRequest,
        agent.agent.v1alpha.table_pb2.BindChatTableResponse,
    ]
    """Bind table to chat

    Binds a table to a chat.
    """
    UnbindChatTable: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UnbindChatTableRequest,
        agent.agent.v1alpha.table_pb2.UnbindChatTableResponse,
    ]
    """Unbind table from chat

    Unbinds a table from a chat.
    """
    ListChatTables: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.ListChatTablesRequest,
        agent.agent.v1alpha.table_pb2.ListChatTablesResponse,
    ]
    """List chat tables

    Returns a list of tables bound to a chat.
    """
    ListTables: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.ListTablesRequest,
        agent.agent.v1alpha.table_pb2.ListTablesResponse,
    ]
    """List tables

    Returns a paginated list of tables.
    """
    CreateTable: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.CreateTableRequest,
        agent.agent.v1alpha.table_pb2.CreateTableResponse,
    ]
    """Create a table

    Creates a table.
    """
    GetTable: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.GetTableRequest,
        agent.agent.v1alpha.table_pb2.GetTableResponse,
    ]
    """Get table

    Gets a table.
    """
    UpdateTable: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UpdateTableRequest,
        agent.agent.v1alpha.table_pb2.UpdateTableResponse,
    ]
    """Update table

    Updates a table.
    """
    DeleteTable: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.DeleteTableRequest,
        agent.agent.v1alpha.table_pb2.DeleteTableResponse,
    ]
    """Delete table

    Deletes a table.
    """
    ChatWithTableBuilderAgent: grpc.aio.UnaryStreamMultiCallable[
        agent.agent.v1alpha.chat_pb2.ChatWithTableBuilderAgentRequest,
        agent.agent.v1alpha.chat_pb2.ChatWithTableBuilderAgentResponse,
    ]
    """Chat with table builder agent

    Chat with the table builder agent.
    """
    ListTableBuilderAgentMessages: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.chat_pb2.ListTableBuilderAgentMessagesRequest,
        agent.agent.v1alpha.chat_pb2.ListTableBuilderAgentMessagesResponse,
    ]
    """List table builder agent messages

    Lists the messages from the table builder agent.
    """
    GetColumnDefinitions: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.GetColumnDefinitionsRequest,
        agent.agent.v1alpha.table_pb2.GetColumnDefinitionsResponse,
    ]
    """Get column definitions

    Gets column definitions for a table.
    """
    UpdateColumnDefinitions: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UpdateColumnDefinitionsRequest,
        agent.agent.v1alpha.table_pb2.UpdateColumnDefinitionsResponse,
    ]
    """Update column definitions

    Updates column definitions for a table. When updating the column
    definitions, if the column's agent instructions are updated, the existing
    cells in that column will be cleared and recomputed. This ensures that all
    data reflects the latest instructions.
    """
    GetColumnDefinition: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.GetColumnDefinitionRequest,
        agent.agent.v1alpha.table_pb2.GetColumnDefinitionResponse,
    ]
    """Get column definition

    Gets a column definition for a table.
    """
    RecomputeColumn: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.RecomputeColumnRequest,
        agent.agent.v1alpha.table_pb2.RecomputeColumnResponse,
    ]
    """Recompute column

    Recomputes all the cells in a column.
    """
    ListRows: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.ListRowsRequest,
        agent.agent.v1alpha.table_pb2.ListRowsResponse,
    ]
    """List rows

    Returns list of rows.
    """
    GetRow: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.GetRowRequest,
        agent.agent.v1alpha.table_pb2.GetRowResponse,
    ]
    """Get row

    Gets a row from a table.
    """
    InsertRow: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.InsertRowRequest,
        agent.agent.v1alpha.table_pb2.InsertRowResponse,
    ]
    """Insert row

    Inserts a row into a table.
    """
    UpdateRow: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UpdateRowRequest,
        agent.agent.v1alpha.table_pb2.UpdateRowResponse,
    ]
    """Update row

    Updates a row in a table.
    """
    UpdateRows: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UpdateRowsRequest,
        agent.agent.v1alpha.table_pb2.UpdateRowsResponse,
    ]
    """Update rows

    Updates multiple rows in a table.
    """
    DeleteRow: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.DeleteRowRequest,
        agent.agent.v1alpha.table_pb2.DeleteRowResponse,
    ]
    """Delete row

    Deletes a row from a table.
    """
    DeleteRows: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.DeleteRowsRequest,
        agent.agent.v1alpha.table_pb2.DeleteRowsResponse,
    ]
    """Delete rows

    Deletes multiple rows from a table.
    """
    MoveRows: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.MoveRowsRequest,
        agent.agent.v1alpha.table_pb2.MoveRowsResponse,
    ]
    """Move row

    Moves a row to a new position in a table.
    """
    GetCell: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.GetCellRequest,
        agent.agent.v1alpha.table_pb2.GetCellResponse,
    ]
    """Get cell

    Gets a cell from a table.
    """
    UpdateCell: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UpdateCellRequest,
        agent.agent.v1alpha.table_pb2.UpdateCellResponse,
    ]
    """Update cell

    Updates a cell in a table.
    """
    ResetCell: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.ResetCellRequest,
        agent.agent.v1alpha.table_pb2.ResetCellResponse,
    ]
    """Reset cell

    Resets a cell in a table. Resetting a cell clears its user input and
    reverts to using the computed value if available. This operation only
    affects cells that have a user input set.
    """
    RecomputeCell: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.RecomputeCellRequest,
        agent.agent.v1alpha.table_pb2.RecomputeCellResponse,
    ]
    """Recompute cell

    Recomputes a cell in a table.
    """
    LockCell: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.LockCellRequest,
        agent.agent.v1alpha.table_pb2.LockCellResponse,
    ]
    """Lock cell

    Locks a cell in a table.
    """
    UnlockCell: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.UnlockCellRequest,
        agent.agent.v1alpha.table_pb2.UnlockCellResponse,
    ]
    """Unlock cell

    Unlocks a cell in a table.
    """
    GetTableEvents: grpc.aio.UnaryStreamMultiCallable[
        agent.agent.v1alpha.table_pb2.GetTableEventsRequest,
        agent.agent.v1alpha.table_pb2.GetTableEventsResponse,
    ]
    """Get table events

    Returns a list of events for a table.
    """
    ExportTable: grpc.aio.UnaryUnaryMultiCallable[
        agent.agent.v1alpha.table_pb2.ExportTableRequest,
        agent.agent.v1alpha.table_pb2.ExportTableResponse,
    ]
    """Export table

    Exports table data.
    """

class AgentPublicServiceServicer(metaclass=abc.ABCMeta):
    """AgentPublicService exposes the public endpoints that allow clients to
    manage agents.
    """

    @abc.abstractmethod
    def Liveness(
        self,
        request: agent.agent.v1alpha.agent_pb2.LivenessRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.agent_pb2.LivenessResponse, collections.abc.Awaitable[agent.agent.v1alpha.agent_pb2.LivenessResponse]]:
        """Check if the agent server is alive

        See https://github.com/grpc/grpc/blob/master/doc/health-checking.md.
        """
    @abc.abstractmethod
    def Readiness(
        self,
        request: agent.agent.v1alpha.agent_pb2.ReadinessRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.agent_pb2.ReadinessResponse, collections.abc.Awaitable[agent.agent.v1alpha.agent_pb2.ReadinessResponse]]:
        """Check if the agent server is ready

        See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
        """
    @abc.abstractmethod
    def CreateChat(
        self,
        request: agent.agent.v1alpha.chat_pb2.CreateChatRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.chat_pb2.CreateChatResponse, collections.abc.Awaitable[agent.agent.v1alpha.chat_pb2.CreateChatResponse]]:
        """Create a chat

        Creates a chat.
        """
    @abc.abstractmethod
    def ListChats(
        self,
        request: agent.agent.v1alpha.chat_pb2.ListChatsRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.chat_pb2.ListChatsResponse, collections.abc.Awaitable[agent.agent.v1alpha.chat_pb2.ListChatsResponse]]:
        """List chats

        Returns a list of chats.
        """
    @abc.abstractmethod
    def UpdateChat(
        self,
        request: agent.agent.v1alpha.chat_pb2.UpdateChatRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.chat_pb2.UpdateChatResponse, collections.abc.Awaitable[agent.agent.v1alpha.chat_pb2.UpdateChatResponse]]:
        """Update a chat

        Updates a chat.
        """
    @abc.abstractmethod
    def GetChat(
        self,
        request: agent.agent.v1alpha.chat_pb2.GetChatRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.chat_pb2.GetChatResponse, collections.abc.Awaitable[agent.agent.v1alpha.chat_pb2.GetChatResponse]]:
        """Get a chat

        Gets a chat.
        """
    @abc.abstractmethod
    def DeleteChat(
        self,
        request: agent.agent.v1alpha.chat_pb2.DeleteChatRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.chat_pb2.DeleteChatResponse, collections.abc.Awaitable[agent.agent.v1alpha.chat_pb2.DeleteChatResponse]]:
        """Delete a chat

        Deletes a chat.
        """
    @abc.abstractmethod
    def ListMessages(
        self,
        request: agent.agent.v1alpha.chat_pb2.ListMessagesRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.chat_pb2.ListMessagesResponse, collections.abc.Awaitable[agent.agent.v1alpha.chat_pb2.ListMessagesResponse]]:
        """List messages

        Returns a paginated list of messages.
        """
    @abc.abstractmethod
    def ChatWithAgent(
        self,
        request: agent.agent.v1alpha.chat_pb2.ChatWithAgentRequest,
        context: _ServicerContext,
    ) -> typing.Union[collections.abc.Iterator[agent.agent.v1alpha.chat_pb2.ChatWithAgentResponse], collections.abc.AsyncIterator[agent.agent.v1alpha.chat_pb2.ChatWithAgentResponse]]:
        """Chat with agent

        Chat with the agent.
        """
    @abc.abstractmethod
    def BindChatTable(
        self,
        request: agent.agent.v1alpha.table_pb2.BindChatTableRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.BindChatTableResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.BindChatTableResponse]]:
        """Bind table to chat

        Binds a table to a chat.
        """
    @abc.abstractmethod
    def UnbindChatTable(
        self,
        request: agent.agent.v1alpha.table_pb2.UnbindChatTableRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.UnbindChatTableResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.UnbindChatTableResponse]]:
        """Unbind table from chat

        Unbinds a table from a chat.
        """
    @abc.abstractmethod
    def ListChatTables(
        self,
        request: agent.agent.v1alpha.table_pb2.ListChatTablesRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.ListChatTablesResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.ListChatTablesResponse]]:
        """List chat tables

        Returns a list of tables bound to a chat.
        """
    @abc.abstractmethod
    def ListTables(
        self,
        request: agent.agent.v1alpha.table_pb2.ListTablesRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.ListTablesResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.ListTablesResponse]]:
        """List tables

        Returns a paginated list of tables.
        """
    @abc.abstractmethod
    def CreateTable(
        self,
        request: agent.agent.v1alpha.table_pb2.CreateTableRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.CreateTableResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.CreateTableResponse]]:
        """Create a table

        Creates a table.
        """
    @abc.abstractmethod
    def GetTable(
        self,
        request: agent.agent.v1alpha.table_pb2.GetTableRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.GetTableResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.GetTableResponse]]:
        """Get table

        Gets a table.
        """
    @abc.abstractmethod
    def UpdateTable(
        self,
        request: agent.agent.v1alpha.table_pb2.UpdateTableRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.UpdateTableResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.UpdateTableResponse]]:
        """Update table

        Updates a table.
        """
    @abc.abstractmethod
    def DeleteTable(
        self,
        request: agent.agent.v1alpha.table_pb2.DeleteTableRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.DeleteTableResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.DeleteTableResponse]]:
        """Delete table

        Deletes a table.
        """
    @abc.abstractmethod
    def ChatWithTableBuilderAgent(
        self,
        request: agent.agent.v1alpha.chat_pb2.ChatWithTableBuilderAgentRequest,
        context: _ServicerContext,
    ) -> typing.Union[collections.abc.Iterator[agent.agent.v1alpha.chat_pb2.ChatWithTableBuilderAgentResponse], collections.abc.AsyncIterator[agent.agent.v1alpha.chat_pb2.ChatWithTableBuilderAgentResponse]]:
        """Chat with table builder agent

        Chat with the table builder agent.
        """
    @abc.abstractmethod
    def ListTableBuilderAgentMessages(
        self,
        request: agent.agent.v1alpha.chat_pb2.ListTableBuilderAgentMessagesRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.chat_pb2.ListTableBuilderAgentMessagesResponse, collections.abc.Awaitable[agent.agent.v1alpha.chat_pb2.ListTableBuilderAgentMessagesResponse]]:
        """List table builder agent messages

        Lists the messages from the table builder agent.
        """
    @abc.abstractmethod
    def GetColumnDefinitions(
        self,
        request: agent.agent.v1alpha.table_pb2.GetColumnDefinitionsRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.GetColumnDefinitionsResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.GetColumnDefinitionsResponse]]:
        """Get column definitions

        Gets column definitions for a table.
        """
    @abc.abstractmethod
    def UpdateColumnDefinitions(
        self,
        request: agent.agent.v1alpha.table_pb2.UpdateColumnDefinitionsRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.UpdateColumnDefinitionsResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.UpdateColumnDefinitionsResponse]]:
        """Update column definitions

        Updates column definitions for a table. When updating the column
        definitions, if the column's agent instructions are updated, the existing
        cells in that column will be cleared and recomputed. This ensures that all
        data reflects the latest instructions.
        """
    @abc.abstractmethod
    def GetColumnDefinition(
        self,
        request: agent.agent.v1alpha.table_pb2.GetColumnDefinitionRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.GetColumnDefinitionResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.GetColumnDefinitionResponse]]:
        """Get column definition

        Gets a column definition for a table.
        """
    @abc.abstractmethod
    def RecomputeColumn(
        self,
        request: agent.agent.v1alpha.table_pb2.RecomputeColumnRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.RecomputeColumnResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.RecomputeColumnResponse]]:
        """Recompute column

        Recomputes all the cells in a column.
        """
    @abc.abstractmethod
    def ListRows(
        self,
        request: agent.agent.v1alpha.table_pb2.ListRowsRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.ListRowsResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.ListRowsResponse]]:
        """List rows

        Returns list of rows.
        """
    @abc.abstractmethod
    def GetRow(
        self,
        request: agent.agent.v1alpha.table_pb2.GetRowRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.GetRowResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.GetRowResponse]]:
        """Get row

        Gets a row from a table.
        """
    @abc.abstractmethod
    def InsertRow(
        self,
        request: agent.agent.v1alpha.table_pb2.InsertRowRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.InsertRowResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.InsertRowResponse]]:
        """Insert row

        Inserts a row into a table.
        """
    @abc.abstractmethod
    def UpdateRow(
        self,
        request: agent.agent.v1alpha.table_pb2.UpdateRowRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.UpdateRowResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.UpdateRowResponse]]:
        """Update row

        Updates a row in a table.
        """
    @abc.abstractmethod
    def UpdateRows(
        self,
        request: agent.agent.v1alpha.table_pb2.UpdateRowsRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.UpdateRowsResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.UpdateRowsResponse]]:
        """Update rows

        Updates multiple rows in a table.
        """
    @abc.abstractmethod
    def DeleteRow(
        self,
        request: agent.agent.v1alpha.table_pb2.DeleteRowRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.DeleteRowResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.DeleteRowResponse]]:
        """Delete row

        Deletes a row from a table.
        """
    @abc.abstractmethod
    def DeleteRows(
        self,
        request: agent.agent.v1alpha.table_pb2.DeleteRowsRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.DeleteRowsResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.DeleteRowsResponse]]:
        """Delete rows

        Deletes multiple rows from a table.
        """
    @abc.abstractmethod
    def MoveRows(
        self,
        request: agent.agent.v1alpha.table_pb2.MoveRowsRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.MoveRowsResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.MoveRowsResponse]]:
        """Move row

        Moves a row to a new position in a table.
        """
    @abc.abstractmethod
    def GetCell(
        self,
        request: agent.agent.v1alpha.table_pb2.GetCellRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.GetCellResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.GetCellResponse]]:
        """Get cell

        Gets a cell from a table.
        """
    @abc.abstractmethod
    def UpdateCell(
        self,
        request: agent.agent.v1alpha.table_pb2.UpdateCellRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.UpdateCellResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.UpdateCellResponse]]:
        """Update cell

        Updates a cell in a table.
        """
    @abc.abstractmethod
    def ResetCell(
        self,
        request: agent.agent.v1alpha.table_pb2.ResetCellRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.ResetCellResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.ResetCellResponse]]:
        """Reset cell

        Resets a cell in a table. Resetting a cell clears its user input and
        reverts to using the computed value if available. This operation only
        affects cells that have a user input set.
        """
    @abc.abstractmethod
    def RecomputeCell(
        self,
        request: agent.agent.v1alpha.table_pb2.RecomputeCellRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.RecomputeCellResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.RecomputeCellResponse]]:
        """Recompute cell

        Recomputes a cell in a table.
        """
    @abc.abstractmethod
    def LockCell(
        self,
        request: agent.agent.v1alpha.table_pb2.LockCellRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.LockCellResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.LockCellResponse]]:
        """Lock cell

        Locks a cell in a table.
        """
    @abc.abstractmethod
    def UnlockCell(
        self,
        request: agent.agent.v1alpha.table_pb2.UnlockCellRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.UnlockCellResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.UnlockCellResponse]]:
        """Unlock cell

        Unlocks a cell in a table.
        """
    @abc.abstractmethod
    def GetTableEvents(
        self,
        request: agent.agent.v1alpha.table_pb2.GetTableEventsRequest,
        context: _ServicerContext,
    ) -> typing.Union[collections.abc.Iterator[agent.agent.v1alpha.table_pb2.GetTableEventsResponse], collections.abc.AsyncIterator[agent.agent.v1alpha.table_pb2.GetTableEventsResponse]]:
        """Get table events

        Returns a list of events for a table.
        """
    @abc.abstractmethod
    def ExportTable(
        self,
        request: agent.agent.v1alpha.table_pb2.ExportTableRequest,
        context: _ServicerContext,
    ) -> typing.Union[agent.agent.v1alpha.table_pb2.ExportTableResponse, collections.abc.Awaitable[agent.agent.v1alpha.table_pb2.ExportTableResponse]]:
        """Export table

        Exports table data.
        """

def add_AgentPublicServiceServicer_to_server(servicer: AgentPublicServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ...
