using System;
using System.Collections.Generic;
using Content.Client.Chat.UI;
using Content.Shared.Chat;
using Robust.Shared.GameObjects;
using Robust.Shared.Timing;
namespace Content.Client.Chat.Managers
{
public interface IChatManager
{
ChatChannel ChannelFilters { get; }
ChatSelectChannel SelectableChannels { get; }
ChatChannel FilterableChannels { get; }
void Initialize();
void FrameUpdate(FrameEventArgs delta);
void SetChatBox(ChatBox chatBox);
void RemoveSpeechBubble(EntityUid entityUid, SpeechBubble bubble);
///
/// Current chat box control. This can be modified, so do not depend on saving a reference to this.
///
ChatBox? CurrentChatBox { get; }
IReadOnlyDictionary UnreadMessages { get; }
IReadOnlyList History { get; }
int MaxMessageLength { get; }
bool IsGhost { get; }
///
/// Invoked when CurrentChatBox is resized (including after setting initial default size)
///
event Action? OnChatBoxResized;
event Action? ChatPermissionsUpdated;
event Action? UnreadMessageCountsUpdated;
event Action? MessageAdded;
event Action? FiltersUpdated;
void ClearUnfilteredUnreads();
void ChatBoxOnResized(ChatResizedEventArgs chatResizedEventArgs);
void OnChatBoxTextSubmitted(ChatBox chatBox, ReadOnlyMemory text, ChatSelectChannel channel);
void OnFilterButtonToggled(ChatChannel channel, bool enabled);
}
public struct ChatPermissionsUpdatedEventArgs
{
public ChatSelectChannel OldSelectableChannels;
}
}