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

from __future__ import annotations
from enum import Enum
from honeyhive.types import BaseModel
from typing import Optional, TypedDict
from typing_extensions import NotRequired


class Operator(str, Enum):
    r"""The type of filter you are performing - \"is\", \"is not\", \"contains\", \"not contains\", \"greater than\" """

    IS = "is"
    IS_NOT = "is not"
    CONTAINS = "contains"
    NOT_CONTAINS = "not contains"
    GREATER_THAN = "greater than"


class Type(str, Enum):
    r"""The data type you are using - \"string\", \"number\", \"boolean\", \"id\" (for object ids)"""

    STRING = "string"
    NUMBER = "number"
    BOOLEAN = "boolean"
    ID = "id"


class EventFilterTypedDict(TypedDict):
    field: NotRequired[str]
    r"""The field name that you are filtering by like `metadata.cost`, `inputs.chat_history.0.content`"""
    value: NotRequired[str]
    r"""The value that you are filtering the field for"""
    operator: NotRequired[Operator]
    r"""The type of filter you are performing - \"is\", \"is not\", \"contains\", \"not contains\", \"greater than\" """
    type: NotRequired[Type]
    r"""The data type you are using - \"string\", \"number\", \"boolean\", \"id\" (for object ids)"""


class EventFilter(BaseModel):
    field: Optional[str] = None
    r"""The field name that you are filtering by like `metadata.cost`, `inputs.chat_history.0.content`"""

    value: Optional[str] = None
    r"""The value that you are filtering the field for"""

    operator: Optional[Operator] = None
    r"""The type of filter you are performing - \"is\", \"is not\", \"contains\", \"not contains\", \"greater than\" """

    type: Optional[Type] = None
    r"""The data type you are using - \"string\", \"number\", \"boolean\", \"id\" (for object ids)"""
