use async_trait::async_trait;
use crate::event_emitter::EventEmitter;
use crate::execution_context::ExecutionContext;
use crate::tool_types::{ToolCall, ToolDefinition};
use crate::typed_id::SessionId;
pub struct FinalizedToolCallsContext<'a> {
pub event_emitter: &'a dyn EventEmitter,
pub session_id: SessionId,
pub execution_context: &'a ExecutionContext,
pub tool_definitions: &'a [ToolDefinition],
pub iteration: u32,
}
#[async_trait]
pub trait FinalizedToolCallsHook: Send + Sync {
async fn apply(&self, context: &FinalizedToolCallsContext<'_>, calls: &mut [ToolCall]);
}