"""AUTO-GENERATED by adk-fluent generator -- do not edit manually
Generated from google-adk 1.25.0 (manifest 14070a0ff3fb)"""

from collections.abc import Callable
from typing import Any, Self

from google.adk.agents.base_agent import BaseAgent
from google.adk.agents.loop_agent import LoopAgent
from google.adk.agents.parallel_agent import ParallelAgent
from google.adk.agents.sequential_agent import SequentialAgent

from adk_fluent._base import BuilderBase

class Loop(BuilderBase):
    """A shell agent that run its sub-agents in a loop."""
    def __init__(self, name: str) -> None: ...
    def describe(self, value: str) -> Self: ...
    def after_agent(self, *fns: Callable[..., Any]) -> Self: ...
    def after_agent_if(self, condition: bool, fn: Callable[..., Any]) -> Self: ...
    def before_agent(self, *fns: Callable[..., Any]) -> Self: ...
    def before_agent_if(self, condition: bool, fn: Callable[..., Any]) -> Self: ...
    def sub_agents(self, value: list[BaseAgent]) -> Self: ...
    def max_iterations(self, value: int | None) -> Self: ...
    def step(self, value: BaseAgent) -> Self: ...
    def sub_agent(self, value: BaseAgent) -> Self: ...
    def to_ir(self) -> Any: ...
    def build(self) -> LoopAgent: ...

class FanOut(BuilderBase):
    """A shell agent that runs its sub-agents in parallel in an isolated manner."""
    def __init__(self, name: str) -> None: ...
    def describe(self, value: str) -> Self: ...
    def after_agent(self, *fns: Callable[..., Any]) -> Self: ...
    def after_agent_if(self, condition: bool, fn: Callable[..., Any]) -> Self: ...
    def before_agent(self, *fns: Callable[..., Any]) -> Self: ...
    def before_agent_if(self, condition: bool, fn: Callable[..., Any]) -> Self: ...
    def sub_agents(self, value: list[BaseAgent]) -> Self: ...
    def branch(self, value: BaseAgent) -> Self: ...
    def sub_agent(self, value: BaseAgent) -> Self: ...
    def to_ir(self) -> Any: ...
    def build(self) -> ParallelAgent: ...

class Pipeline(BuilderBase):
    """A shell agent that runs its sub-agents in sequence."""
    def __init__(self, name: str) -> None: ...
    def describe(self, value: str) -> Self: ...
    def after_agent(self, *fns: Callable[..., Any]) -> Self: ...
    def after_agent_if(self, condition: bool, fn: Callable[..., Any]) -> Self: ...
    def before_agent(self, *fns: Callable[..., Any]) -> Self: ...
    def before_agent_if(self, condition: bool, fn: Callable[..., Any]) -> Self: ...
    def sub_agents(self, value: list[BaseAgent]) -> Self: ...
    def step(self, value: BaseAgent) -> Self: ...
    def sub_agent(self, value: BaseAgent) -> Self: ...
    def to_ir(self) -> Any: ...
    def build(self) -> SequentialAgent: ...
