use bevy_reflect::{ReflectDeserialize, ReflectSerialize, prelude::ReflectDefault};
use rig_core::completion::{
Usage,
message::{AssistantContent, CallId, Message, ToolChoice, ToolName},
};
use serde::{Deserialize, Serialize};
pub use crate::bus::reflect::ToolContextReflect;
crate::reflect::opaque_reflect! {
enum JsonReflect(serde_json::Value): Default, PartialEq;
enum OptionalJsonReflect(Option<serde_json::Value>): Default, PartialEq;
enum ToolChoiceReflect(Option<ToolChoice>): Default, PartialEq;
struct ToolCallIdReflect(CallId): PartialEq;
struct ToolNameReflect(ToolName): PartialEq;
struct AssistantContentsReflect(Vec<AssistantContent>): Default, PartialEq;
enum MessageReflect(Message): PartialEq;
}
#[bevy_reflect::reflect_remote(Usage)]
#[derive(Debug, Clone, Copy, Default, PartialEq, Serialize, Deserialize)]
#[reflect(opaque, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct UsageReflect {}