# typed: strict
# ----------------------------------------------------------------------------
#
#  Welcome to Baml! To use this generated code, please run the following:
#
#  $ gem 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.
# gem install baml
require "sorbet-runtime"
require "baml"

module BamlClient

  module Types

  class Check < T::Struct
      extend T::Sig

      const :name, String
      const :expr, String
      const :status, String
  end

  class Checked < T::Struct
      extend T::Sig
      extend T::Generic
      Value = type_member
      const :value, Value
      const :checks, T::Hash[Symbol, Check]
  end
  # #########################################################################
  # Generated enums (0)
  # #########################################################################

  # #########################################################################
  # Generated classes (1)
  # #########################################################################


  class UseMyUnion < T::Struct
      include Baml::Sorbet::Struct
      const :u, T.nilable(T.any(Recursive1, Integer, String))
  end

  # #########################################################################
  # Generated type aliases (5)
  # #########################################################################


  JSON = T.type_alias{ T.nilable(T.any(String, Integer, Float, T::Hash[String, T.anything], T::Array[T.anything])) }


  MyUnion = T.type_alias{ T.nilable(T.any(Recursive1, Integer, String)) }


  Nonrecursive1 = T.type_alias{ T.nilable(Integer) }


  Nonrecursive2 = T.type_alias{ T.nilable(String) }


  Recursive1 = T.type_alias{ T.any(Integer, T::Array[T.anything]) }


  end


end
