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

from __future__ import annotations
from .anthropiccachecontrolttl import AnthropicCacheControlTTL
from openrouter.types import BaseModel
from openrouter.utils import validate_open_enum
from pydantic.functional_validators import PlainValidator
from typing import Literal, Optional
from typing_extensions import Annotated, NotRequired, TypedDict


AnthropicCacheControlDirectiveType = Literal["ephemeral",]


class AnthropicCacheControlDirectiveTypedDict(TypedDict):
    r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models."""

    type: AnthropicCacheControlDirectiveType
    ttl: NotRequired[AnthropicCacheControlTTL]


class AnthropicCacheControlDirective(BaseModel):
    r"""Enable automatic prompt caching. When set at the top level, the system automatically applies cache breakpoints to the last cacheable block in the request. Currently supported for Anthropic Claude models."""

    type: AnthropicCacheControlDirectiveType

    ttl: Annotated[
        Optional[AnthropicCacheControlTTL], PlainValidator(validate_open_enum(False))
    ] = None
