# ----------------------------------------------------------------------------
#
#  Welcome to Baml! To use this generated code, please run the following:
#
#  $ pip install baml
#
# ----------------------------------------------------------------------------

# This file was generated by BAML: please do not edit it. Instead, edit the
# BAML files and re-generate this code using: baml-cli generate
# baml-cli is available with the baml package.

import typing
import typing_extensions
from pydantic import BaseModel, ConfigDict

import baml_py

from . import types

StreamStateValueT = typing.TypeVar('StreamStateValueT')
class StreamState(BaseModel, typing.Generic[StreamStateValueT]):
    value: StreamStateValueT
    state: typing_extensions.Literal["Pending", "Incomplete", "Complete"]
# #########################################################################
# Generated classes (6)
# #########################################################################

class Feedback(BaseModel):
    response: typing.Optional[str] = None
    reason: typing.Optional[str] = None

class History(BaseModel):
    page_id: typing.Optional[str] = None
    layout: typing.Optional[str] = None
    description: typing.Optional[str] = None
    prev_action: typing.Optional[str] = None

class Output(BaseModel):
    model_config = ConfigDict(extra='allow')

class PageAbstract(BaseModel):
    name: typing.Optional[str] = None
    description: typing.Optional[str] = None
    layout: typing.Optional[str] = None

class Step(BaseModel):
    condition: typing.Optional[str] = None
    action: typing.Optional[str] = None
    expectation: typing.Optional[str] = None

class TestCase(BaseModel):
    name: typing.Optional[str] = None
    steps: typing.List["Step"]

# #########################################################################
# Generated type aliases (2)
# #########################################################################


ExtractedData: typing_extensions.TypeAlias = typing.Optional[typing.Union["Output", str, int, float, bool, typing.List["Output"], typing.List[typing.Union[str, int, float, bool]]]]


Primitives: typing_extensions.TypeAlias = typing.Optional[typing.Union[str, int, float, bool]]
