"""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 Self

from google.adk.agents.llm_agent import InstructionProvider
from google.adk.cli.plugins.recordings_plugin import RecordingsPlugin as _ADK_RecordingsPlugin
from google.adk.cli.plugins.replay_plugin import ReplayPlugin as _ADK_ReplayPlugin
from google.adk.plugins.base_plugin import BasePlugin as _ADK_BasePlugin
from google.adk.plugins.bigquery_agent_analytics_plugin import (
    BigQueryAgentAnalyticsPlugin as _ADK_BigQueryAgentAnalyticsPlugin,
)
from google.adk.plugins.bigquery_agent_analytics_plugin import BigQueryLoggerConfig
from google.adk.plugins.context_filter_plugin import ContextFilterPlugin as _ADK_ContextFilterPlugin
from google.adk.plugins.debug_logging_plugin import DebugLoggingPlugin as _ADK_DebugLoggingPlugin
from google.adk.plugins.global_instruction_plugin import GlobalInstructionPlugin as _ADK_GlobalInstructionPlugin
from google.adk.plugins.logging_plugin import LoggingPlugin as _ADK_LoggingPlugin
from google.adk.plugins.multimodal_tool_results_plugin import (
    MultimodalToolResultsPlugin as _ADK_MultimodalToolResultsPlugin,
)
from google.adk.plugins.reflect_retry_tool_plugin import ReflectAndRetryToolPlugin as _ADK_ReflectAndRetryToolPlugin
from google.adk.plugins.reflect_retry_tool_plugin import TrackingScope
from google.adk.plugins.save_files_as_artifacts_plugin import (
    SaveFilesAsArtifactsPlugin as _ADK_SaveFilesAsArtifactsPlugin,
)
from google.adk.tools.agent_simulator.agent_simulator_plugin import AgentSimulatorPlugin as _ADK_AgentSimulatorPlugin
from google.genai.types import Content

from adk_fluent._base import BuilderBase

class RecordingsPlugin(BuilderBase):
    """Plugin for recording ADK agent interactions."""
    def __init__(self) -> None: ...
    def name(self, value: str) -> Self: ...
    def build(self) -> _ADK_RecordingsPlugin: ...

class ReplayPlugin(BuilderBase):
    """Plugin for replaying ADK agent interactions from recordings."""
    def __init__(self) -> None: ...
    def name(self, value: str) -> Self: ...
    def build(self) -> _ADK_ReplayPlugin: ...

class BasePlugin(BuilderBase):
    """Base class for creating plugins."""
    def __init__(self, name: str) -> None: ...
    def build(self) -> _ADK_BasePlugin: ...

class BigQueryAgentAnalyticsPlugin(BuilderBase):
    """BigQuery Agent Analytics Plugin (v2.0 using Write API)."""
    def __init__(self, project_id: str, dataset_id: str, kwargs: str) -> None: ...
    def table_id(self, value: str | None) -> Self: ...
    def config(self, value: BigQueryLoggerConfig | None) -> Self: ...
    def location(self, value: str) -> Self: ...
    def build(self) -> _ADK_BigQueryAgentAnalyticsPlugin: ...

class ContextFilterPlugin(BuilderBase):
    """A plugin that filters the LLM context to reduce its size."""
    def __init__(self) -> None: ...
    def num_invocations_to_keep(self, value: int | None) -> Self: ...
    def custom_filter(self, value: Callable[[list[Content]], list[Content]] | None) -> Self: ...
    def name(self, value: str) -> Self: ...
    def build(self) -> _ADK_ContextFilterPlugin: ...

class DebugLoggingPlugin(BuilderBase):
    """A plugin that captures complete debug information to a file."""
    def __init__(self) -> None: ...
    def name(self, value: str) -> Self: ...
    def output_path(self, value: str) -> Self: ...
    def include_session_state(self, value: bool) -> Self: ...
    def include_system_instruction(self, value: bool) -> Self: ...
    def build(self) -> _ADK_DebugLoggingPlugin: ...

class GlobalInstructionPlugin(BuilderBase):
    """Plugin that provides global instructions functionality at the App level."""
    def __init__(self) -> None: ...
    def global_instruction(self, value: str | InstructionProvider) -> Self: ...
    def name(self, value: str) -> Self: ...
    def build(self) -> _ADK_GlobalInstructionPlugin: ...

class LoggingPlugin(BuilderBase):
    """A plugin that logs important information at each callback point."""
    def __init__(self) -> None: ...
    def name(self, value: str) -> Self: ...
    def build(self) -> _ADK_LoggingPlugin: ...

class MultimodalToolResultsPlugin(BuilderBase):
    """A plugin that modifies function tool responses to support returning list of parts directly."""
    def __init__(self) -> None: ...
    def name(self, value: str) -> Self: ...
    def build(self) -> _ADK_MultimodalToolResultsPlugin: ...

class ReflectAndRetryToolPlugin(BuilderBase):
    """Provides self-healing, concurrent-safe error recovery for tool failures."""
    def __init__(self) -> None: ...
    def name(self, value: str) -> Self: ...
    def max_retries(self, value: int) -> Self: ...
    def throw_exception_if_retry_exceeded(self, value: bool) -> Self: ...
    def tracking_scope(self, value: TrackingScope) -> Self: ...
    def build(self) -> _ADK_ReflectAndRetryToolPlugin: ...

class SaveFilesAsArtifactsPlugin(BuilderBase):
    """A plugin that saves files embedded in user messages as artifacts."""
    def __init__(self) -> None: ...
    def name(self, value: str) -> Self: ...
    def build(self) -> _ADK_SaveFilesAsArtifactsPlugin: ...

class AgentSimulatorPlugin(BuilderBase):
    """ADK Plugin for AgentSimulator."""
    def __init__(self, simulator_engine: str) -> None: ...
    def build(self) -> _ADK_AgentSimulatorPlugin: ...
