# AUTO-GENERATED by adk-fluent generator — do not edit manually
# Generated from google-adk 1.25.0
# Timestamp: 2026-02-17T13:14:37.902084+00:00

from typing import Any, AsyncGenerator, Callable, Self

from adk_fluent._base import BuilderBase

from google.adk.agents.base_agent import BaseAgent as _ADK_BaseAgent
from google.adk.agents.llm_agent import LlmAgent

class BaseAgent(BuilderBase):
    """Base class for all agents in Agent Development Kit."""
    def __init__(self, name: str) -> None: ...
    def describe(self, value: str) -> Self: ...
    def after_agent(self, fn: Callable) -> Self: ...
    def before_agent(self, fn: Callable) -> Self: ...
    def after_agent_if(self, condition: bool, fn: Callable) -> Self: ...
    def before_agent_if(self, condition: bool, fn: Callable) -> Self: ...
    def sub_agents(self, value: list[BaseAgent]) -> Self: ...
    def build(self) -> BaseAgent: ...

class Agent(BuilderBase):
    """LLM-based Agent."""
    def __init__(self, name: str, model: str | None = None) -> None: ...
    def describe(self, value: str) -> Self: ...
    def global_instruct(self, value: Union[str, Callable[ReadonlyContext, Union[str, Awaitable[str]]]]) -> Self: ...
    def history(self, value: Literal[default, none]) -> Self: ...
    def instruct(self, value: Union[str, Callable[ReadonlyContext, Union[str, Awaitable[str]]]]) -> Self: ...
    def outputs(self, value: Union[str, NoneType]) -> Self: ...
    def static(self, value: Union[Content, str, File, Part, list[Union[str, File, Part]], NoneType]) -> Self: ...
    def after_agent(self, fn: Callable) -> Self: ...
    def after_model(self, fn: Callable) -> Self: ...
    def after_tool(self, fn: Callable) -> Self: ...
    def before_agent(self, fn: Callable) -> Self: ...
    def before_model(self, fn: Callable) -> Self: ...
    def before_tool(self, fn: Callable) -> Self: ...
    def on_model_error(self, fn: Callable) -> Self: ...
    def on_tool_error(self, fn: Callable) -> Self: ...
    def after_agent_if(self, condition: bool, fn: Callable) -> Self: ...
    def after_model_if(self, condition: bool, fn: Callable) -> Self: ...
    def after_tool_if(self, condition: bool, fn: Callable) -> Self: ...
    def before_agent_if(self, condition: bool, fn: Callable) -> Self: ...
    def before_model_if(self, condition: bool, fn: Callable) -> Self: ...
    def before_tool_if(self, condition: bool, fn: Callable) -> Self: ...
    def on_model_error_if(self, condition: bool, fn: Callable) -> Self: ...
    def on_tool_error_if(self, condition: bool, fn: Callable) -> Self: ...
    def sub_agents(self, value: list[BaseAgent]) -> Self: ...
    def model(self, value: Union[str, BaseLlm]) -> Self: ...
    def tools(self, value: list[Union[Callable, BaseTool, BaseToolset]]) -> Self: ...
    def generate_content_config(self, value: Union[GenerateContentConfig, NoneType]) -> Self: ...
    def disallow_transfer_to_parent(self, value: bool) -> Self: ...
    def disallow_transfer_to_peers(self, value: bool) -> Self: ...
    def input_schema(self, value: Union[type[BaseModel], NoneType]) -> Self: ...
    def output_schema(self, value: Union[type[BaseModel], NoneType]) -> Self: ...
    def planner(self, value: Union[BasePlanner, NoneType]) -> Self: ...
    def code_executor(self, value: Union[BaseCodeExecutor, NoneType]) -> Self: ...
    def tool(self, fn_or_tool: Callable | BaseTool) -> Self: ...
    def apply(self, stack: MiddlewareStack) -> Self: ...
    def member(self, agent: BaseAgent | AgentBuilder) -> Self: ...
    def delegate(self, agent) -> Self: ...
    def guardrail(self, fn: Callable) -> Self: ...
    def ask(self, prompt: str) -> str: ...
    async def ask_async(self, prompt: str) -> str: ...
    async def stream(self, prompt: str) -> AsyncIterator[str]: ...
    def test(self, prompt: str, *, contains: str | None = None, matches: str | None = None, equals: str | None = None) -> Self: ...
    def session(self): ...
    def map(self, prompts: list[str], *, concurrency: int = 5) -> list[str]: ...
    async def map_async(self, prompts: list[str], *, concurrency: int = 5) -> list[str]: ...
    async def events(self, prompt: str) -> AsyncIterator: ...
    def build(self) -> LlmAgent: ...
