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

from __future__ import annotations

import typing

import typing_extensions
from ..types.anthropic_think_provider_model import AnthropicThinkProviderModel
from ..types.aws_bedrock_think_provider_model import AwsBedrockThinkProviderModel
from ..types.google_think_provider_model import GoogleThinkProviderModel
from ..types.open_ai_think_provider_model import OpenAiThinkProviderModel
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]


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: AnthropicThinkProviderModel
    temperature: typing_extensions.NotRequired[float]


class ThinkSettingsV1Provider_GoogleParams(typing_extensions.TypedDict):
    type: typing.Literal["google"]
    version: typing_extensions.NotRequired[typing.Literal["v1beta"]]
    model: GoogleThinkProviderModel
    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]


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