using BotSharp.Abstraction.Realtime.Models; namespace BotSharp.Abstraction.MLTasks; public interface IRealTimeCompletion { string Provider { get; } string Model { get; } void SetModelName(string model); Task Connect( RealtimeHubConnection conn, Func onModelReady, Func onModelAudioDeltaReceived, Func onModelAudioResponseDone, Func onModelAudioTranscriptDone, Func, Task> onModelResponseDone, Func onConversationItemCreated, Func onInputAudioTranscriptionDone, Func onInterruptionDetected); Task Reconnect(RealtimeHubConnection conn); Task AppenAudioBuffer(string message); Task AppenAudioBuffer(ArraySegment data, int length); Task SendEventToModel(object message); Task Disconnect(); Task UpdateSession(RealtimeHubConnection conn, bool isInit = false); Task InsertConversationItem(RoleDialogModel message); Task RemoveConversationItem(string itemId); Task TriggerModelInference(string? instructions = null); Task CancelModelResponse(); }