use bevy_reflect::{ReflectDeserialize, ReflectSerialize, prelude::ReflectDefault};
use rig_core::{
effect::{EffectId, EffectKind, HandlerDescriptor, HandlerKey, Outcome},
error::ErrorReport,
streaming::Transcript,
tool::ToolContext,
};
crate::reflect::opaque_reflect! {
struct HandlerKeyReflect(HandlerKey): PartialEq;
enum EffectKindReflect(EffectKind):;
struct EffectIdReflect(EffectId): PartialEq;
struct HandlerDescriptorReflect(HandlerDescriptor): PartialEq;
struct ToolContextReflect(ToolContext): Default, PartialEq;
enum OutcomeReflect(Result<Outcome, ErrorReport>):;
enum StreamedOutcomeReflect(Option<Result<Outcome, ErrorReport>>): Default;
struct StreamEventsReflect(Transcript): Default, PartialEq;
struct StreamErrorsReflect(Vec<(usize, ErrorReport)>): Default, PartialEq;
}