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

from __future__ import annotations
from openrouter.types import BaseModel
from typing import List, Literal, Optional
from typing_extensions import NotRequired, TypedDict


AutoRouterPluginID = Literal["auto-router",]


class AutoRouterPluginTypedDict(TypedDict):
    id: AutoRouterPluginID
    allowed_models: NotRequired[List[str]]
    r"""List of model patterns to filter which models the auto-router can route between. Supports wildcards (e.g., \"anthropic/*\" matches all Anthropic models). When not specified, uses the default supported models list."""
    cost_quality_tradeoff: NotRequired[int]
    r"""Controls cost vs. quality routing tradeoff (0–10). 0 = pure quality (best model regardless of cost), 10 = maximize for cost (cheapest model wins). Intermediate values blend quality and cost signals continuously. Defaults to 7."""
    enabled: NotRequired[bool]
    r"""Set to false to disable the auto-router plugin for this request. Defaults to true."""


class AutoRouterPlugin(BaseModel):
    id: AutoRouterPluginID

    allowed_models: Optional[List[str]] = None
    r"""List of model patterns to filter which models the auto-router can route between. Supports wildcards (e.g., \"anthropic/*\" matches all Anthropic models). When not specified, uses the default supported models list."""

    cost_quality_tradeoff: Optional[int] = None
    r"""Controls cost vs. quality routing tradeoff (0–10). 0 = pure quality (best model regardless of cost), 10 = maximize for cost (cheapest model wins). Intermediate values blend quality and cost signals continuously. Defaults to 7."""

    enabled: Optional[bool] = None
    r"""Set to false to disable the auto-router plugin for this request. Defaults to true."""
