# This file was auto-generated by Fern from our API Definition.

from __future__ import annotations

import typing

import typing_extensions
from ..types.anthropic_model import AnthropicModel
from ..types.aws_bedrock_think_provider_model import AwsBedrockThinkProviderModel
from ..types.google_model import GoogleModel
from ..types.google_version import GoogleVersion
from ..types.groq_reasoning_mode import GroqReasoningMode
from ..types.open_ai_think_provider_model import OpenAiThinkProviderModel
from ..types.open_ai_think_provider_reasoning_mode import OpenAiThinkProviderReasoningMode
from .aws_bedrock_think_provider_credentials import AwsBedrockThinkProviderCredentialsParams


class ThinkSettingsV1Provider_OpenAiParams(typing_extensions.TypedDict):
    type: typing.Literal["open_ai"]
    version: typing_extensions.NotRequired[typing.Literal["v1"]]
    model: OpenAiThinkProviderModel
    temperature: typing_extensions.NotRequired[float]
    reasoning_mode: typing_extensions.NotRequired[OpenAiThinkProviderReasoningMode]


class ThinkSettingsV1Provider_AwsBedrockParams(typing_extensions.TypedDict):
    type: typing.Literal["aws_bedrock"]
    model: AwsBedrockThinkProviderModel
    temperature: typing_extensions.NotRequired[float]
    credentials: typing_extensions.NotRequired[AwsBedrockThinkProviderCredentialsParams]


class ThinkSettingsV1Provider_AnthropicParams(typing_extensions.TypedDict):
    type: typing.Literal["anthropic"]
    version: typing_extensions.NotRequired[typing.Literal["v1"]]
    model: AnthropicModel
    temperature: typing_extensions.NotRequired[float]


class ThinkSettingsV1Provider_GoogleParams(typing_extensions.TypedDict):
    type: typing.Literal["google"]
    version: typing_extensions.NotRequired[GoogleVersion]
    model: GoogleModel
    temperature: typing_extensions.NotRequired[float]


class ThinkSettingsV1Provider_GroqParams(typing_extensions.TypedDict):
    type: typing.Literal["groq"]
    version: typing_extensions.NotRequired[typing.Literal["v1"]]
    model: typing.Literal["openai/gpt-oss-20b"]
    temperature: typing_extensions.NotRequired[float]
    reasoning_mode: typing_extensions.NotRequired[GroqReasoningMode]


ThinkSettingsV1ProviderParams = typing.Union[
    ThinkSettingsV1Provider_OpenAiParams,
    ThinkSettingsV1Provider_AwsBedrockParams,
    ThinkSettingsV1Provider_AnthropicParams,
    ThinkSettingsV1Provider_GoogleParams,
    ThinkSettingsV1Provider_GroqParams,
]
