"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from acuvity.types import BaseModel
import pydantic
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict


class TooluseTypedDict(TypedDict):
    r"""Represents the tool use which are instructions by a model on what tool to call
    and how.
    """

    call_id: str
    r"""The ID of the tool use which the user or application must pass when posting back
    the tool call results.
    """
    name: str
    r"""The name of the tool to call."""
    input: NotRequired[str]
    r"""The input to the tool call. This should be a JSON object which must conform to
    the JSON schema as was previously defined for the tool.
    """
    server_name: NotRequired[str]
    r"""The name of the remote MCP server that will execute this call."""


class Tooluse(BaseModel):
    r"""Represents the tool use which are instructions by a model on what tool to call
    and how.
    """

    call_id: Annotated[str, pydantic.Field(alias="callID")]
    r"""The ID of the tool use which the user or application must pass when posting back
    the tool call results.
    """

    name: str
    r"""The name of the tool to call."""

    input: Optional[str] = None
    r"""The input to the tool call. This should be a JSON object which must conform to
    the JSON schema as was previously defined for the tool.
    """

    server_name: Annotated[Optional[str], pydantic.Field(alias="serverName")] = None
    r"""The name of the remote MCP server that will execute this call."""
